Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.

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

Exercícios Resolvidos de Java - Como retornar o maior elemento em cada uma das colunas de uma matriz usando Java

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

Dada a seguinte matriz:

6   10   4
2    9   7
20   3   1
Escreva um programa Java que exibe o maior elemento em cada uma das colunas dessa matriz.

Sua saída deverá ser parecida com:

Maior elemento na coluna 0 é 20
Maior elemento na coluna 1 é 10
Maior elemento na coluna 2 é 7
Resposta/Solução:

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

package estudos;

public class Estudos {
  public static void main(String[] args) {
    // vamos declarar e constuir uma matriz de 3 linhas e três colunas
    int matriz[][] = {{6, 10, 4}, {2, 9, 7}, {20, 3, 1}};
    
    // vamos percorrer a matriz e exibir o maior elemento de cada coluna
    // começamos com cada coluna
    for(int i = 0; i < matriz[0].length; i++){
      // assumimos que o maior valor é o primeiro dessa coluna
      int maior = matriz[0][i];
      // percorremos todos os elementos desta linha
      for(int j = 0; j < matriz.length; j++){
        // o elemento atual é maior que o maior?
        if(matriz[j][i] > maior){
          // maior assume o valor atual
          maior = matriz[j][i];
        }
      }
      
      // exibimos o maior elemento desta coluna
      System.out.println("Maior elemento na coluna " + i + " é " + maior);
    }
  }
}



PHP ::: Dicas & Truques ::: Programação Orientada a Objetos

Programação Orientada a Objetos em PHP - Como usar o modificador de acesso public em suas classes PHP

Quantidade de visualizações: 7534 vezes
Quando estamos desenvolvendo a lógica de nossas classes PHP, é sempre uma boa idéia definirmos quais propriedades e métodos poderão ser acessados pelas demais classes e partes do código que formam o sistema. Este controle de acesso é feito por modificadores de acesso. Nesta dica veremos como usar o modificador public.

O modificador public serve para indicar que as propriedades ou métodos (funções) de uma classe podem ser acessados sem restrições por código fora da classe. Veja um exemplo:

<?
  class Pessoa{
    public $nome;
  }

  $pessoa = new Pessoa;
  $pessoa->nome = "Osmar J. Silva";
  echo $pessoa->nome;
?>

Aqui podemos acessar a propriedade $nome tanto para leitura como escrita sem nenhuma restrição. Tenha em mente que a ausência de um modificador de acesso antes de uma propriedade ou método automaticamente faz com que este acesso seja public.

Veja agora um trecho de código no qual definimos um método public (público) em uma classe e o acessamos a partir de um código externo:

<?
  class Matematica{
    public function somar($a, $b){
      return $a + $b;
    }
  }

  $mat = new Matematica;
  echo $mat->somar(5, 7);
?>


Lembre-se de que as sub-classes de uma classe que possui propriedades e métodos public herdam toda esta funcionalidade.


C ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções

Como usar protótipos de função em C

Quantidade de visualizações: 12306 vezes
Um protótipo de função é uma declaração que define o nome, tipos de parâmetros e tipos de retorno de uma função. Em geral o protótipo de uma função é exigido quando a definição da função não é feita antes do código que efetua uma chamada a ela. Veja um exemplo:

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

// uma função que retorna a soma de dois inteiros
// fornecidos como argumento
int somar(int a, int b){
  return (a + b);
}

int main(int argc, char *argv[]){
  // efetua uma chamada à função somar
  int res = somar(3, 5);

  // exibe o resultado
  printf("Soma: %d", res);

  puts("\n\n");
  system("PAUSE");
  return 0;
}

Este código compila e executa normalmente, uma vez que a função somar() foi definida antes da função main(), ou seja, antes da parte do programa que possui uma chamada a ela. Veja agora esta nova versão:

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

int main(int argc, char *argv[]){
  // efetua uma chamada à função somar
  int res = somar(3, 5);

  // exibe o resultado
  printf("Soma: %d", res);

  puts("\n\n");
  system("PAUSE");
  return 0;
}

// uma função que retorna a soma de dois inteiros
// fornecidos como argumento
int somar(int a, int b){
  return (a + b);
}

Aqui temos um problema: a função somar() é definida depois do código contendo uma chamada a ela. No Dev-C++ temos o seguinte erro de compilação:

`somar` undeclared (first use this function) 

A solução para este casos é a criação do protótipo da função. Para a função somar() isso pode ser feito da seguinte forma:

// protótipo da função somar()
int somar(int, int);

Note que não há a necessidade de especificar os nomes dos parâmetros da função, apenas seus tipos. Veja ainda que o protótipo da função é terminado com ponto-e-vírgula e sempre colocado após as instruções de #include. Veja o código completo para um exemplo usando protótipos de funções:

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

// protótipo da função somar()
int somar(int, int);

int main(int argc, char *argv[]){
  // efetua uma chamada à função somar
  int res = somar(3, 5);

  // exibe o resultado
  printf("Soma: %d", res);

  puts("\n\n");
  system("PAUSE");
  return 0;
}

// uma função que retorna a soma de dois inteiros
// fornecidos como argumento
int somar(int a, int b){
  return (a + b);
}



C# ::: Threads ::: Thread

Como usar a classe Thread para criar threads em seus programas C#

Quantidade de visualizações: 12098 vezes
A classe Thread permite criar e controlar uma thread, além de definir sua prioridade e obter seu status. Veja a posição desta classe na hierarquia de classes da plataforma .NET:

System.Object
  System.Runtime.ConstrainedExecution.CriticalFinalizerObject
    System.Threading.Thread


Um processo pode criar uma ou mais threads para executar parte do código do programa associado a tal processo. Usamos um delegate ThreadStart ou um delegate ParameterizedThreadStart para especificar o código do programa que será executado pela thread. O delegate ParameterizedThreadStart nos permite passar dados para as funções a serem executadas pela thread.

Durante seu ciclo de vida, uma thread está sempre em um ou mais dos estados definidos pela enumeração ThreadState. Um nível de prioridade de agendamento, como definido na enumeração ThreadPriority, pode ser requisitado para a thread, mas, este comportamento nem sempre é garantido pelo sistema operacional.

O método GetHashCode() fornece identificação para threads gerenciadas. Durante o ciclo de vida de uma thread, seu código de identificação não colidirá com os códigos das demais threads, independente do domínio da aplicação a partir do qual obtemos tal valor.

Veja um trecho de código no qual criamos uma thread e a agendamos para execução paralela com a thread principal da aplicação. Note como os valores dos dois laços são exibidos de forma compartilhada pelas duas threads, ou seja, um thread exibe alguns valores e pára, para permitir que a outra faça parte do seu trabalho:

class Program{
  static void Main(string[] args){
    // using using System.Threading;

    // vamos criar uma nova instância da clase Thread
    // e fornecer o método que será executado
    Thread thread = new Thread(contar);
     
    // vamos agendar a thread para futura execução
    thread.Start();

    // agora vamos contar na thread principal
    for (int i = 0; i <= 20; i++){
      Console.Write("#" + Thread.CurrentThread.GetHashCode() 
        + ": " + i + ", ");
    }

    Console.Write("\n\nPressione uma tecla para sair...");
    Console.ReadKey();
  }

  // método que será chamado pela thread
  static void contar(){
    for (int i = 0; i <= 20; i++){
      Console.Write("#" + Thread.CurrentThread.GetHashCode() 
        + ": " + i + ", ");
    }
  }
}

Aqui eu usei a sintáxe de criação de objetos da classe Thread que cria uma instância de ThreadStart nos bastidores, ou seja, forneci apenas o método a ser executado pela nova thread. Note também que uma chamada ao método Start() da thread não faz com que a thread seja executada imediatamente. Este método apenas torna a thread elegível para execução, ou seja, no estado "pronta" (Running). É o sistema operacional que determina quando a mesma será executada.


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

Como usar arrays (vetores e matrizes) em Delphi

Quantidade de visualizações: 73951 vezes
Em programação de computadores, um array, também conhecido como vector (para arrays uni-dimensionais) ou matriz (para arrays bi-dimensionais), é uma das mais simples estruturas de dados. Os arrays mantêm uma série de elementos de dados, geralmente do mesmo tamanho e tipo de dados. Elementos individuais são acessados por sua posição no array. A posição é dada por um índice, também chamado de subscrição. O índice geralmente utiliza uma seqüência de números inteiros, (ao contrário de um array associativo) mas o índex pode ter qualquer valor ordinal. Alguns arrays são multi-dimensionais, significando que eles são indexados por um número fixo de números inteiros, por exemplo, por um seqüência (ou sucessão) finita de quatro números inteiros. Geralmente, arrays uni- e bi-dimensionais são os mais comuns.

Os arrays podem ser considerados como as estruturas de dado mais simples que é possível imaginar. Têm a vantagem de que os seus elementos são acessíveis de forma rápida, mas têm uma notável limitação: são de tamanho fixo, mas podem ser incrementados ou diminuídos com determinados algoritmos, geralmente envolvendo a cópia de elementos de um array para outro e reinicializando o original com a nova dimensão. Os vetores podem ser implementados desta forma.

Em Delphi um array é declarado da seguinte forma:

var
  valores: array[1..10] of Integer;

Aqui nós temos um array chamado valores que contém 10 elementos do tipo Integer. Estes elementos podem ser acessados por índices que variarão de 1 a 10, ou seja, podemos acessar o 5º elemento da seguinte forma:

procedure TForm1.Button1Click(Sender: TObject);
var
  valores: array[1..10] of Integer;
begin
  valores[5] := 20;
end;

Este tipo de array que ora criamos é chamado de array estático, em contraposição aos arrays dinâmicos, os quais podem ter seus tamanhos redimensionados durante a execução do programa.

A forma mais prática de se trabalhar com arrays em Delphi é usando laços. Veja:

procedure TForm1.Button1Click(Sender: TObject);
var
  valores: array[1..5] of Integer;
  i, soma: Integer;
begin
  // vamos preencher o array com os valores de 1 a 5
  for i := 1 to 5 do
    begin
      valores[i] := i;
    end;

  // vamos percorrer o array novamente e obter a soma dos
  // valores de seus elementos
  soma := 0;
  for i := 1 to 5 do
    begin
      soma := soma + valores[i];
    end;

  // vamos exibir o resultado
  ShowMessage('A soma dos valores é: ' + IntToStr(soma));
end;

Aqui nós declaramos um array de 5 elementos do tipo Integer e inicializamos seus elementos com os valores de 1 a 5. Em seguida percorremos todo o array novamente para obter a soma dos valores dos elementos.

É possível também declarar e já inicializar um array. Veja:

procedure TForm1.Button1Click(Sender: TObject);
const
  valores: array[1..5] of Integer = (3, 2, 6, 12, 9);
var
  i, soma: Integer;
begin
  // vamos percorrer o array novamente e obter a soma dos
  // valores de seus elementos
  soma := 0;
  for i := 1 to 5 do
    begin
      soma := soma + valores[i];
    end;

  // vamos exibir o resultado
  ShowMessage('A soma dos valores é: ' + IntToStr(soma));
end;

Note que aqui eu declarei o array como uma constante. Isso aconteceu porque o Delphi não permite que inicializemos variáveis locais ([DCC Error] Unit1.pas(32): E2195 Cannot initialize local variables). Caso você realmente precise do array como variável e não constante, e deseje inicializá-lo juntamente com a declaração, mova-o para a seção interface do formulário ou classe.

Para finalizar, veja que é possível criar arrays de todos os tipos em Delphi. Veja no trecho de código abaixo como usamos um array de Char para guardar uma palavra e exibí-la normal e depois invertida:

procedure TForm1.Button1Click(Sender: TObject);
const
  letras: array[1..5] of Char = ('O', 's', 'm', 'a', 'r');
var
  i: Integer;
  resultado: String;
