PHP ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como remover e retornar o último elemento de um array em PHP usando a função array_pop()Quantidade de visualizações: 13904 vezes |
Nesta dica mostrarei como podemos usar a função array_pop() do PHP para excluir e retornar o último elemento de um array de strings. Note também o uso da função print_r() para exibir o conteúdo do array e da função count() para retornar a quantidade de elementos no array. Veja o código PHP completo para o exemplo: <?php // vamos criar um array de strings $pessoas[0] = "Carlos"; $pessoas[1] = "Juliana"; $pessoas[2] = "Igor"; $pessoas[3] = "Marcelo"; // vamos mostrar o conteúdo do array echo "Conteúdo do array: "; print_r($pessoas) . "\n"; // vamos o tamanho do array echo "O array possui " . count($pessoas) . " itens\n"; // extrai o último elemento $ultimo = array_pop($pessoas); echo "O elemento extraído foi: " . $ultimo . "\n"; // vamos nos certificar de que o último elemento // foi realmente removido echo "O array contém agora " . count($pessoas) . " elementos\n"; // vamos mostrar o conteúdo do array novamente echo "Conteúdo do array: "; print_r($pessoas); ?> Ao executar este código PHP nós teremos o seguinte resultado: Conteúdo do array: Array ( [0] => Carlos [1] => Juliana [2] => Igor [3] => Marcelo ) O array possui 4 itens O elemento extraído foi: Marcelo O array contém agora 3 elementos Conteúdo do array: Array ( [0] => Carlos [1] => Juliana [2] => Igor ) |
C ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar o laço while em C - Linguagem C para iniciantes em programaçãoQuantidade de visualizações: 33557 vezes |
O laço while é usado quando queremos que um bloco de instruções seja executado ENQUANTO uma condição for verdadeira (true). Veja um trecho de código exemplificando isso:int valor = 1; while(valor <= 10){ printf("%d ", valor); valor++; } Este trecho de código exibe os números de 1 à 10 na página. Veja agora o mesmo trecho de código, desta vez contando de 10 à 1: int valor = 10; while(valor >= 1){ printf("%d ", valor); valor--; } Lembre-se de que a condição testada em um laço while deve resultar em um valor boolean (true ou false). O trecho de código seguinte deixa isso mais claro: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int continuar = 1; // 1 é true em C int valor = 1; while(continuar){ printf("%d ", valor); valor++; if(valor > 10) continuar = 0; // 0 é false em C } printf("\n\n"); system("PAUSE"); return 0; } Para finalizar, lembre-se de que um laço while pode nunca ser executado, ou seja, se a condição testada na primeira iteração já resultar false, o fluxo de código é transferido para a primeira instrução após o laço. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Um método recursivo que recebe uma String e retorna a quantidade de letras maiúsculas encontradasQuantidade de visualizações: 5961 vezes |
Pergunta/Tarefa: Escreva um método recursivo que recebe uma palavra ou frase e retorna a quantidade de caracteres (letras) maiúsculos. Seu método deverá possuir a seguinte assinatura: public static int contarMaiusculas(String frase){ // sua implementação aqui } Sua saída deverá ser parecida com: Digite uma palavra ou frase: Arquivo de Códigos A palavra ou frase contém 2 letras maiúsculas Veja a resolução comentada deste exercício usando Java console: Observação importante: Este código criará uma cadeia de chamadas recursivas. Cada chamada ao método contarMaiusculas() receberá uma cópia menor da palavra ou frase fornecida. Quando a última chamada recursiva do método receber uma string vazia, a cadeia começa a retornar. Note que os valores acumulados nas várias chamadas ao método vão sendo acumulados na variável quantidade. package exercicio; import java.util.Scanner; public class Exercicio { public static void main(String[] args) { // cria um novo objeto da classe Scanner Scanner entrada = new Scanner(System.in); // solicita uma palavra ou frase ao usuário System.out.print("Digite uma palavra ou frase: "); // lê a palavra ou frase String frase = entrada.nextLine(); int quantMaiusculas = contarMaiusculas(frase); System.out.println("A palavra ou frase contém " + quantMaiusculas + " letras maiúsculas"); } // método recursivo que recebe uma palavra ou frase e retorna // a quantidade de letras maiúsculas public static int contarMaiusculas(String frase){ /* Este código criará uma cadeia de chamadas recursivas. Cada * chamada ao método contarMaiusculas() receberá uma cópia menor * da palavra ou frase fornecida. Quando a última chamada recursiva do * método receber uma string vazia, a cadeia começa a retornar. Note * que os valores acumulados nas várias chamadas ao método vão sendo * acumulados na variável quantidade */ int quantidade = 0; // o tamanho da string é maior que 0? if(frase.length() > 0){ if(Character.isUpperCase(frase.charAt(0))){ quantidade = 1 + contarMaiusculas(frase.substring(1)); } else{ quantidade = contarMaiusculas(frase.substring(1)); } } return quantidade; } } |
HTML5 ::: HTML5 + JavaScript ::: Canvas |
Programação gráfica para iniciantes - Como desenhar círculos com ou sem preenchimento usando o método arc() do objeto Canvas do HTML5Quantidade de visualizações: 6833 vezes |
Podemos usar o método arc() do objeto Canvas do HTML5 para desenhar círculos com ou sem prenchimento. Veja nos exemplos abaixo como isso pode ser feito. Primeiro um círculo sem preenchimento:<!doctype html> <html> <head> <title>O objeto Canvas do HTML5</title> </head> <body> <Canvas id="canvas1" width="500" height="350"></Canvas> <script type="text/javascript"> // obtemos uma referência ao elemento Canvas var canvas = document.getElementById("canvas1"); // obtemos o contexto de desenho var contexto = canvas.getContext("2d"); // vamos desenhar um círculo sem preenchimento com raio de 80 contexto.beginPath(); // início um novo caminho // o círculo começa no x = 100, y = 100, começa no ângulo 0 // e vai até o ângulo 360 (as medidas são em radianos, não em graus) contexto.arc(100, 100, 80, 0, 2 * Math.PI, false); contexto.lineWidth = 2; // largura da linha contexto.strokeStyle = '#990000'; // cor da linha contexto.stroke(); // realiza o desenho </script> </body> </html> Ao abrir esta página HTML nós teremos o seguinte resultado: ![]() E agora um círculo preenchido: <!doctype html> <html> <head> <title>O objeto Canvas do HTML5</title> </head> <body> <Canvas id="canvas1" width="500" height="350"></Canvas> <script type="text/javascript"> // obtemos uma referência ao elemento Canvas var canvas = document.getElementById("canvas1"); // obtemos o contexto de desenho var contexto = canvas.getContext("2d"); // vamos desenhar um círculo sem preenchimento com raio de 80 contexto.beginPath(); // início um novo caminho // o círculo começa no x = 100, y = 100, começa no ângulo 0 // e vai até o ângulo 360 (as medidas são em radianos, não em graus) contexto.arc(100, 100, 80, 0, 2 * Math.PI, false); // vamos preencher o círculo contexto.fillStyle = "#CCCCCC"; // cor do preenchimento contexto.fill(); // preenche de fato contexto.lineWidth = 2; // largura da linha contexto.strokeStyle = '#990000'; // cor da linha contexto.stroke(); // realiza o desenho </script> </body> </html> Ao abrir esta página HTML nós teremos o seguinte resultado: ![]() |
C++ ::: Dicas & Truques ::: Strings e Caracteres |
Como adicionar caracteres ao final de uma string C++ usando a função push_back()Quantidade de visualizações: 9168 vezes |
A função push_back() do C++ é útil quando precisamos adicionar caracteres individuais ao final de uma string. Veja um exemplo: #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]){ string str = "Gosto muito de PHP"; string temp; // vamos percorrer os caracteres da primeira string // e adicioná-los na segunda um de cada vez for(int i = 0; i < str.length(); i++){ temp.push_back(str[i]); } // exibe o resultado cout << temp << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: Gosto muito de PHP Note que usamos um laço for para percorrer individualmente todos os caracteres da primeira string e adicioná-los um de cada vez na segunda string. Veja uma variação deste código, no qual exibimos o conteúdo da primeira string invertido: #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]) { string str = "Gosto muito de PHP"; string temp; // vamos percorrer os caracteres da primeira string // e adicioná-los na segunda um de cada vez. // desta vez vamos obter o resultado invertido for(int i = str.length() - 1; i >= 0; i--){ temp.push_back(str[i]); } // exibe o resultado cout << "String original: " << str << endl; cout << "String invertida: " << temp << endl;; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este novo código C++ nós teremos o seguinte resultado: String original: Gosto muito de PHP String invertida: PHP ed otium otsoG |
Python ::: Python para Engenharia ::: Engenharia Civil - Concreto, Concreto Armado e Concretos Especiais |
Cálculo de estribos em vigas de concreto armado usando Python - Armadura mínima transversal normativaQuantidade de visualizações: 188 vezes |
A ABNT NBR 6118 (Projeto de estruturas de concreto armado) define uma taxa de armadura mínima para os estribos das vigas de concreto armado, e, a partir dessa taxa mínima nós podemos facilmente calcular a área de aço mínima a ser usada. A fórmula para o cálculo da taxa mínima de armadura tranversal pode ser definida como: \[\rho_\text{sw} = 0,2 \cdot \frac{f_\text{ck,m}}{f_\text{ywk}} \] Onde: ρsw é um número adimensional representando a taxa de armadura mínima transversal de acordo com recomendações da norma NBR 6118; fctk,m é a resistência à tração média do concreto em Mpa; fymk é a resistência à tração do aço em Mpa. Em geral, esse valor é fixado em 500 (CA 50), mesmo que o aço usado seja CA 60 ou superior; Após calculada a taxa de armadura transversal mínima, podemos calcular a área de aço mínima transversal por meio da seguinte fórmula: \[A_\text{sw,min} = \rho_\text{sw} \cdot b_w \cdot S \cdot sen(\alpha) \] Onde: Asw,min é a área de aço mínima a ser usada, em cm2/m; ρsw é um número adimensional representando a taxa de armadura mínima transversal de acordo com recomendações da norma NBR 6118; bw é a largura da viga em centímetros; S é o espaçamento a ser considerado. Informamos o valor de 100 para considerar um espaçamento de 1 metro; α é a inclinação dos estribos, em geral 90º. Veja agora o código Python : # vamos importar o módulo Math import math # função principal do programa def main(): # vamos pedir para o usuário informar o FCK do concreto fck = float(input("Informe o FCK do concreto em Mpa: ")) # agora vamos calcular a resistência à tração média # do concreto fctk_m = 0.3 * math.pow(fck, 2.0 / 3.0) # vamos pedir para o usuário informar a largura da viga em cm largura = float(input("Informe a largura da viga em cm: ")) # vamos calcular a taxa de armadura transversal mínima fywk = 500 # vamos considerar aço CA 50 psw = 0.2 * (fctk_m / fywk) # agora vamos calcular a área mínima de aço para a armadura # tranversal, ou seja, os estribos S = 100 # considerando 1 metro de viga inclinacao = 90 # inclinação em graus dos estribos aws_min = psw * largura * S * math.sin(math.radians(inclinacao)) # e mostramos os resultados print("\n-------RESULTADOS--------------------------------------") print("A resistência à tração média do concreto é: {0} Mpa". format(round(fctk_m, 5))) print("A taxa de armadura transversal mínima é: {0}".format( round(psw, 5))) print("A área mínima de aço é: {0} cm2/m".format(round(aws_min, 5))) if __name__ == "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe o FCK do concreto em Mpa: 25 Informe a largura da viga em cm: 19 -------RESULTADOS-------------------------------------- A resistência à tração média do concreto é: 2.56496 Mpa A taxa de armadura transversal mínima é: 0.00103 A área mínima de aço é: 1.94937 cm2/m |
Python ::: Dicas & Truques ::: Data e Hora |
Como adicionar dias à uma data em Python usando a função timedelta() da classe datetimeQuantidade de visualizações: 9056 vezes |
Nesta dica mostrarei como é possível usar o método timedelta() da classe datetime do Python para adicionar um determinado número de dias a uma data. O truque aqui é fornecer apenas o dia para o método timedelta(), obter o resultado e somá-lo com a data que já temos. Veja o código completo para o exemplo: import datetime # função principal do programa def main(): # dias a serem adicionados quant_dias = 2 # Obtém a data de hoje hoje = datetime.date.today() print("Hoje é:", hoje) # Adiciona dias à data dias = datetime.timedelta(days=quant_dias) hoje = hoje + dias # Exibe o resultado print("Daqui à", quant_dias, "dias será", hoje) if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: Hoje é: 2021-03-11 Daqui à 2 dias será 2021-03-13 |
Java ::: Pacote java.lang ::: String |
Como comparar strings em Java usando os métodos compareTo() e compareToIgnoreCase() da classe StringQuantidade de visualizações: 8935 vezes |
Em algumas situações precisamos efetuar comparação léxica de strings, ou seja, verificar se uma palavra ou frase é "igual, ""maior" ou "menor" que outra. Isso pode ser feito por meio do uso dos métodos compareTo() e compareToIgnoreCase() da classe String (definidos originalmente na interface Comparable<String>). Veja a assinatura do método compareTo(): public int compareTo(String anotherString) O retorno do método é 0 se a duas strings são iguais. O retorno será menor que 0 se a string na qual o método está sendo chamado for menor que a string passada como argumento. O retorno será maior que 0 se a string na qual o método está sendo chamado for maior que a string passada como argumento. Veja um exemplo de comparação léxica de duas strings: public class Main { public static void main(String[] args) { // vamos declarar duas strings String nome1 = "Márcio"; String nome2 = "Márcia"; // vamos comparar as duas strings lexicamente if(nome1.compareTo(nome2) == 0){ System.out.println("As strings são iguais"); } else if(nome1.compareTo(nome2) > 0){ System.out.println("A primeira string é maior que a segunda"); } else{ System.out.println("A primeira string é menor que a segunda"); } } } Ao executarmos este código teremos o seguinte resultado: A primeira string é maior que a segunda A funcionalidade fornecida pelo método compareToIgnoreCase() é semelhante à aquela do método compareTo(). A diferenção é que, quando usamos compareToIgnoreCase(), o método não diferencia letras maiúsculas de letras minúsculas. A comparação efetuada pelos métodos compareTo() e compareToIgnoreCase() é baseada no valor Unicode de cada caractere na string. A sequencia de caracteres representada pelo objeto String é comparada lexicamente com a sequencia de caracteres representada pela string fornecida como argumento. |
C ::: Dicas & Truques ::: Arquivos e Diretórios |
Como ler o conteúdo de um arquivo uma linha de cada vez usando a função fgets() da linguagem CQuantidade de visualizações: 28965 vezes |
A função fgets(), disponível no header cstdio ou stdio.h, é usada para ler caracteres de um arquivo e armazená-los em um vetor de caracteres. Esta função recebe três argumentos. Veja:char *fgets(char *buffer, int num, FILE *file); No exemplo abaixo usamos um laço while() para ler o conteúdo até que o final de arquivo EOF seja encontrado. Desta forma, como sabemos que cada linha no arquivo termina com um marcador de fim de linha, fica fácil ler cada linha. É claro que se a linha sendo lida for maior que o tamanho do buffer, o efeito não será conseguido. Observe ainda que cada linha lida contém o caractere de fim de linha anexado a ela: #include <stdio.h> #include <stdlib.h> const int TAM_BUFFER = 255; // quantidade de caracteres // a serem lidos no buffer de cada vez int main(int argc, char *argv[]) { FILE *arquivo = fopen("c:\\testes.txt", "r"); char buffer[TAM_BUFFER]; // testa se o arquivo foi aberto com sucesso if(arquivo != NULL){ // vamos usar um laço para ler o conteúdo do arquivo // e armazenar no buffer while(fgets(buffer, TAM_BUFFER, arquivo)){ printf("%s\n", buffer); } fclose(arquivo); // libera o ponteiro para o arquivo } else{ printf("Nao foi possivel abrir o arquivo."); } printf("\n\n"); system("PAUSE"); return 0; } |
Ruby ::: Dicas & Truques ::: Hashes (Arrays Associativas) |
Como criar um hash em Ruby - Criação e uso de arrays associativos na linguagem RubyQuantidade de visualizações: 9323 vezes |
Os hashes (também chamados de arrays associativas, mapas ou dicionários) são parecidos com arrays no sentido em que são coleções indexadas de referências a objetos. Contudo, enquanto podemos indexar arrays usando inteiros, hashes podem ser indexados usando-se qualquer tipo de dados: strings, expressões regulares, inteiros, e assim por diante. Quando guardamos um valor em um hash, estamos na verdade guardando dois objetos: o índice (geralmente chamado de chave) e o valor. Os valores em um hash Ruby podem ser de qualquer tipo. Hashes em Ruby podem ser criados de duas formas: usando a notação literal ou criando-se um objeto da classe Hash. Veja como criamos um hash usando notação literal: # cria um hash de estados e capitais capitais = {'Goiás' => 'Goiânia', 'Mato Grosso' => 'Cuiabá', 'Paraná' => 'Curitiba'} # exibe a capital correspondente ao estado de Mato Grosso puts capitais['Mato Grosso'] Veja como usamos os nomes dos estados como chaves e os nomes das capitais como valores para cada um dos elementos do hash. Veja agora como criar este mesmo hash por meio da criação de um objeto da classe Hash: # cria um hash de estados e capitais capitais = Hash.new capitais['Goiás'] = 'Goiânia' capitais['Mato Grosso'] = 'Cuiabá' capitais['Paraná'] = 'Curitiba' # exibe a capital correspondente ao estado de Mato Grosso puts capitais['Mato Grosso'] |
Nossas 20 dicas & truques de programação mais populares |
Java - Como retornar a quantidade de palavras em uma string Java usando um objeto da classe StringTokenizer Delphi - Como retornar o caractere a partir de um determinado código ASCII em Delphi usando a função Chr() Fórmulas da Física - Fórmula da Distância - Como calcular a distância dados a velocidade e o tempo decorrido |
Você também poderá gostar das dicas e truques de programação abaixo |
Java - Como converter Metros Quadrados em Quilômetros Quadrados em Java - Java para Física e Engenharia JavaScript - Como exibir apenas dois dígitos após o ponto decimal em JavaScript usando a função toFixed() do objeto Number |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |