JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como somar os elementos de um array em JavaScript usando a função reduce()

Quantidade de visualizações: 567 vezes
Nesta dica mostrarei como podemos usar a função reduce() do JavaScript para somar todos os elementos de um vetor de inteiros. Lembre-se de que a função reduce() foi introduzida no ECMAScript5 (ES5), também chamado de JavaScript 2009.

Veja a página HTML completa para o exemplo:

<!doctype html>
<html>
<head>
  <title>Estudos JavaScript</title>
</head>
<body>

<script type="text/javascript">
  // vamos criar um vetor de inteiros
  var valores = new Array(7, 2, 1, 3, 5);
  document.write("Valores do array: " + valores 
    + "<br>");
	
  // agora vamos usar a função para somar
  // os elementos do vetor
  var res = valores.reduce((soma, valor) => soma 
    + valor, 0);
  document.write("A soma dos elementos é: " + res); 	
</script>
  
</body>
</html>

Ao executar este código JavaScript nós teremos o seguinte resultado:

Valores do array: 7,2,1,3,5
A soma dos elementos é: 18

Neste exemplo eu coloquei a função que será executada para cada elemento do array diretamente dentro do corpo da função reduce(). Podemos também colocar esta função do lado de fora. Veja:

<script type="text/javascript">
  // função que será chamada pela função reduce()
  function somar_elementos(soma, valor) {
    return soma + valor;
  }
  
  // vamos criar um vetor de inteiros
  var valores = new Array(7, 2, 1, 3, 5);
  document.write("Valores do array: " + valores 
    + "<br>");
	
  // agora vamos usar a função para somar
  // os elementos do vetor
  var res = valores.reduce(somar_elementos, 0);
  document.write("A soma dos elementos é: " + res); 	
</script>



C ::: Dicas & Truques ::: Strings e Caracteres

Como concatenar apenas parte de uma string à outra string usando a função strncat() da linguagem C

Quantidade de visualizações: 9961 vezes
Muitas vezes precisamos adicionar à uma string apenas alguns caracteres de outra, ou seja, não queremos concatenar as duas strings completamente; apenas parte da segunda. Para isso podemos usar a função strncat(). Veja o protótipo e explicação desta função:

char *strncat(char *str1, const char *str2, size_t n);


Aqui a quantidade n de caracteres da string str2 será anexada ao final da string str1. O caractere de fim de string (null character) da str1 é sobrescrito durante a operação e anexado novamente assim que os caracteres desejados da str2 sejam copiados. Veja um exemplo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
  char texto[] = "Gosto muito de ";
  char palavra[] = "C++";

  /*
  Na segunda sequencia de caracteres nós temos "C++", mas
  queremos anexar à primeira sequencia apenas "C". Veja
  como isso é feito
  */

  strncat(texto, palavra, 1);

  // exibe o resultado
  puts(texto);

  system("pause");
  return 0;
}

Ao executar este códigos nós teremos o seguinte resultado:

Gosto muito de C


Java ::: Dicas & Truques ::: Threads

Como usar uma thread Java para animar o título de uma janela JFrame do Java Swing

Quantidade de visualizações: 11747 vezes
Nesta dica mostro como podemos usar uma thread para substituir um timer em uma aplicação Swing. Ao executar este código você verá que o texto da barra de títulos da aplicação pisca continuamente enquanto o aplicativo estiver sendo executado.

Veja a listagem para o exemplo:

import java.awt.*;
import javax.swing.*;

public class Estudos extends JFrame{
  public Estudos() {
    super("Uso de threads em aplicações Swing");
    
    // vamos criar a thread que fará o título da janela
    // piscar continuamente
    // vamos criar duas threads
    MinhaThread t1 = new MinhaThread(this);
    t1.start();

    setSize(350, 250);
    setVisible(true);
  }
  
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

// classe que usaremos como thread
class MinhaThread extends Thread{
  private JFrame janela;
  private String titulo;  

  public MinhaThread(JFrame janela){
    this.janela = janela;
    this.titulo = janela.getTitle();
  }   

  public void run(){
    try{
      while(true){
        if(janela.getTitle().equals(""))
          janela.setTitle(titulo);
        else
          janela.setTitle("");

        Thread.sleep(300);
      }
    }
    catch(InterruptedException ex){
      // precisa fazer nada aqui
    }
  }
}

Um detalhe interessante é que, ao ser colocada para dormir, a thread usada no exemplo permite que as demais threads da aplicação continuem suas execuções normalmente. Isso permite que a janela seja movida, redimensionada, minimizada, etc. Lembre-se sempre de usar o método Thread.yield() caso a thread criada estiver executando alguma ação demorada. Isso evitará que a janela do programa pareça congelada.


VisuAlg ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de VisuAlg - Como verificar quantas vezes um valor é encontrado em um vetor - Como usar vetores e matrizes em VisuAlg

Quantidade de visualizações: 383 vezes
Pergunta/Tarefa:

Escreva um programa VisuAlg que declara, constrói e inicializa um vetor de 10 inteiros. Em seguida peça para que o usuário informe um valor a ser pesquisado. Faça uma varredura no vetor e informe quantas vezes o valor pesquisado é encontrado:

// declara um vetor de 10 inteiros
valores: vetor[1..10] de inteiro
Sua saída deverá ser parecida com:

Informe um valor: 4
O valor foi encontrado: 3 vezes

Informe um valor: 8
O valor foi encontrado: 1 vezes

Informe um valor: 3
O valor foi encontrado: 0 vezes
Resposta/Solução:

Veja a resolução comentada deste exercício usando VisuAlg:

algoritmo "Contar quantas vezes um elemento repete em um vetor"

var
  // variáveis usadas na resolução do problema
  valores: vetor[1..10] de inteiro
  pesquisa, repeticoes, i: inteiro

inicio
  // inicializa um vetor de 10 inteiros
  valores[1] <- 4
  valores[2] <- 21
  valores[3] <- 9
  valores[4] <- 8
  valores[5] <- 12
  valores[6] <- 21
  valores[7] <- 4
  valores[8] <- 4
  valores[9] <- 1
  valores[10] <- 10

  // vamos ler um valor inteiro
  escreva("Informe um valor: ")
  leia(pesquisa)

  // vamos verificar quantas vezes o valor informado está
  // contido no vetor
  repeticoes <- 0
  para i de 1 ate 10 faca
    se valores[i] = pesquisa entao
      // encontrou? vamos contar esta ocorrência
      repeticoes <- repeticoes + 1
    fimse
  fimpara

  // vamos mostrar o resultado
  escreva("O valor foi encontrado: ", repeticoes, " vezes")

fimalgoritmo



Python ::: Python para Engenharia ::: Engenharia Civil - Instalações de Águas Pluviais

Como calcular a área de contribuição de água da chuva de um telhado usando Python - Python para Engenharia Civil - Instalações de Águas Pluviais

Quantidade de visualizações: 242 vezes


De acordo com a NBR 10844 de 1989, que trata das instalações de águas pluviais, a área de contribuição corresponde à "Soma das áreas das superfícies que, interceptando chuva, conduzem as águas para determinado ponto da instalação".

As superfícies que interceptam a água da chuva podem ser, por exemplo, superfícies planas horizontais (como lajes), superfícies inclinadas (como os telhados da maioria das casas e edifícios e mostrado na figura acima) e superfícies planas verticais (como as platibandas).

No caso das superficies inclinadas, ou seja, os telhados comumente encontrados, a fórmula para o cálculo da área da contribuição da água da chuva é feito por meio da seguinte fórmula:

\[A = \left(a + \frac{h}{2}\right) \cdot b\]

Onde:

A é a área de contribuição de água da chuva do telhado considerado em m2;

a é a largura do telhado em metros;

b é o comprimento do telhado em metros;

h é a altura do telhado em metros, conforme mostrado na figura acima.

Veja agora o código Python que pede para o usuário informar a largura, a altura e o comprimento do telhado e mostra a sua área de contribuição de água da chuva:

# função principal do programa
def main():
  # vamos pedir para o usuário informar a largura do telhado
  largura = float(input("Informe a largura do telhado em metros: "))

  # vamos pedir para o usuário informar o comprimento do telhado
  comprimento = float(input("Informe o comprimento do telhado em metros: "))

  # vamos pedir para o usuário informar a altura do telhado
  altura = float(input("Informe a altura do telhado em metros: "))

  # vamos calcular a área de contribuição do telhado
  area = (largura + (altura / 2.0)) * comprimento

  # e mostramos os resultados
  print("\nA área de contribuição do telhado é: {0} m2".format(
    round(area, 5)))
  
if __name__ == "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

Informe a largura do telhado em metros: 5
Informe o comprimento do telhado em metros: 15
Informe a altura do telhado em metros: 1.5

A área de contribuição do telhado é: 86.25 m2


Java ::: Estruturas de Dados ::: Lista Ligada Simples

Estruturas de dados em Java - Introdução às listas ligadas em Java

Quantidade de visualizações: 16230 vezes
Então você se interessou pelo assunto de listas ligadas em Java? Recomendo que leia esta anotação com muita atenção. É o ponto de partida para o entendimento e implementação desta estrutura de dados tão importante.

Uma lista singularmente ou duplamente ligada (singly or doubly linked list) é uma lista dinâmica no sentido de que ela pode crescer ou diminuir de acordo com as necessidades do programa. As matrizes (arrays) comuns também têm seu papel assegurado no estudo das estruturas de dados. No entanto, uma de suas limitações é que seus elementos são dispostos lado a lado na memória. Isso torna a inserção de um novo elemento no meio do array uma tarefa dispendiosa, visto que os demais elementos precisam ser movidos para outras posições. Em uma lista dinâmica isso não acontece.

O conceito principal das listas ligadas é a capacidade de um nó (cada elemento da lista é chamado de nó) poder apontar para um outro nó com estrutura semelhante. Veja a estrutura típica de um nó em uma lista ligada:

// classe No
public class No{
  public int valor;
  public No proximo;
}
// fim da classe No

Note que esta classe contém dois campos: um campo do tipo int que guarda o valor do nó e um campo do tipo referência apontando para um objeto do mesmo tipo que o nó atual. Isso permite a circularidade das listas, ou seja, um nó apontando para um elemento de seu mesmo tipo.

Com este conhecimento já podemos criar o início de uma lista singularmente ligada, para isso só precisamos declarar uma variável do tipo No. Veja:

// declara o início da lista
No inicio;

Até agora temos uma lista ligada vazia. A criação do primeiro elemento da lista pode ser feito da seguinte forma:

public class Lista{
  // declara o início da lista
  static No inicio = null;

  public static void main(String args[]){
    // verifica se a lista está vazia
    if(inicio == null){
      // reserva memória para o novo nó
      inicio = new No();

      // a memória foi alocada com sucesso?
      if(inicio != null){
        inicio.valor = 150;
        // é o primeiro nó...seu campo proximo não deve 
        // apontar para lugar nenhum
        inicio.proximo = null;
      }
    }
 
    System.out.println(inicio.valor); 
    System.exit(0);
  }  
}

Aqui nós temos a criação do primeiro nó de uma lista singularmente ligada. Note como usamos a palavra-chave new para alocar memória para o nó atual. Veja também que o valor null é fornecido para o campo próximo do nó. Isso aconteceu porque temos apenas um nó. Em outras dicas desta seção abordaremos como inserir os demais nós e também listar todos os nós existentes na lista. Até lá.


C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico

Exercício Resolvido de C - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em C

Quantidade de visualizações: 1543 vezes
Pergunta/Tarefa:

Escreva um programa C para ler um número inteiro e imprimir seu sucessor e seu antecessor. O usuário poderá informar um valor positivo ou negativo.

Sua saída deverá ser parecida com:

Informe um número inteiro: 16
O número informado foi: 16
O antecessor é 15
O sucessor é: 17
Resposta/Solução:

Veja a resolução comentada deste exercício usando C:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  int numero, sucessor, antecessor;
	
  setlocale(LC_ALL,""); // para acentos do português 
  
  // vamos pedir para o usuário informar um número inteiro
  printf("Informe um número inteiro: ");
  scanf("%d", &numero);
    
  // vamos calcular o sucessor do número informado
  sucessor = numero + 1;
    
  // vamos calcular o antecessor do número informado
  antecessor = numero - 1;
    
  // e agora mostramos os resultados
  printf("O número informado foi: %d\n", numero);
  printf("O antecessor é %d\n", antecessor);
  printf("O sucessor é: %d", sucessor);
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}



Java ::: Pacote java.lang ::: StringBuffer

Curso completo de Java - Como usar a classe StringBuffer da linguagem Java

Quantidade de visualizações: 9321 vezes
A classe StringBuffer, no pacote java.lang, representa uma sequencia de caracteres mutável e segura em relação a threads. Um objeto StringBuffer é parecido com uma String, com a diferença que um StringBuffer pode ser modificado in-place, ou seja, modificações em seu conteúdo não geram uma nova cópia, como acontece com objetos da classe String.

Veja a posição desta classe na hierarquia de classes Java:

java.lang.Object
  java.lang.StringBuffer
A classe StringBuffer implementa as interfaces Serializable, Appendable e CharSequence.

A qualquer momento um StringBuffer contém uma sequencia de caracteres em particular, mas o tamanho e o conteúdo da sequencia pode ser alterado por meio de certas chamadas de métodos.

Objetos StringBuffer são seguros para acesso em um ambiente de múltiplas threads. Os métodos são sincronizados (synchronized) onde necessário de forma a garantir que todas as operações em uma instância em particular se comportem como se estivessem em ordem serial, ou seja, sejam consistentes com a ordem das chamadas de métodos feitas por cada uma das threads envolvidas.

