Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços

Um laço for que solicita ao usuário 10 números inteiros e mostra o menor e o maior valor informado - Desafio de Programação Resolvido em Java

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

Escreva um programa Java console que usa o laço for para solicitar ao usuário que informe 10 números inteiros. Em seguida mostre o maior e o menor valor lido. Não é permitido usar matrizes:

Dica: Use um objeto da classe Scanner para obter a entrada do usuário.

Resposta/Solução:

Como a solução deste exercício depende de valores informados pelo usuário, a classe Scanner deverá ser usada. Desta forma, você deverá importá-la, usando a linha:

import java.util.Scanner;
Lembre-se de que os imports devem estar entre a declaração de pacote (package) e a declaração da classe. Veja a solução comentada no código abaixo:

public static void main(String[] args){
  // para este exercício você deverá importar a classe
  // Scanner. Ela está no pacote java.util.*;
    
  // vamos construir um objeto da classe Scanner para ler a
  // entrada do usuário
  Scanner entrada = new Scanner(System.in);

  int valor; // guarda o valor lido
  int maior = 0, menor = 0; // variáveis que guardarão o maior e o menor valor lido

  // vamos pedir ao usuário que informe 10 valores inteiros
  for(int i = 0; i < 10; i++){
    System.out.print("Informe o " + (i + 1) + "º valor: ");
    valor = Integer.parseInt(entrada.nextLine());

    // esta é a primeira iteração do laço? se for vamos assumir que o
    // maior e menor valor lido são o primeiro valor informado
......


Link para compartilhar na Internet ou com seus amigos:

Android Java ::: Gerenciadores de Layout ::: LinearLayout

Como usar o gerenciador de layout LinearLayout em suas aplicações Android

Quantidade de visualizações: 7727 vezes
O gerenciador de layout LinearLayout (no pacote android.widget) do Android SDK nos permite exibir seus componentes filhos em uma única coluna ou linha. Esta classe está disponível desde a API Level 1. Veja sua posição na hierarquia de classes do Android:

java.lang.Object 
   android.view.View 
      android.view.ViewGroup 
......


As classes diretas mais conhecidas são: NumberPicker, RadioGroup, SearchView, TabWidget, TableLayout, TableRow e ZoomControls.

Veja um exemplo de como podemos usar o gerenciador LinearLayout em um arquivo de layout em XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
......


Veja agora como este mesmo gerenciador pode ser criado em tempo de execução a partir do método onCreate() de uma activity:

package arquivo.estudos;

import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class EstudosActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
......


Em ambos os exemplos, os componentes filhos serão dispostos em uma única coluna, ou seja, serão empilhados na vertical, uma vez que o valor da orientação do layout é vertical. Note que a orientação do layout LinearLayout é definida em um arquivo XML usando o atributo android:orientation. Via código, a orientação é definida por meio de uma chamada ao método setOrientation(). A orientação padrão de um LinearLayout é horizontal (os componentes são dispostos em uma linha horizontal e a quebra de linha só ocorrerá quando forçada por questões de espaço).


C++ Builder ::: VCL - Visual Component Library ::: TEdit

Como obter a quantidade de caracteres em um TEdit usando a função GetTextLen() do C++ Builder

Quantidade de visualizações: 5992 vezes
Em algumas ocasiões nós precisamos descobrir a quantidade de caracteres contidos em uma caixa de texto do tipo TEdit. Para isso podemos usar o método GetTextLen() do C++ Builder, definido originalmente na classe TControl. Esta função retorna um valor inteiro contendo o tamanho do texto da caixa de texto.

Veja um exemplo do uso do método GetTextLen() no trecho de código a seguir:

void __fastcall TForm3::Button2Click(TObject *Sender)
{
  // vamos obter a quantidade de caracteres no TEdit
  int tamanho = Edit1->GetTextLen();
......


Ao executar este exemplo você terá um resultado parecido com:

O Edit contém 5 caracteres.


Delphi ::: Dicas & Truques ::: Ponteiros, Referências e Memória

Como usar nil para testar ou indicar que um ponteiro Delphi não referencia nenhuma posição de memória

Quantidade de visualizações: 14744 vezes
O propósito dos ponteiros é nos permitir acessar e manipular os valores de outras variáveis. Isso é feito acessando-se diretamente o endereço de memória destas variáveis. Porém, há situações nas quais queremos testar se um determinado ponteiro está realmente apontando para um local na memória. Veja o seguinte trecho de código:

procedure TForm1.Button1Click(Sender: TObject);
var
  pvalor: ^integer;
begin
  // vamos exibir o valor da variável referenciada pelo
......


Ao executarmos este código nós teremos um valor aleatório sendo exibido (e um warning do tipo W1036 Variable 'pvalor' might not have been initialized. Isso acontece porque criamos um ponteiro para um Integer mas não indicamos o endereço da variável para a qual ele aponta, ou seja, até o momento este ponteiro é nulo (não aponta para nenhuma posição de memória). Mova a declaração do ponteiro para a seção interface e verá que código compilará mas teremos uma exceção do tipo EAccessViolation (Exception class EAccessViolation with message 'Access violation at address ... in module ...). Clássico erro de lógica. Estamos tentando acessar dados não existentes na memória.

Esta situação pode ser evitada testando se o ponteiro ainda é nulo antes de tentarmos desreferenciá-lo. Veja:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // vamos exibir o valor da variável referenciada pelo
  // ponteiro pvalor
......


Note que movi a declaração do ponteiro para a secão interface, de forma a torná-la global. Isso evita que o ponteiro seja automaticamente inicializado (o que sempre acontece com as variáveis locais). Ao executar o código novamente você verá a mensagem indicando que o ponteiro ainda é nulo.

Podemos também usar nil para, explicitamente, marcar um ponteiro como nulo, ou seja, definir que o ponteiro não aponta para nenhum local na memória. Comece declarando as variáveis abaixo na seção interface do formulário:

valor: Integer;
pvalor: ^Integer;

Em seguida coloque o código abaixo no evento Click de um botão:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // vamos atribuir um valor à variável valor
  valor := 14;

  // vamos "apontar" nosso ponteiro para o local de
  // memória da variável valor
  pvalor := @valor;

  // vamos exibir o valor da variável apontada por pvalor
......


Sempre que marcamos um ponteiro como nil, a memória até então ocupada por ele é liberada para uso por parte do sistema operacional ou demais programas. Este procedimento ajuda a evitar os vazamentos de memória (memory leak) tão frequentes em códigos que trabalham com memória alocada dinamicamente.

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


C# ::: Fundamentos da Linguagem ::: Estruturas de Controle

C# para iniciantes - Como usar o laço for da linguagem C#

Quantidade de visualizações: 11667 vezes
O laço for em C# é usado quando queremos executar uma instrução ou um bloco de instruções um determinado número de vezes. Este laço é composto de três partes:

Inicialização: Laços for são controlados por uma variável de controle. Nesta parte nós definimos o tipo de dados e o valor inicial desta variável. Esta parte do laço é executada somente na primeira iteração.

Teste da condição de parada: Cada iteração do laço acontece mediante uma condição. Esta condição é avaliada e, caso o retorno seja satisfatório, a execução do laço continua. O resultado da avaliação desta parte do laço deve ser true ou false. Tenha em mente que, se a condição já for falsa na primeira iteração, o laço nunca será executado.

Incremento ou decremento da variável de controle: Esta parte do laço é executada após cada iteração. É aqui que incrementamos ou decrementamos o valor da variável de controle. Esta parte é importante. Não manipular o valor da variável de controle pode resultar em laços infinitos.

Veja um laço for no qual contamos de 0 a 10:

static void Main(string[] args){
  for(int i = 0; i <= 10; i++){
    Console.WriteLine("{0}", i);
......


Veja agora um laço for que exibe os números pares de 0 a 10:

static void Main(string[] args){
  for(int i = 0; i <= 10; i += 2){
    Console.WriteLine("{0}", i);
......


E finalmente, um laço for que conta de 10 até 0:

static void Main(string[] args){
  for(int i = 10; i >= 0; i--){
    Console.WriteLine("{0}", i);
......


Com exceção da parte do teste de condição de parada, as demais partes de um laço for podem conter múltiplas instruções separadas por vírgulas. Veja:

static void Main(string[] args){
  for(int i = 0, x = 3; i < 10; i++, x *= 4){
    Console.WriteLine("{0}", i + x);
......



Dart ::: Dicas de Estudo e Anotações ::: Estruturas de Controle

Como usar if...else em Dart - Como usar a estrutura condicional if... else if... else da linguagem Dart

Quantidade de visualizações: 2720 vezes
Na maioria das linguagens de programação, a estrutura condicional if... else if... else é usada para testar condições e, baseado no resultado dos testes, desviar o fluxo de execução do algorítmo.

Veja um exemplo no qual pedimos para o usuário digitar um valor inteiro e efetuamos um teste para saber se o valor é maior que 10:

// Vamos importar a biblioteca dart:io
import 'dart:io';

void main() {
  // vamos pedir para o usuário digitar um valor inteiro
  stdout.write("Digite um número inteiro: ");
  // vamos converter a entrada do usuário para um inteiro e
  // e guardar na variavel valor
......


Este código produz as seguintes saídas:

c:\estudos_dart>dart condicional_if_else.dart
Digite um número inteiro: 4
O valor não é maior que 10.

c:\estudos_dart>dart condicional_if_else.dart
Digite um número inteiro: 10
......


Note que testamos apenas um condição e já desviamos para o else caso ela não seja satisfeita. A linguagem Dart nos permite usar if...else aninhados. Veja:

// Vamos importar a biblioteca dart:io
import 'dart:io';

void main() {
  // vamos pedir para o usuário digitar um valor inteiro
  stdout.write("Digite um número inteiro: ");
  // vamos converter a entrada do usuário para um inteiro e
  // e guardar na variavel valor
  int valor = int.parse(stdin.readLineSync());
......


Execute este código, digite um valor inteiro e observe seu comportamento.


Veja mais Dicas e truques de Dart

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

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



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