begin
  resultado := '';

  // vamos exibir a palavra na forma normal
  for i := 1 to 5 do
    resultado := resultado + letras[i];

  // exibe o resultado
  ShowMessage(resultado);

  // vamos exibir a palavra invertida
  resultado := '';
  for i := 5 downto 1 do
    resultado := resultado + letras[i];

  // exibe o resultado
  ShowMessage(resultado);
end;

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


C ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções

Exercício Resolvido de C - Escreva um programa que solicite dois números do tipo inteiro distintos ao usuário e que apresente na tela o maior deles

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

Escreva um programa que solicite dois números do tipo inteiro distintos ao usuário e que apresente na tela o maior deles. Esse programa deve possuir uma função para verificar qual é o maior número.

Atenção: seu código deverá assegurar que os dois números informados pelo usuário sejam diferentes. Exiba uma mensagem na tela caso isso acontecer.

Sua saída deverá ser parecida com:

Informe o primeiro número inteiro: 6
Informe o segundo número inteiro: 3
O maior número é: 6
Resposta/Solução:

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

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

// protótipo da função que receberá dois números inteiros
// e retornará o maior deles
int maior_numero(int num1, int num2);

// função principal do programa
int main(int argc, char *argv[]){
  setlocale(LC_ALL,""); // para acentos do português 
  
  // variáveis usadas na resolução do problema
  int num1, num2, maior;
  
  // vamos pedir para o usuário informar os dois números
  printf("Informe o primeiro número inteiro: ");
  scanf("%d", &num1);
  printf("Informe o segundo número inteiro: ");
  scanf("%d", &num2);
  
  // os números são iguais?
  if(num1 == num2){
    printf("Erro. Os dois números são iguais.");
  }
  else{
    // vamos chamar a função para obter o número maior
    maior = maior_numero(num1, num2);
    printf("O maior número é: %d", maior);	
  }
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}

// função que receberá dois números inteiros e retornará
// o maior deles
int maior_numero(int num1, int num2){
  // o primeiro número é maior que o segundo?
  if(num1 > num2){
    return num1;
  }
  else{
    return num2;
  }
}



Java ::: Classes e Componentes ::: JComponent

Java Swing - Como usar a classe JComponent em suas aplicações Java Swing

Quantidade de visualizações: 12312 vezes
A classe JComponent serve como classe base abstrata a partir da qual todos os componentes Swing herdam suas funcionalidades. Esta classe herda da Classe Container, que por sua vez herda de Component, que herda de Object.

Várias classes do Java Swing herdam de JComponent, direta ou indiretamente. Por exemplo, a classe JButton herda de javax.swing.AbstractButton, que, por sua vez, herda de javax.swing.JComponent.

Entender o papel da classe JComponent é muito importante, pois nos permite o uso de polimorfismo e também de vários design patterns. Sendo assim, analise o seguinte código Java Swing:

package arquivodecodigos;

import java.awt.*;
import javax.swing.*;
 
public class Estudos extends JFrame{
  public Estudos() {
    super("Minha primeira aplicação GUI");
     
    // vamos declarar um objeto da classe JComponent
    // e atribuir a ele um JButton
    JComponent btn = new JButton("Clique Aqui");
    getContentPane().add(btn, BorderLayout.SOUTH);
 
    setSize(350, 250);
    setVisible(true);
  }
   
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Veja que declaramos uma variável do tipo JComponent e atribuímos a ela um objeto da classe JButton. Isso é perfeitamente possível, já que JButton herda de JComponent, ainda que indiretamente.

Entre as classes que herdam de JComponent estão: AbstractButton, BasicInternalFrameTitlePane, Box, Box.Filler, JColorChooser, JComboBox, JFileChooser, JInternalFrame, JInternalFrame.JDesktopIcon, JLabel, JLayeredPane, JList, JMenuBar, JOptionPane, JPanel, JPopupMenu, JProgressBar, JRootPane, JScrollBar, JScrollPane, JSeparator, JSlider, JSpinner, JSplitPane, JTabbedPane, JTable, JTableHeader, JTextComponent, JToolBar, JToolTip, JTree, JViewport.


Java ::: Dicas & Truques ::: Programação Orientada a Objetos

Como usar o modificador final em classes, variáveis e métodos Java - Programação Orientada a Objetos em Java

Quantidade de visualizações: 13645 vezes
O modificador final pode ser usado com classes, variáveis e métodos. É claro que o significado varia dependendo do uso. Por exemplo, ao marcarmos uma variável com o modificador final, estamos na verdade criando uma constante, ou seja, uma variável cujo conteúdo não pode ser alterado durante a execução do programa. Veja:

public class Estudos{ 
  static final int VALOR = 45;  

