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ção

Quantidade 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 encontradas

Quantidade 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
}
Veja que o método deverá funcionar para qualquer tamanho de string. Teste também com strings que contenham somente letras maiúsculas ou somente letras minúsculas.

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
Resposta/Solução:

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 HTML5

Quantidade 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 normativa

Quantidade 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:

&#961;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;

&#961;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;

&#945; é 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 datetime

Quantidade 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 String

Quantidade 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 C

Quantidade 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);
buffer é um ponteiro para o vetor que receberá o conteúdo lido. num é o número de caracteres que será lido (veja que o conteúdo será lido até alcançar este número, ou um caractere de quebra de linha for encontrado, ou o marcador de fim de arquivo EOF for encontrado, o que vier primeiro). file é um ponteiro para o arquivo que foi aberto.

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 Ruby

Quantidade 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']


Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 37 usuários muito felizes estudando em nosso site.