As operações principais de um StringBuffer são os métodos append() e insert(), que são sobrecarregados para aceitar dados de qualquer tipo. Cada um destes métodos converte a informação fornecida em string e então acrescenta ou insere os caracteres desta string no string buffer. O método append() sempre adiciona os caracteres no final do buffer. O método insert(), por sua vez, adiciona os caracteres em um determinado ponto.

Por exemplo, se z se refere a um objeto string buffer cujo conteúdo é "start", então a chamada de método z.append("le") faria com que o string buffer tivesse agora ""startle"", enquanto z.insert(4, "le") alteraria o conteúdo do string buffer para "starlet".

Em geral, se sb se refere a uma instância de StringBuffer, então sb.append(x) tem o mesmo efeito que sb.insert(sb.length(), x).

Sempre que uma operação ocorre envolvendo uma sequencia de fonte (por exemplo, adicionar ou inserir a partir de uma outra sequencia), esta classe sincroniza somente o string buffer no qual a operação está sendo feita.

Todo string buffer possui uma capacidade (capacity). Enquanto o comprimento da sequencia de caracteres contida no string buffer não exceder a capacidade do mesmo, não há necessidade de alocar uma nova matriz interna de buffer. Se o buffer interno for sobrecarregado, ele será automaticamente expandido. A partir do Java 5, esta classe foi suplementada com uma classe equivalente criada para o uso em ambiente de thread única: StringBuilder. A classe StringBuilder deve ser usada em vez de StringBuffer, uma vez que ela suporta as mesmas operações mas é mais rápida por não executar sincronização.


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercício Resolvido de Python - Como percorrer todos os elementos de um vetor de inteiros e exibir a soma de seus valores

Quantidade de visualizações: 929 vezes
Pergunta/Tarefa:

Considere o seguinte vetor de inteiros:

// um vetor de inteiros contendo sete elementos
valores = [4, 5, 1, 8, 2, 2, 10]
Escreva um programa Python console ou GUI que usa um laço for para percorrer todos os elementos deste vetor e exibir a soma de seus valores. Seu programa deverá exibir uma saída com a mensagem:

A soma dos valores do vetor é: 32

Resposta/Solução:

# método principal
def main():
  # um vetor de inteiros contendo sete elementos
  valores = [4, 5, 1, 8, 2, 2, 10]
    
  # o primeiro passo é criar uma variável que vai receber a soma
  # dos valores dos elementos
  soma = 0

  # agora vamos usar uma laço for para percorrer todos os elementos
  # do vetor, obter o valor do elemento atual e adicionar ao valor atual
  # da variável soma
  for valor in valores:
    soma = soma + valor
  
  # vamos exibir a soma dos valores do vetor
  print("A soma dos valores do vetor é: {0}".format(soma))
    
if __name__== "__main__":
  main()



Delphi ::: Dicas & Truques ::: Data e Hora

Como adicionar ou subtrair dias de uma data em Delphi usando a função IncDay()

Quantidade de visualizações: 25271 vezes
Em algumas situações precisamos adicionar ou subtrair dias de uma determinada data. Em Delphi isso pode ser feito com o auxílio da função IncDay() da unit DateUtils. Este função aceita um TDateTime e a quantidade de dias que queremos acrescentar ao TDateTime fornecido como argumento. O retorno será um novo TDateTime com a quantidade de dias acrescida.

Veja um trecho de código no qual adicionamos 4 dias à data atual:

procedure TForm1.Button1Click(Sender: TObject);
var
  hoje: TDateTime;
begin
  // não esqueça de adicionar DateUtils ao seus uses

  // vamos obter a data de hoje
  hoje := Now;

  // vamos exibir a data de hoje
  ShowMessage('Hoje é: ' + DateToStr(hoje));

  // vamos adicionar 4 dias à data de hoje
  hoje := IncDay(hoje, 4);

  // vamos exibir o resultado
  ShowMessage('Daqui a 4 dias será: ' + DateToStr(hoje));
end;

É possível também usar a função IncDay() para substrair dias de uma data. Para isso só precisamos fornecer uma quantidade negativa de dias. Veja:

procedure TForm1.Button1Click(Sender: TObject);
var
  hoje: TDateTime;
begin
  // não esqueça de adicionar DateUtils ao seus uses

  // vamos obter a data de hoje
  hoje := Now;

  // vamos exibir a data de hoje
  ShowMessage('Hoje é: ' + DateToStr(hoje));

  // vamos subtrair 5 dias da data de hoje
  hoje := IncDay(hoje, -5);

  // vamos exibir o resultado
  ShowMessage('Há 5 dias era: ' + DateToStr(hoje));
end;

O valor padrão para o segundo argumento de IncDay() é 1.

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.

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á 48 usuários muito felizes estudando em nosso site.