  public static void main(String args[]){ 
    // vamos tentar alterar o valor da
    // constante
    VALOR = 10;
  } 
}

Ao tentarmos compilar este programa teremos a seguinte mensagem de erro:

Estudos.java:7: cannot assign a value to 
final variable VALOR
    VALOR = 10;
    ^
1 error


Tenha em mente, porém, que quando uma variável marcada como final é uma referência a um objeto, é a referência que não poderá ser alterada. As propriedades do objeto para a qual ela aponta poderão sofrer alterações, exceto se estes também estiverem marcados como final.

Quando aplicado a classes, o modificador final garante que a classe não poderá ser extendida, ou seja, não é possível criar uma classe derivada a partir de uma classe marcada como final. Veja:

// superclasse
final class Pessoa{
  public String nome;
}

// subclasse
class Aluno extends Pessoa{
  public String matricula;
}

public class Estudos{ 
  public static void main(String args[]){ 
    // Cria um objeto da classe Aluno
    Aluno a = new Aluno();
  } 
}

Ao tentarmos compilar este código teremos a seguinte mensagem de erro:

Estudos.java:7: cannot inherit from 
final Pessoa
class Aluno extends Pessoa{
                    ^
1 error


Um método marcado como final não pode ser sobrescrito. Veja um exemplo:

// superclasse
class Pessoa{
  protected String nome;

  public final String getNome(){
    return this.nome;
  }
}

// subclasse
class Aluno extends Pessoa{
  // estamos sobrescrevendo o método
  // herdado da superclasse
  public final String getNome(){
    return "Aluno: " + this.nome;
  }
}

public class Estudos{ 
  public static void main(String args[]){ 
    // Cria um objeto da classe Aluno
    Aluno a = new Aluno();
  } 
}

Ao tentarmos compilar este código teremos a seguinte mensagem de erro:

Estudos.java:14: getNome() in Aluno cannot 
override getNome() in Pessoa; overriden method is final
  public final String getNome(){
                      ^
1 error


Resumindo: variáveis marcadas com final não poder sofrer alterações. Classes marcadas como final não podem ter classes derivadas. Métodos marcados como final não podem ser sobrescritos.


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

Como criar um array de strings em Ruby usando a notação %w

Quantidade de visualizações: 7767 vezes
Como criar um array de strings em Ruby usando a notação %w

Nesta dica mostrarei como podemos criar um vetor de strings em Ruby usando a notação %w(..). Ao usarmos esta sintáxe, cada elemento do array é separado por um espaço. Veja como usamos a barra invertida "\" para um elemento composto de mais de uma palavra.

Veja o código completo para o exemplo:

# define um array de cidades
cidades = %w(Goiânia Salvador Rio\ de\ Janeiro São\ Paulo)

# exibe os elementos do array
cidades.each do |cidade|
  puts cidade
end

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

Goiânia
Salvador
Rio de Janeiro
São Paulo


Python ::: Dicas & Truques ::: Strings e Caracteres

Como testar se uma string contém apenas letras em Python usando a função isalpha()

Quantidade de visualizações: 15054 vezes
Este exemplo mostra como podemos a função isalpha() do Python para verificar se uma string contém apenas letras, ou seja, nada de números, espaços nem pontuação. Se algum número, espaço, um caractere especial ou pontuação estiver contido, a função retorna False.

def main():
  # uma palavra contendo apenas letras
  palavra = "Arquivo"

  # a palavra contém apenas letras?
  if palavra.isalpha():
    print("A string contém apenas letras")
  else:
    print("A string não contém somente letras")

if __name__== "__main__":
  main()

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

A string contém apenas letras.

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


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 Apenas R$ 32,90


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