apostila algoritmos

196

Click here to load reader

Upload: ibta-turma-de-ti-2009

Post on 27-Jun-2015

11.325 views

Category:

Entertainment & Humor


90 download

TRANSCRIPT

Page 1: Apostila Algoritmos

ALGORITMOS

Autora: Lucy Mari Tabuti

Cursos: ADS / BD / RC / SI Semestre: 1

Page 2: Apostila Algoritmos

Prezado aluno,

Este material compreende apenas oconteúdo da disciplina. Assim, nãodeve ser a única fonte de consultasem seus estudos. O conteúdo deveser complementado com outras obras,indicadas por seu professor ouencontradas em suas pesquisas.

Revisões: Fevereiro 2005 - por Lucy M. Tabuti

3ª Edição – 7ª Impressão – 2008

Copyright Faculdade IBTA

Page 3: Apostila Algoritmos

Índice

1. Conceitos Básicos..................................................................................................................... 1

1.1. Lógica .................................................................................................................................. 1

1.2. Processamento de Dados ................................................................................................... 2

1.3. Algoritmo.............................................................................................................................. 2

1.4. Programa............................................................................................................................. 6

1.5. Java - Linguagem de Programação..................................................................................... 6

1.6. Exemplo............................................................................................................................... 9

Exercícios de Lógica .................................................................................................................. 9

2. Como Construir um Algoritmo ............................................................................................... 11

2.1. Exemplo de como fazer um Café ...................................................................................... 11

2.2. Outro Exemplo de Construção de Algoritmo Envolvendo Lógica ...................................... 13

Exercícios de Construção de Algoritmo Envolvendo Lógica .................................................... 14

3. Constantes, Variáveis e Tipos de Dados............................................................................... 15

3.1. Tipos de Dados ................................................................................................................. 15

3.2. Constantes ........................................................................................................................ 16

3.3. Variáveis ............................................................................................................................ 18

3.4. Identificadores ................................................................................................................... 19

3.5. Conversões entre Tipos em Java ...................................................................................... 20

3.6. Exemplos com Constantes, Variáveis e Identificadores em Pseudocódigo ...................... 21

3.7. Exemplos com Constantes, Variáveis e Identificadores em Java ..................................... 22

Exercícios com Constantes, Variáveis e Identificadores .......................................................... 22

4. Expressões Aritméticas e Lógicas ........................................................................................ 23

4.1. Operadores Aritméticos ..................................................................................................... 23

4.2. Operadores Relacionais .................................................................................................... 25

4.3. Operadores Lógicos .......................................................................................................... 26

4.4. Prioridades entre Operadores ........................................................................................... 27

4.5. Exemplo com Operadores ................................................................................................. 27

Exercícios com Operadores ..................................................................................................... 29

5. Estrutura Seqüencial ............................................................................................................... 30

5.1. Operador de Atribuição (�) e Comandos de Atribuição ................................................... 30

5.2. Comandos de Entrada e Saída ......................................................................................... 31

Copyright Faculdade IBTA

1

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 4: Apostila Algoritmos

5.3. Blocos ................................................................................................................................ 36

5.4. Estrutura Seqüencial ......................................................................................................... 38

5.5. Funções de Tratamento de Caracteres em Java .............................................................. 40

5.6. Exemplos de Estrutura Seqüencial em Pseudocódigo ...................................................... 41

5.7. Exemplos de Estrutura Seqüencial em Java ..................................................................... 43

Exercícios de Algoritmos Seqüenciais...................................................................................... 45

6. Estrutura de Decisão............................................................................................................... 47

6.1. Estrutura de Decisão Simples (se/então) .......................................................................... 47

6.2. Estrutura de Decisão Composta (se/então/senão) ............................................................ 49

6.3. Estrutura de Decisão Encadeada (se/então ... /senão ...) ................................................. 51

6.4. Exemplos de Estrutura de Decisão Simples, Composta e Encadeada em

Pseudocódigo ...................................................................................................................55

6.5. Exemplos de Estrutura de Decisão Simples, Composta e Encadeada em Java .............. 60

Exercícios de Estrutura de Decisão Simples, Composta e Encadeada ................................... 65

7. Estrutura de Múltipla Escolha ................................................................................................ 68

7.1. Estrutura de Múltipla Escolha Simples .............................................................................. 68

7.2. Estrutura de Múltipla Escolha Encadeada......................................................................... 75

7.3. Exemplos de Estrutura de Múltipla Escolha em Pseudocódigo ........................................ 81

7.4. Exemplos de Estrutura de Múltipla Escolha em Java........................................................ 84

Exercícios de Estrutura de Múltipla Escolha Simples e Encadeada ........................................ 88

8. Estrutura de Repetição ............................................................................................................96

8.1. Estrutura de Repetição Enquanto ..................................................................................... 96

8.2. Faça/Enquanto ................................................................................................................ 101

8.3. Para ................................................................................................................................ 105

8.4. Exemplo de estrutura de repetição enquanto, faça/enquanto e para em pseudocódigo 109

8.5. Exemplo de estrutura de repetição enquanto, faça/enquanto e para em java ................ 113

Exercícios de estrutura de repetição enquanto, faça/enquanto e para .................................. 118

9. Modularização ........................................................................................................................121

9.1. Necessidade da Modularização em Programas ..............................................................121

9.2. Construção de Módulos ...................................................................................................121

9.3. Escopo de Variáveis ........................................................................................................122

9.4. Módulos Procedimento ....................................................................................................122

9.5. Módulos Função ..............................................................................................................124

9.6. Parametrização de Módulos ............................................................................................126

9.7. Chamada dos Módulos ....................................................................................................128

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

2

Page 5: Apostila Algoritmos

9.8. Exemplo de Modularização em Pseudocódigo ................................................................130

9.9. Exemplo de Modularização em Java ...............................................................................141

Exercícios de Modularização ..................................................................................................151

10. Estrutura de Dados Homogêneas - Vetores...................................................................... 157

10.1. Definição de Vetor ..........................................................................................................157

10.2. Declaração de Vetor .......................................................................................................158

10.3. Exemplo de Vetor ...........................................................................................................159

10.4. Atribuindo Valores ao Vetor............................................................................................160

10.5. Mostrando os Elementos de um Vetor ...........................................................................161

10.6. Exemplos de Vetores em Pseudocódigo........................................................................162

10.7. Exemplos de Vetores em Java .......................................................................................164

Exercícios de Vetores..............................................................................................................167

11. Estrutura de Dados Homogênea - Matrizes .......................................................................170

11.1. Definição de Matriz ........................................................................................................170

11.2. Declaração de Matriz......................................................................................................171

11.3. Exemplo de Matriz .........................................................................................................172

11.4. Atribuindo Valores À Matriz ............................................................................................174

11.5. Mostrando os Elementos de uma Matriz ........................................................................176

11.6. Exemplos de Matrizes em Pseudocódigo ......................................................................177

11.7. Exemplos de Matrizes em Java .....................................................................................180

Exercícios de Matrizes ............................................................................................................182

Copyright Faculdade IBTA

1

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 6: Apostila Algoritmos

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

2

Page 7: Apostila Algoritmos

1. Conceitos Básicos

1.1. Lógica

Definição de Lógica

Segundo o dicionário Aurélio1, lógica é:

“Filos. Na tradição clássica, aristotélico-tomista, conjunto de estudos que visam a determinar osprocessos intelectuais que são condição geral do conhecimento verdadeiro.”

“Filos. Conjunto de estudos tendentes a expressar em linguagem matemática as estruturas eoperações do pensamento, deduzindo-as de números reduzidos de axiomas, com a intenção decriar uma linguagem rigorosa, adequada ao pensamento científico tal como o concebe a tradiçãoempírico-positivista; lógica matemática, lógica simbólica.”

“Inform. Forma pela qual as assertivas, pressupostos e instruções são organizados em umalgoritmo para implementação de um programa de computador.”

Lógica do dia-a-dia

Independentemente de qualquer definição teórica, basta observarmos nosso dia-a-dia paraverificarmos que a lógica está presente em quase tudo o que fazemos ou pensamos.

Por exemplo, ao pegarmos uma chave que está dentro de uma gaveta fechada, precisamos antesabrir a gaveta para conseguir pegar a chave. Isso é lógica!

Se estamos conversando com alguém, precisamos organizar as palavras numa certa ordem paradizer uma frase que faça sentido, senão a outra pessoa não entenderá nada do que você estáfalando. Isso é lógica!

E se você quer caminhar, você sabe que precisa colocar um pé na frente do outro numaseqüência, pois se não o fizer ficará parado no mesmo lugar. Isso é lógica!

Enfim, muito do que fazemos e/ou pensamos, na nossa vida, está relacionado à lógica.

Lógica de programação

A lógica de programação nada mais é do que a lógica usada na programação de computadores,que segue as leis do pensamento e os processos do raciocínio, cujo objetivo é desenvolvertécnicas que ajudem as pessoas a realizar uma tarefa com o mínimo de esforço.

Por exemplo, com o uso da lógica e da computação, hoje temos acesso ao correio eletrônico,mais conhecido por email, em que uma mensagem escrita pode chegar quase queinstantaneamente ao seu destino, em qualquer lugar do mundo. Imagine como era antes docorreio eletrônico? Quanto tempo demorava uma carta para chegar ao Japão, saindo do Brasil? Eantes do avião? Quando tempo essa carta demorava para chegar de navio? E antes do navio?Havia alguma possibilidade de essa carta chegar ao seu destino?

Copyright Faculdade IBTA

1

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

—————————————————1 Ferreira, Aurélio Buarque de Holanda. Novo Aurélio século XXI: O Dicionário da Língua Portuguesa. 3.a edição.Nova Fronteira. Rio de Janeiro. 1999.

Page 8: Apostila Algoritmos

1.2. Processamento de Dados

Na informática, o tratamento de uma informação refere-se à entrada de dados, ao processamentodesses dados de entrada e à saída dos resultados desse processamento, numa seqüência comomostra a figura a seguir:

Figura 1 – Processamento de dados

A entrada de dados, que pode ser uma coleta de dados, uma depuração de dados ou umarmazenamento de dados, recebe a informação necessária que será tratada no processamentode dados. Essa entrada pode ser feita através de dispositivos de entrada, por exemplo, teclado,mouse, etc.

O processamento de dados, que pode ser aritmético ou lógico, trata a informação recebida naentrada de dados, gerando resultados. Esse processamento é efetuado dentro do computador, naunidade lógica e aritmética conhecida como ULA que fica dentro da CPU (Unidade Central deProcessamento), o cérebro do computador.

A saída de dados, que pode ser uma coleta de resultados ou uma distribuição de resultados, é aentrega dos dados processados para o usuário. Essa saída pode ser feita através de dispositivosde saída, por exemplo, monitor, impressora, etc.

Exemplificando, considere um problema cujo objetivo é encontrar a solução da soma de doisnúmeros. A partir dessa informação, podemos verificar que nossa entrada de dados são os doisnúmeros dos quais queremos encontrar a soma. Continuando, percebemos que nossoprocessamento é realizar o cálculo aritmético da soma dos dois números fornecidos na entrada dedados. E, finalizando, temos como resultado desse processamento a soma realizada desses doisnúmeros.

1.3. Algoritmo

Definição

Podemos definir algoritmo como um processo que reúne um conjunto de ações que sãonecessárias para tratar os dados de entrada e transformá-los em resultados para um determinadoobjetivo.

Nesse sentido, podemos considerar que uma receita de bolo é um algoritmo, pois a partir dosingredientes (dados de entrada), realizamos várias ações como bater os ingredientes numabatedeira, colocar numa assadeira e depois assar por determinado tempo (processamento) para,no final, termos um bolo bem-feito (resultado de saída).

De qualquer forma, trataremos a construção de algoritmos lógicos computacionais, em que osdados de entrada, o processamento e os resultados de saída são dados virtuais no formato que ocomputador entende.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

2

Entrada Processamento Saída

Page 9: Apostila Algoritmos

Método para o desenvolvimento de um algoritmo

Para a construção de um bom algoritmo, devemos seguir os seguintes passos:

a. ler e compreender o problema para o qual será construído um algoritmo;

b. determinar quais serão a entrada de dados do seu algoritmo;

c. determinar quais as ações, lógicas e/ou aritméticas, que deverão ser realizadas no seualgoritmo, bem como, as restrições, se houver, para cada uma dessas ações;

d. determinar qual será a saída de resultados do seu algoritmo;

e. construir o algoritmo em um dos tipos de algoritmo descritos na próxima seção;

f. testar o algoritmo usando o teste de mesa descrito no final deste capítulo.

Tipos de algoritmo

As formas mais importantes para a construção de algoritmos são: a descrição narrativa, ofluxograma e o pseudocódigo (ou português estruturado ou portugol). Para exemplificar cada umdos tipos de algoritmo, vamos considerar o seguinte problema: a soma de dois números.

Descrição narrativa. A descrição narrativa nada mais é do que descrever, utilizando umalinguagem natural (no nosso caso, a língua portuguesa), as ações a serem realizadas notratamento dos dados de entrada para os resultados de saída na resolução do problema proposto.

A vantagem desse tipo de algoritmo é que a linguagem natural não oferece o esforço doaprendizado, pois ela já é bem conhecida. A desvantagem é que a linguagem natural pode terinterpretações diferentes dependendo do ponto de vista de cada pessoa, podendo dificultar atranscrição para o programa.

Para o nosso exemplo, a descrição narrativa ficaria da seguinte forma:

• iniciar o algoritmo;

• receber dois números;

• somar esses dois números;

• apresentar a soma dos dois números;

• finalizar o algoritmo.

Fluxograma. O fluxograma é a forma de descrever as ações a serem realizadas no tratamentodos dados de entrada para os resultados de saída usando uma representação simbólicapreestabelecida, por exemplo, como os símbolos na Figura 3.

A vantagem desse tipo de algoritmo é o entendimento. Qualquer representação gráfica sempre émais bem entendida do que uma representação por escrito. A desvantagem desse tipo dealgoritmo é a necessidade do aprendizado de cada símbolo bem como seu significado. Alémdisso, um algoritmo descrito por um fluxograma não apresenta detalhes, podendo dificultar atranscrição para o programa.

Copyright Faculdade IBTA

3

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 10: Apostila Algoritmos

Para o nosso exemplo, o fluxograma ficaria da seguinte forma:

Figura 2 – Fluxograma da soma de dois números

Símbolo utilizado para determinar o início e o término do algoritmo.

Símbolo utilizado para determinar o sentido do fluxo de dados doalgoritmo e utilizado para conectar os símbolos existentes.

Símbolo utilizado para determinar uma ação ou comando que podeser um cálculo ou uma atribuição de valores.

Símbolo utilizado para determinar a saída de dados do algoritmo.Essa entrada de dados pode ser via dispositivos de entrada.

Símbolo utilizado para determinar a saída de dados do algoritmo.Essa saída de dados pode ser via monitor.

Símbolo utilizado para determinar uma decisão que indicará qualcaminho será seguido no algoritmo.

Símbolo utilizado para determinar uma conexão entre partes de ummesmo algoritmo.

Figura 3 – Fluxograma

Pseudocódigo. O pseudocódigo é a forma de descrever as ações para a resolução de umproblema proposto por meio de regras preestabelecidas.

A vantagem desse tipo de algoritmo é a possibilidade da transcrição quase que imediata dessealgoritmo para uma linguagem de programação, bastando saber a sintaxe e a semântica dessalinguagem de programação. A desvantagem deste tipo de algoritmo é a necessidade doaprendizado de cada uma das regras do pseudocódigo bem como seu significado. A seguir,apresentaremos cada uma dessas regras do pseudocódigo para o melhor aprendizado.

Para o nosso exemplo, o pseudocódigo ficaria da seguinte forma:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

4

início fimN1, N2 S = N1 + N2 S

Page 11: Apostila Algoritmos

Algoritmo Soma

início_algoritmo

declarar N1, N2, S numérico_inteiro;

ler (N1, N2);

S � N1 + N2;

mostrar (S);

fim_algoritmo.

Pseudocódigo – Estrutura

O pseudocódigo é o tipo de algoritmo que exploraremos a partir de agora. Como vimos noexemplo anterior, o algoritmo escrito em pseudocódigo possui uma estrutura, ou seja, um nome,um início, a declaração de variáveis e constantes, a entrada de dados, o processamento dessesdados, a saída de resultados e o fim.

Todo e qualquer algoritmo escrito em pseudocódigo precisa dessa estrutura para que otratamento da informação seja apresentado da forma mais compreensível possível.

Teste de mesa

Como vimos na seção de método para o desenvolvimento de um algoritmo, o último itemrefere-se a testar o algoritmo construído. Para testar um algoritmo, utilizamos o teste de mesa queverifica se o algoritmo realiza exatamente o que se espera dele.

Para realizar o teste de mesa em um algoritmo é muito simples, basta seguir, passo-a-passo,cada comando do algoritmo como se fosse o computador. Assim, no final do teste de mesa, vocêpode concluir se o algoritmo está correto ou não. Se não estiver, basta corrigir o algoritmo, refazero teste de mesa e repetir esse processo até que você se certifique de que o algoritmo estejarealmente correto.

Mesmo que você suponha que seu algoritmo esteja correto, você deve fazer o teste de mesa, poiserros imperceptíveis podem ser detectados. Não se corre o risco de ter um algoritmo que nãoretorna sempre o resultado esperado.

Comentários em pseudocódigo

Os comentários em pseudocódigos são simbolizados com duas barras (//) seguidas docomentário. Para o nosso exemplo, os comentários podem ser colocados da seguinte forma:

Copyright Faculdade IBTA

5

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 12: Apostila Algoritmos

// nome do algoritmo

Algoritmo Soma

início_algoritmo

// declaração das variáveis

declarar N1, N2, S numérico_inteiro;

// entrada de dados – leitura de dois números inteiros

ler (N1, N2);

// processamento de dados – cálculo da soma dos dois números

S � N1 + N2;

// saída de resultados – resultado da soma dos dois números

mostrar (S);

fim_algoritmo.

1.4. Programa

Um programa de computador é a codificação de um algoritmo numa linguagem de programaçãoespecífica, por exemplo, Java. Podemos distingüir dois tipos de linguagens: de alto nível e debaixo nível.

As linguagens de baixo nível são as linguagens de máquina, aquelas que o computador entende.As linguagens de alto nível são as linguagens de programação que servem de intermediáriasentre a linguagem natural e a linguagem de máquina.

Sempre que codificamos um algoritmo numa linguagem de programação, esse programa precisaser “traduzido” para a linguagem entendida pela máquina. A esse processo chamamosinterpretação ou compilação.

1.5. Java – linguagem de programação

Definição

No fim da década de 80, um pequeno grupo de trabalho da Sun, liderado por James Gosling,pesquisava um projeto de programação cujo principal objetivo era facilitar a interface deprogramação entre aparelhos eletrônicos e seus usuários, criando vários mecanismos deprogramação semelhantes em aparelhos diferentes como microondas, batedeira, aparelho desom, secretária eletrônica, entre outros.

Em 1990, a equipe direcionou a pesquisa para a criação de uma nova linguagem deprogramação, inicialmente chamada oak com uma arquitetura neutra e capaz de comportar-seadequadamente em plataformas de trabalho diferentes.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

6

Page 13: Apostila Algoritmos

Em 1993, com o surgimento da WWW (World Wide Web), a Sun percebeu que a nova linguagemdesenvolvida pelo grupo liderado por James Gosling era ideal para a programação na Internet porser uma arquitetura neutra e criada para várias plataformas.

Foi assim que surgiu a linguagem de programação Java, ou simplesmente Java, uma linguagemde programação atualmente bastante aceita pela comunidade de desenvolvedores de software eInternet. Com o Java, usuários da Internet e da WWW foram beneficiados pelo acesso seguro eos desenvolvedores de software, pela portabilidade.

As principais características do Java são: simples e familiar, orientada a objeto, distribuída,interpretada, robusta, segura, arquitetura neutra e portátil, alta performance, multitarefa edinâmica.

Princípios básicos de um ambiente java típico

Os sistemas Java normalmente possuem um ambiente, uma linguagem, uma interface deprogramas aplicativos Java e várias bibliotecas de classes. Além disso, os programas Javapassam por cinco fases antes de serem executados.

Na primeira fase, devemos editar o arquivo fonte. Podemos fazer isso utilizando qualquer editorde textos como o bloco de notas do Windows ou usando qualquer editor de Java que vemjuntamente dos ambientes de desenvolvimento integrado (Integrated Development Environments -

IDE). No arquivo fonte, o código java deve ser escrito de acordo com sua sintaxe e semântica,além disso, deve ter pelo menos uma classe principal que contenha o método principal, que é ovoid main(). Vale lembrar que todo nome de arquivo fonte deve terminar com a extensão .java.Por exemplo, teste.java.

Na segunda fase, devemos utilizar o comando javac para compilar o programa. Com essecomando, o compilador Java traduz o programa Java para bytecodes – a linguagem entendidapelo interpretador Java. Por exemplo, para compilar um programa chamado teste.java numajanela do DOS, devemos digitar, a seguir do prompt do DOS, o seguinte comando: javac

teste.java. Se a compilação finalizar sem erros, um arquivo chamado teste.class será gerado.Este é o arquivo contendo os bytecodes que serão interpretados durante a fase de execução. Osbytecodes podem ser considerados instruções de máquinas para o JVM (Java Virtual Machine).

Na terceira fase, o programa deve ser colocado na memória primária antes de ser executado. Issoé feito pelo carregador de classe que copia o arquivo .class para a memória.

Na quarta fase, os bytecodes passam pelo verificador de bytecodes que verifica se o programaJava atende aos padrões de segurança de Java.

Na quinta fase, o programa é interpretado bytecode por bytecode, sob controle da CPU,realizando assim cada ação a ser executada pelo programa.

Para o arquivo teste.java compilado anteriormente, foi criado o arquivo teste.class, teste por sero nome da classe principal do programa. Para executar esse arquivo teste.class, devemos digitaro seguinte comando no prompt do DOS: java teste. A partir daí, teremos o resultado do programadesenvolvido.

Plataforma java

Por plataforma entendemos o conjunto de hardware e software no qual um programa éexecutado. Alguns exemplos de plataformas conhecidas são: Windows, Linux, MacOs, etc. Javatambém é uma plataforma, no entanto sem hardware.

Copyright Faculdade IBTA

7

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 14: Apostila Algoritmos

A plataforma Java tem dois componentes: JVM – Java Virtual Machine e Java API – Java

Application Programming Interface. O Java API é uma coleção de componentes de software

prontos que incluem desde estruturas para manipulação de arquivos até a construção deaplicativos gráficos. O Java API é organizado como um grupo de bibliotecas com classes einterfaces. Essas bibliotecas são chamadas de pacotes.

Instalando o ambiente java

Para o desenvolvimento de aplicativos utilizando o Java, é necessária a instalação do compiladorJava, do Java API e do JVM. A instalação do ambiente segue o mesmo esquema da instalação dequalquer produto para Windows. Devemos baixar a versão mais apropriada e fazer a instalação.Informações podem ser adquiridas nos seguintes sites: java.sun.com, java.net, java.com, entreoutros.

Comentários em java

O uso de comentários em programas é muito importante, seja na linguagem Java ou em qualqueroutra linguagem de programação. Os comentários permitem explicar o conteúdo do código paraque serve, além de facilitar a manutenção posterior desse código. Em Java, podemos comentar oprograma de duas formas: usando duas barras (//), onde todo o conteúdo à direita estarácomentado: ou barra asterisco, asterisco barra (/* */), onde todo o conteúdo entre os doisasteriscos estará comentado.

Por exemplo:

// Isso é um comentário usando duas barras.

/* Isso também é um comentário.

Mas, usando barra asterisco e asterisco barra.

*/

O método main

No código fonte de qualquer programa Java, temos uma classe principal. Dentro dessa classeprincipal, devemos ter o método main que é o método principal de qualquer programa Java e semesse método o programa não funciona. Isso por que é pelo método main que o programa iniciasua execução.

A sintaxe do método main é a seguinte: public static void main(String args []) onde: public

indica que o método main pode ser chamado por outro objeto, static indica que o método main éum método de classe e void indica que o método main não retorna nenhum valor. O método main

aceita um único argumento: um vetor de caracteres (do tipo String) que armazena os valoresdigitados pelo usuário após o nome do programa.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

8

Page 15: Apostila Algoritmos

1.6. Exemplo

/* Primeiro programa em Java

Este código fonte será salvo no arquivo primeiro_programa.java

Este programa serve para exemplificar um programa Java para os alunos de Lógica deProgramação

*/

public class primeiro_programa

{

public static void main(String argumentos [])

{

System.out.print(" Primeiro Programa de Lógica deProgramação");

System.exit(0);

} // fim do método main

} // fim da classe principal primeiro_programa

Exercícios de lógica

01. Três homens estão em um restaurante. A conta é de R$ 30,00, então cada homem dá uma notade R$ 10,00 para o garçom. O garçom pega a conta e entrega o pagamento para o gerente quedecide dar um desconto de R$ 5,00 na conta. No meio do caminho de volta à mesa, o garçomdesonestamente pega R$ 2,00 dos R$ 5,00 e devolve R$ 1,00 para cada um dos homens à mesa.Então cada homem pagou R$9,00, dando um total de R$ 27,00. O garçom ficou com R$ 2,00, oshomens pagaram R$ 27,00, ou seja, somando esses dois valores, temos R$ 29,00. O queaconteceu com o outro R$ 1,00?

02. Qual número que quando adicionado de 5/4 dá o mesmo resultado de quando ele é multiplicadopor 5/4?

03. Descubra e escreva o próximo número da série abaixo:

18, 46, 94, 63, 52, ?

04. Há um número de três dígitos a que, se você adicionar 7, ele divide exatamente por 7; se vocêadicionar 8, ele divide exatamente por 8; se você adicionar 9, ele divide exatamente por 9. Qual éesse número?

05. Três garotos juntos têm três balas. João tem 3 balas a mais do que José, mas 5 a menos quePedro. Quantas balas tem cada um deles?

Copyright Faculdade IBTA

9

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 16: Apostila Algoritmos

06. Você tem exatamente R$ 100,00 para comprar os seguintes alimentos cujos preços são para umquilograma: arroz R$ 0,59, feijão R$ 1,99, batata R$ 2,87 e carne R$ 3,44. Você deve gastarexatamente os R$ 100,00. Quantos quilos de cada alimento você deve comprar?

07. Toda soma de cubos consecutivos, começando de 1, é sempre um quadrado perfeito. Porexemplo:

13 + 23 = 9 = 32

13 + 23 + 33 = 36 = 62

13 + 23 + 33 + 43 = 100 = 102

e assim por diante. Entretanto, no problema proposto aqui, começar de 1 não é permitido. Vocêdeve encontrar o menor quadrado perfeito que é igual à soma de no mínimo quatro cubosperfeitos consecutivos, excluída a unidade.

08. Um certo número, maior que 5000, mas menor que 50000, tem as seguintes propriedades:quando dividido por 4, tem um resto igual a 3; quando dividido por 5, tem resto igual a 1; quandodividido por 7, tem resto igual a 2; quando dividido por 11, tem resto igual a 2; e quando divididopor 17, tem resto igual a 12. Qual é esse número?

09. Todo número ímpar exceto dois entre 1 e 8999 ou é um primo ou é a soma de um primo e duasvezes um quadrado, por exemplo:

21 = 19 + 2 * 12

27 = 19 + 2 * 22

35 = 5 + 2 * 52

Quais são as duas exceções?

10. Corredores em uma maratona são numerados começando de 1. Um dos corredores notou que asoma dos números menores que seu próprio número era igual à soma dos números maiores. Sehavia mais do que 100 corredores, mas menos do que 1000, que número era do corredor acima equantos corredores havia na corrida?

11. Em minha casa há muitos gatos: sete não comem peixe; seis não comem fígado; cinco nãocomem frango; quatro não comem peixe nem fígado; três não comem peixe nem frango; dois nãocomem fígado nem frango; um não come fígado, peixe nem frango; nenhum deles come todas astrês comidas. Quantos gatos eu tenho?

12. Encontre a menor seqüência de números primos consecutivos cuja soma seja igual a 106620.

13. Três casais vivem felizes numa cidade. Com base nas dicas abaixo, tente descobrir o nome decada marido (Cleber, Lucas, Pedro), a profissão de cada um (Pedreiro, Arquiteto, Escultor) e onome de suas respectivas esposas (Laura, Priscila, Mariana):

a. O pedreiro é casado com Mariana.

b. Pedro é arquiteto.

c. Priscila não é casada com Pedro.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

10

Page 17: Apostila Algoritmos

d. Cleber não é pedreiro.

14. No último verão, três grupos acamparam na floresta. Com base nas dicas abaixo, tente descobriro nome do guia de cada acampamento (Heitor, Paulo, Sergio), o tipo de grupo que cada umliderou (crianças, jovens, adultos) e a cor das barracas que cada grupo de campista usou(amarelo, preto, vermelho).

a. Paulo foi o guia do grupo que acampou nas barracas de cor preto.

b. O animado grupo dos adultos ocupou as barracas de cor vermelho.

c. Heitor foi o grupo das crianças.

2. Como construir um algoritmo

2.1. Exemplo de como fazer um café

Vamos escrever vários algoritmos de como fazer um café utilizando o algoritmo de descriçãonarrativa. Vamos perceber que, por mais fácil que seja a tarefa, muitas vezes não nos atentamospara os pequenos detalhes da execução dessa tarefa, mas que podem fazer falta para alcançar oresultado desejado. Vamos ver como fica um algoritmo seqüencial para nosso exemplo:

Descrição Narrativa Seqüencial

• iniciar algoritmo;

• pegar bule;

• colocar coador de plástico sobre o bule;

• colocar coador de papel sobre o coador de plástico;

• colocar café tostado e moído sobre o coador de papel;

• colocar água sobre o café;

• finalizar algoritmo.

Nessa descrição, seguimos uma seqüência de vários passos, um após o outro. Isso significa queas ações foram executadas linearmente, da direita para a esquerda e de cima para baixo. Essealgoritmo mostra como qualquer pessoa, naturalmente, faria um café, sem se importar comqualquer detalhe.

Agora, analisando o algoritmo, verificamos que o resultado a ser alcançado é bem definido: fazerum café. No entanto, e se a água não estivesse fervente? Como sairia o café? O café seria feitocom a água fria porque não foi prevista essa condição para o algoritmo.

Para resolver esse problema, podemos fazer uma seleção para verificar se a água está ferventeou não. Assim, temos o seguinte algoritmo de seleção para o nosso exemplo:

Copyright Faculdade IBTA

11

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 18: Apostila Algoritmos

Descrição Narrativa de Seleção

• iniciar algoritmo;

• pegar bule;

• colocar coador de plástico sobre o bule;

• colocar coador de papel sobre o coador de plástico;

• colocar café tostado e moído sobre o coador de papel;

• se a água estiver fervente, então

• colocar água sobre o café;

• finalizar algoritmo.

Nessa descrição, fazemos uma seleção para a água, ou seja, verificamos se a água está fervente.Em caso afirmativo, a água é colocada sobre o café. Se a seleção for falsa (a água não estiverfervente), o café não será feito.

Nesse algoritmo, colocamos uma seleção para verificar qual o caminho que o algoritmo deveseguir. Perceba que, dependendo do resultado da seleção, algumas ações do algoritmo podemser realizadas ou não.

Analisando o algoritmo, percebemos que o café seria feito somente se a água estivesse fervente.Como podemos garantir que o resultado do algoritmo, que é ter o café pronto, seja alcançado?Para resolver esse problema, podemos fazer uma repetição para verificar a condição da água equando ela estiver fervente ser colocada sobre o café. Assim, temos o seguinte algoritmo derepetição para o nosso exemplo:

Descrição Narrativa de Repetição sem a Estrutura de Repetição

• iniciar algoritmo;

• pegar bule;

• colocar coador de plástico sobre o bule;

• colocar coador de papel sobre o coador de plástico;

• colocar café tostado e moído sobre o coador de papel;

• se a água não estiver fervente, então

• aquecer a água;

• se a água não estiver fervente, então

• continuar aquecendo a água;

• se a água não estiver fervente, então

• continuar aquecendo a água;...continua até quando?

• colocar água sobre o café;

• finalizar algoritmo.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

12

Page 19: Apostila Algoritmos

Percebemos que o algoritmo não está terminado, pois falta saber quando a água estará fervendopara ser colocada sobre o café. Para simplificarmos nosso algoritmo, podemos reescrevê-loutilizando uma condição de parada para determinar um limite para esse algoritmo:

Descrição Narrativa de Repetição usando a Estrutura de Repetição

• iniciar algoritmo;

• pegar bule;

• colocar coador de plástico sobre o bule;

• colocar coador de papel sobre o coador de plástico;

• colocar café tostado e moído sobre o coador de papel;

• enquanto a água não estiver fervente, faça

• aquecer a água;

• colocar água sobre o café;

• finalizar algoritmo.

Note que as duas descrições narrativas de repetição retornam o mesmo resultado que é aquecera água até ela ferver e ter o café pronto. A única diferença é que na segunda descrição utilizamosuma forma mais adequada para descrever um conjunto de ações em repetição.

2.2. Outro exemplo de Construção de Algoritmo envolvendo Lógica

Considere a Torre de Hanói com três hastes e três discos. Uma das hastes serve de suporte paratrês discos de tamanhos diferentes de forma que os menores estão sobre os maiores. Desenvolvaum algoritmo que mova todos os discos da haste onde se encontram para uma das outras duashastes da Torre de Hanói, seguindo as seguintes regras: Pode-se mover um disco de cada vezpara qualquer haste, contanto que um disco maior nunca seja colocado sobre um disco menor.

Resolução:

Considerando discos 1, 2, 3 e hastes A, B, C, temos o seguinte resultado:

• mover o disco 1 da haste A para a haste B;

• mover o disco 2 da haste A para a haste C;

• mover o disco 1 da haste B para a haste C;

• mover o disco 3 da haste A para a haste B;

• mover o disco 1 da haste C para a haste A;

• mover o disco 2 da haste C para a haste B;

• mover o disco 1 da haste A para a haste B.

Copyright Faculdade IBTA

13

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 20: Apostila Algoritmos

Exercícios de Construção de Algoritmo envolvendo Lógica

Utilizando a descrição narrativa, construa algoritmos para os seguintes exercícios:

01. Um homem com suas três cargas - um lobo, um bode e um maço de alfafa - precisa atravessarum rio usando um barco que possui capacidade para atravessar somente o homem e mais umade suas três cargas. Considerando que o lobo come o bode e o bode come o maço de alfafa,quais os percursos que o homem deve fazer para atravessar o rio sem perder nenhuma de suascargas? Desenvolva um algoritmo indicando todos os percursos efetuados pelo homem paraatravessar o rio sem perder nenhuma das cargas.

02. A partir do exemplo da Seção 2.2, amplie a solução apresentada, de maneira a completar aoperação descrita, de troca dos discos entre hastes, considerando a existência de 3 hastes e 4discos.

03. Três jesuítas e três canibais precisam atravessar um rio com um barco que possui capacidadepara transportar somente duas pessoas. Considerando que em qualquer margem, a quantidadede jesuítas não seja menor que a de canibais, quais os percursos que devem ser feitos para os 3jesuítas e os 3 canibais atravessarem o rio? Desenvolva um algoritmo indicando todos ospercursos efetuados para todos atravessarem o rio com segurança.

04. Tendo como exemplo os algoritmos desenvolvidos para solucionar o problema de fazer um café,elabore três algoritmos que mostrem os passos necessários para trocar um pneu furado.Considere o seguinte conjunto de situações, um para cada algoritmo:

a. trocar o pneu dianteiro direito;

b. verificar se o pneu reserva está em condições de uso; em caso afirmativo, trocar o pneudianteiro direito;

c. verificar se existe algum pneu furado; em caso afirmativo, verificar se o pneu reserva está emcondições de uso e, em caso afirmativo, trocar o pneu correto.

Para cada algoritmo desenvolvido, introduza novas ações e altere o fluxo do algoritmo de formacompatível com as situações apresentadas.

05. Considere uma calculadora comum de quatro operações. Considere que as teclas de divisão emultiplicação estão quebradas. Desenvolva três algoritmos que resolvam expressõesmatemáticas de multiplicação, divisão e exponenciação usando apenas as operações de adição esubtração.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

14

Page 21: Apostila Algoritmos

3. Constantes, Variáveis e Tipos de Dados

A partir deste capítulo, estaremos preocupados em conhecer as partes necessárias para seescrever um algoritmo completo em pseudocódigo. Para isso, neste capítulo, vamos estudarcomo as constantes, os tipos de dados e as variáveis são utilizados em pseudocódigo.

3.1. Tipos de Dados

Os tipos de dados são as características comuns dos dados a serem manipulados. Podemosconsiderar quatro classificações para os tipos de dados: inteiro, real, caracter e lógico.

O tipo inteiro caracteriza qualquer dado numérico que pertença ao conjunto dos númerosinteiros. Por exemplo: -5, 0, 32. O tipo inteiro quando armazenado no computador ocupa 2 bytes,o que corresponde a 65536 possibilidades, ou seja, de –32767 até 32767.

O tipo real caracteriza qualquer dado numérico que pertença ao conjunto dos números reais. Porexemplo: -9.0, 0, 29.45. O tipo real quando armazenado no computador ocupa 4 bytes, o quecorresponde a 232 possibilidades, podendo ter de 6 a 11 dígitos significativos com sinal.

O tipo caracter caracteriza qualquer dado que pertença a um conjunto de caracteresalfanuméricos e são simbolizados por entre aspas duplas (“”). Por exemplo: “15", ”Eu", “Pare!”,“?%@”. O tipo caracter quando armazenado no computador ocupa 1 byte para cada caracter.

O tipo lógico caracteriza qualquer dado que possa assumir somente duas situações: verdadeiroou falso. Por exemplo: feminino ou masculino, loja aberta ou fechada, brasileiro ou estrangeiro. Otipo lógico quando armazenado no computador ocupa 1 byte, pois possui apenas duas formas derepresentação.

Pseudocódigo

No pseudocódigo, há nomes especiais para representar cada tipo de dados, como se segue:

• para o tipo inteiro, usaremos numérico_inteiro;

• para o tipo real, usaremos numérico_real;

• para o tipo caracter, usaremos alfanumérico;

• para o tipo lógico usaremos lógico.

Java

No Java também há nomes especiais, chamados palavras reservadas, para representar cada tipode dado, como segue:

Figura 4 – O tipo lógico em Java

Copyright Faculdade IBTA

15

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

� para o tipo lógico, temos:

boolean tipo lógico que só pode assumir true ou falseintervalo compreendido: ocupa 1 bit

Page 22: Apostila Algoritmos

Figura 5 – O tipo real em Java

Figura 6 – O tipo caracter em Java

Figura 7 – O tipo inteiro em Java

Figura 8 – O tipo String em Java

3.2. Constantes

Definição

Dizemos que determinado dado é uma constante quando este dado não sofre nenhuma alteração,ou seja, ele é fixo. Por exemplo, podemos definir uma constante pi � 3.14, dentro do algoritmo e,nesse algoritmo, esse valor nunca sofrerá alteração.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

16

� para o tipo real, temos dois tipos diferentes, dependendo da capacidade dearmazenamento:

float números reais de 32 bitsintervalo compreendido: 3.4E-038 ... 3.4E+038

double números reais com precisão duplaintervalo compreendido: 1.7E-308 ... 1.7E-308

� para o tipo caracter que representa um único caracter, temos:

char caracter que ocupa 16 bits (sem sinal)intervalo compreendido: 0 ... 65536inclui unicode (alfabetos latinos, grego, cirílico, etc.)

� para o tipo inteiro, temos quatro tipos diferentes, dependendo da capacidade dearmazenamento

byte números inteiros de 8 bitsintervalo compreendido: -128 ... 127

short nímeros inteiro de 16 bitsintervalo compreendido: -32.768 ... 32.767

int números inteiros de 32 bitsintervalo compreendido: -2.147.483.648 ... 2.147.483.647

long númeors inteiros de 64 bitsintervalo compreendido: -9.223.372.036.854.775.808 ...9.223.372.036.854.775.807

� para o tipo caracter que representa uma cadeia de caracteres, temos:

String não é um tipo primitivo. É uma classe definida dentro deum pacote do Java.

Page 23: Apostila Algoritmos

Pseudocódigo

A declaração de um dado constante em pseudocódigo terá a seguinte regra sintática:

declarar

constante <nome da constante> � <valor da constante> <tipo de dado da constante> ;

Por exemplo:

declarar

constante pi � 3.14 numérico_real;

Podemos também declarar vários dados constantes em pseudocódigo numa mesma linha, se elesforem todos do mesmo tipo, seguindo a regra sintática abaixo e considerando NC como nome daconstante e VC como valor da constante:

declarar

constante <NC1>�<VC1>, <NC2>�<VC2>, ... , <NCn> �<VCn><tipo de dado>;

Por exemplo:

declarar

constante pi � 3.14, x � 9.3, telefone � -7.23 numérico_real;

Java

A declaração de um dado constante em java terá a seguinte regra sintática:

final <tipo de dado da constante> <nome da constante> = <valor da constante> ;

Por exemplo:

final double pi = 3.14;

Podemos também declarar vários dados constantes em Java numa mesma linha, se eles foremtodos do mesmo tipo, seguindo a regra sintática abaixo e considerando NC como nome daconstante e VC como valor da constante:

final <tipo de dado constante> <NC1> = <VC1>, <NC2> = <VC2>, ... , <NCn> = <VCn>;

Por exemplo:

final double pi = 3.14, x = 9.3, telefone = -7.23;

Copyright Faculdade IBTA

17

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 24: Apostila Algoritmos

3.3. Variáveis

Definição

Dizemos que determinado dado é uma variável quando o mesmo pode sofrer alguma alteração,ou seja, ele é variável. Por exemplo, podemos definir uma constante x, dentro do algoritmo e,nesse algoritmo, esse valor poderá sofrer alteração.

Pseudocódigo

A declaração de um dado variável em pseudocódigo terá a seguinte regra sintática:

declarar

<nome da variável> <tipo de dado da variável> ;

Por exemplo:

declarar

x numérico_inteiro;

Podemos também declarar vários dados variáveis em pseudocódigo numa mesma linha se elesforem todos do mesmo tipo, seguindo a regra sintática abaixo e considerando NV como nome davariável:

declarar

<NV1>, <NV2>, ... , <NVn> <tipo de dado da variável> ;

Por exemplo:

declarar

telefone, idade, valor, cor alfanumérico;

No momento da declaração de um dado variável em pseudocódigo, podemos também inicializar avariável, assim a declaração com a inicialização terá a seguinte regra sintática:

declarar

<nome variável> � <valor de inicialização da variável> <tipo de dado da variável> ;

Por exemplo:

declarar

y � 5 numérico_real;

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

18

Page 25: Apostila Algoritmos

Java

A declaração de um dado variável em java terá a seguinte regra sintática:

<tipo de dado da variável> <nome da variável> ;

Por exemplo:

int x;

Podemos também declarar vários dados variáveis em Java numa mesma linha se eles foremtodos do mesmo tipo, seguindo a regra sintática abaixo e considerando NV como nome davariável:

<tipo de dado da variável><NV1>, <NV2>, ... , <NVn>;

Por exemplo:

char letra, tom, nome;

No momento da declaração de um dado variável em Java, podemos também inicializar a variável,assim a declaração com a inicialização terá a seguinte regra sintática:

<tipo de dado da variável> <nome da variável> = <valor de inicialização da variável>;

Por exemplo:

double y = 5;

3.4. Identificadores

Definição

Os identificadores são os nomes dados às informações de um programa, por exemplo, nome davariável, nome da constante, nome do programa etc.

Por exemplo:

pi, x, num_1, valor5, etc.

Os identificadores são únicos para uma determinada informação, por exemplo, um mesmoidentificador não pode ser usado para o nome de uma variável e de uma constante, ou para onome de duas variáveis de mesmo tipo ou de tipos diferentes. Uma vez que um identificador foiusado para uma determinada informação, ele não pode ser usado novamente para identificaroutra informação.

Copyright Faculdade IBTA

19

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 26: Apostila Algoritmos

Por exemplo, em pseudocódigo:

declarar

x numérico_inteiro;

x numérico_real;

Por exemplo, em Java:

int x ;

double x;

Esse exemplo mostra o que não pode acontecer, ou seja, o identificador x declarado como umtipo inteiro e depois como um tipo real. Um identificador pode possuir somente um tipo deinformação.

Formato

Esses identificadores devem seguir as seguintes regras para serem válidos:

• todos os caracteres devem ser letras, números ou o sublinhado (o único caracter especialpermitido);

• o primeiro caracter deve ser uma letra;

• os demais caracteres podem ser letras, números ou sublinhado;

• não são permitidos caracteres especiais (com exceção do sublinhado);

• palavras reservadas (de uma linguagem de programação ou do pseudocódigo) não devem serusadas como identificadores.

3.5. Conversões entre Tipos em Java

Em Java, as conversões de tipos menos significativos para tipos mais significativos, por exemplo,de inteiro para real, são feitas automaticamente e sem problemas, basta fazer a sua atribuição,por exemplo:

// declaração da variável x do tipo int inicializado com o valor 10

int x = 10;

// declaração da variável y do tipo double

double y;

// atribuição do valor de x para y, a conversão de int para double é feita automaticamente

y = x;

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

20

Page 27: Apostila Algoritmos

No entanto, às vezes, queremos fazer atribuições de tipos mais significativos para tipos menossignificativos, por exemplo, de real para inteiro. Nesse caso, precisamos fazer a conversão do tiporeal para inteiro antes de fazer qualquer atribuição, por exemplo:

// declaração da variável i do tipo int

int i;

// declaração da variável j do tipo double inicializado com o valor 5.2

double j = 5.2;

// atribuição do valor de j, já convertido para int, para i

i = (int) j;

Essa operação de conversão entre tipos é chamada de cast. As conversões de tipos menossignificativos para tipos mais significativos permitidas são:

byte � short � int � long � float � double e char � int

Todas as demais conversões entre tipos devem ser convertidas com o uso de operações de cast.

3.6. Exemplos com Constantes, Variáveis e Identificadores emPseudocódigo

1. São identificadores válidos:

num1, item5C, tipo_a2, A123, idade, telefone

2. São identificadores não válidos:

1num, 5Citem, _tipoa2, _2valor, 123A, R$, nota/2, 5*, x&y

3. Declaração de constantes:

declarar

constante num1 � 9 numérico_inteiro;

constante x_2 � -3.28, cor � 7.4 numérico_real;

4. Declaração de variáveis

declarar

um � 5, dois numérico_inteiro;

maria, vlr9 numérico_real;

valor_4A � "alfabeto" alfanumérico;

sexo, X987 lógico;

amarelo � '5', cor alfanumérico;

Copyright Faculdade IBTA

21

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 28: Apostila Algoritmos

3.7. Exemplos com Constantes, Variáveis e Identificadores em Java

1. São identificadores válidos:

num1, item5C, tipo_a2, A123, idade, telefone

2. São identificadores não válidos:

1num, 5Citem, _tipoa2, _2valor, 123A, R$, nota/2, 5*, x&y

3. Declaração de constantes:

final int num1 = 9;

final double x_2 = -3.28, cor = 7.4;

4. Declaração de variáveis

int um = 5, dois;

double maria, vlr9;

String valor_4A = "alfabeto";

boolean sexo, X987;

char amarelo = '5', cor;

Exercícios com Constantes, Variáveis e Identificadores

01. Determine qual o tipo de dado que aparece nas seguintes frases:

a. A placa de trânsito "E" significa estacionamento permitido.

b. Hoje a temperatura em graus Celsius atingiu 45 graus.

c. A prova de Lógica de Programação estava fácil e a menor nota foi 6.5.

d. O sexo do meu primeiro filho é feminino.

02. Assinale os identificadores válidos:

a. A={1,2,3} b. M2 c. PARE! d. "MARIA" e. email@email

f. D/YU g. Avenida h. A*34 i. M(I) j. Teste_1

l. 5mar m. KJO&U n. LKJHHG o. KhMjh p. x<y

q. US$ r. df_2_9_df s. num-4 t. CEP u. abelha

03. Considere as seguintes variáveis: Nome, RA, Nota e Sexo. Suponha que essas variáveis sejamutilizadas para armazenar o nome do aluno, o registro de aluno, a nota do aluno e o sexo doaluno, respectivamente. Declare as variáveis corretamente, associando o tipo de dado adequadoque será armazenado para cada informação.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

22

Page 29: Apostila Algoritmos

04. Encontre os erros da seguinte declaração de variáveis:

Declarar

Cor, X lógico;

XLM, A, tamanho, R$ numérico_real;

X, Idade alfanumérico;

Nome, sexo numérico_inteiro;

4. Expressões Aritméticas e Lógicas

Uma expressão aritmética é um conjunto de operadores e operandos dispostos numadeterminada ordem. Nesse caso, os operadores podem ser aritméticos e os operandos podem serconstantes ou variáveis inteiras ou reais. O resultado de uma expressão aritmética será semprenumérica.

Uma expressão lógica também é um conjunto de operadores e operandos dispostos numadeterminada ordem. Nesse caso, os operadores podem ser relacionais ou lógicos e os operandospodem ser relações, constantes ou variáveis inteiras, reais, alfanuméricas ou lógicas. O resultadode uma expressão lógica será sempre lógico, ou seja, verdadeiro ou falso.

4.1. Operadores Aritméticos

Pseudocódigo

Os operadores aritméticos pertencem a um conjunto de símbolos que representam as operaçõesmatemáticas básicas, que são:

Figura 9 – Operadores aritméticos básicos

Além dos operadores aritméticos básicos, consideraremos, para pseudocódigo, operadoresaritméticos auxiliares para outros cálculos, que são:

Copyright Faculdade IBTA

23

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Operador Função Exemplo

+ adição 5 + 3

- subtração 2 - a

* multiplicação b * c

/ divisão d / 10

Page 30: Apostila Algoritmos

Figura 10 – Operadores aritméticos auxiliares

Java

Os operadores aritméticos básicos em Java são os mesmos apresentados na Figura 9. Osoperadores aritméticos auxiliares seguem a simbologia própria do java, como se segue:

Figura 11 – Operadores aritméticos auxiliares em Java

Para a utilização dos operadores Math.pow e Math.sqrt, necessitamos importar, no código fontedo Java, a seguinte biblioteca: java.Math.*;.

Prioridades

Para resolver expressões aritméticas em pseudocódigo, devemos obedecer a uma hierarquia deprioridades entre operadores aritméticos que é a seguinte:

Figura 12 – Prioridades entre operadores aritméticos

Operadores unários

No Java, além dos operadores aritméticos básicos e auxiliares, podemos usar também osoperadores unários (operadores que suportam apenas um operando), como se segue:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

24

Operador Função Exemplo

Math.pow potenciação Math.pow(2,3)

Math.sqrt radiação Math.sqrt(9)

% resto da divisão 7 % 3

parênteses mais inteirospot rad* / div mod+ -

Operador Função Exemplo Resultado

pot potenciação pot(2,3) 23 = 8

rad radiciação rad(9) 9 = 3

mod resto da divisão 7 mod 3 resto da divisão = 1

div quociente da divisão 7 div 3 quoc. da divisão = 2

Page 31: Apostila Algoritmos

Figura 13 – Operadores unários em Java

4.2. Operadores Relacionais

Pseudocódigo

Os operadores relacionais pertencem a um conjunto de símbolos que representam ascomparações possíveis entre dois valores de mesmo tipo de dados. Esses valores podem serconstantes, variáveis ou expressões aritméticas. Os operadores relacionais podem ser:

Figura 14 – Operadores relacionais

Java

Os operadores relacionais em Java têm uma pequena diferença dos operadores relacionais empseudocódigo e são representados como segue:

Copyright Faculdade IBTA

25

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Operador Função Exemplo Resultado

> maior que 3 > 2 Verdadeiro

< menor que 3 < 2 Falso

> = maior ou igual a 5 - 2 > = 1 + 2 Verdadeiro

< = menor ou igual a 5 - 2 < = 1 + 2 Verdadeiro

= igual a 10 = 9 Falso

< > diferente de 10 < > 10 Falso

Operador Função Exemplo Equivalência

+ + pré-incremento + + x x = x + 1(incrementa e logo

depois usa o valor de x)

+ + pós-incremento y + + x = x + 1(usa o valor de x e logo

depois incrementa)

- - pré-decremento - - z y = y - 1(decrementa e logo

depois usa o valor de y)

- - pós-decremento k - - y = y - 1(usa o valor de y e logo

depois decrementa)

+ = atribui a adição a + = 2 a = a + 2

- = atribui a subtração b - = 5 b = b - 5

* = atribui a multiplicação c * = 9 c = c * 9

/ = atribui a divisão d / = 7 d = d / 7

% = atribui o resto da div. e % = 8 e = e % 8

Page 32: Apostila Algoritmos

Figura 15 – Operadores relacionais em Java

Prioridades

Para resolver expressões lógicas em pseudocódigo, não há uma hierarquia de prioridades entreoperadores relacionais que devemos obedecer.

4.3. Operadores Lógicos

Pseudocódigo

Os operadores lógicos pertencem a um conjunto de símbolos que representam os conectivosbásicos. Esses conectivos formam novas proposições compostas a partir de outras proposiçõessimples. Os operadores lógicos podem ser:

Figura 16 – Operadores lógicos

Tabela Verdade

A tabela verdade determina todos os resultados possíveis de uma combinação entre valores devariáveis lógicas. Esses resultados possuem somente dois valores: verdadeiro ou falso. Paraexemplificar o uso dos operadores lógicos, construiremos uma tabela verdade, que se segue:

Figura 17 – Tabela verdade

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

26

Operador Função Exemplo Resultado

> maior que 1 > 8 Falso

< menor que 1 < 8 Verdadeiro

> = maior ou igual a - 2 > = 1 + 5 Falso

< = menor ou igual a - 2 < = 7 - 2 Verdadeiro

= = igual a 10 = = 9 Falso

! = diferente de 10 ! = 9 Verdadeiro

Operador Função

não negação

e conjunção

ou disjunção

A B não A A e B A ou B

V V F V V

V F F F V

F V V F V

F F V F F

Page 33: Apostila Algoritmos

Java

Os operadores lógicos em Java são representados como segue:

Figura 18 – Operadores lógicos em Java

Prioridades

Para resolver expressões lógicas em pseudocódigo, devemos obedecer a uma hierarquia deprioridades entre operadores lógicos que é a seguinte:

Figura 19 – Prioridades entre operadores lógicos

4.4. Prioridades entre Operadores

Para resolver expressões que contenham expressões lógicas e aritméticas, com operandos,operadores aritméticos, lógicos e relacionais, existe uma prioridade entre os operadores que é aseguinte:

Figura 20 – Prioridades entre operadores lógicos

4.5. Exemplo com Operadores

1. Expressões aritméticas

a. 5 * 2 – 3 + 14 / 2 + 9

10 – 3 + 7 + 9

9

Copyright Faculdade IBTA

27

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Operador Função

! negação

&& conjunção

|| disjunção

nãoe ou

parênteses mais internosoperadores aritméticosoperadores relacionaisoperadores lógicos

Page 34: Apostila Algoritmos

b. 5 – pot(2 , 3) + 4 – 2 * rad(4)

5 – 8 + 4 – 2 * 2

5 – 8 + 4 – 4

– 3

c. pot(3 – 1 , 2) – 7 + rad(8 + 1) * 2

pot(2 , 2) – 7 + rad(9) * 2

4 – 7 + 3 * 2

4 – 7 + 6

3

2. Expressões lógicas com operadores relacionais e aritméticos

a. 5 * 2 = 4 + 10 / 2

10 = 4 + 5

10 = 9

F

b. 5 mod 2 + 3 < pot(3 , 2) * 10

1 + 3 < 9 * 10

4 < 90

V

c. 5 div 2 – 1 >= 4 / 2 + 7

2 – 1 >= 2 + 7

1 >= 9

F

3. Expressões lógicas com operadores lógicos, relacionais e aritméticos

a. 3 < 7 e 5 * 2 = 2 + 1

3 < 7 e 10 = 3

V e F

F

b. pot(2 , 3) <= rad(9) ou 2 * 3 – 6 / 3 = 4

8 <= 3 ou 6 – 2 = 4

F ou 4 = 4

F ou V

V

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

28

Page 35: Apostila Algoritmos

c. não V ou 2 * 3 mod 4 / 2 – pot(2 , 1) + 7 = 3 e 4 * 7 > 12

não V ou 6 mod 2 – 2 + 7 = 3 e 28 > 12

não V ou 0 – 2 + 7 = 3 e V

não V ou 5 = 3 e V

não V ou F e V

F ou F e V

F ou F

F

Exercícios com Operadores

01. Calcule o resultado das seguintes expressões aritméticas:

a. 5 * 9 mod 2 – 4 / 2

b. 4 – 7 div 2 + pot(2 , 4) / rad(4)

c. rad(pot(3 , 2)) + pot(2 , 3) mod rad(4) – 8 / 2

d. rad(16) div 9 / 3 – 4 * 3 – pot(5 + 3 , rad(9))

e. rad(16 mod 4) + 5 * 2 / 10 – pot(8 / 2 , 2 div 2)

f. rad(16) / 2 + 2 * 5 mod 3 / 1 * pot(3 , 2 + 4)

g. rad(rad(16)) + pot(pot(2 , 2) , pot(2 , 3)) + 5 * 4 / 2

h. rad(rad(pot(2 , 4))) + pot(rad(4) , pot(rad(4) , 3)) + 9 – 5 * 4

i. 5 * 3 mod 5 + 4 div 8 / 2 + 5 mod (4 + 2)

j. rad(100) mod pot(4 , 3) – pot(2 , 4) div 8 / 2 + 5 – 3 * 2

02. Calcule o resultado das seguintes expressões lógicas com operadores relacionais e aritméticos:

a. 3 * 8 mod 2 = – 20 / 4

b. 5 – 10 div 3 > pot(3 , 3) / rad(25)

c. rad(pot(3 , 2)) < pot(5 , 2) mod rad(49) – 81 / 9

d. rad(81) div 8 / 3 – 4 >= 5 – pot(10 – 3 , rad(4))

e. rad(15 mod 3) + 15 * 12 / 6 <= pot(10 / 5 , 12 div 10)

f. rad(100) / 10 + 12 = 10 mod 25 / 5 * pot(5 , 2 + 1)

g. rad(rad(81)) + pot(pot(2 , 3) , pot(2 , 2)) <= 15 * 10 / 5

h. rad(rad(pot(3 , 4))) + pot(rad(16) , pot(rad(4) , 2)) >= 19 – 15 * 2

i. 27 * 25 mod 13 + 51 div 3 > 12 + 35 mod (17 – 12)

j. rad(36) mod pot(2 , 3) – pot(3 , 4) div 18 / 6 < 25 – 13 * 2

Copyright Faculdade IBTA

29

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 36: Apostila Algoritmos

03. Calcule o resultado das seguintes expressões lógicas com operadores lógicos, relacionais earitméticos:

a. 2 = 10 mod 2 e – 16 > 4

b. 5 – 10 div 3 > pot(3 , 3) ou rad(25) = 5

c. não F e rad(pot(3 , 2)) < pot(5 , 2) ou 5 mod rad(49) >= 81 / 9

d. não V ou rad(81) div 8 / 3 – 4 >= 5 – pot(10 – 3 , rad(4))

e. rad(15 mod 3) <= 15 ou 12 / 6 <= pot(10 / 5 , 12 div 10)

f. rad(100) / 10 + 12 = 10 mod 25 ou 5 * pot(5 , 2 + 1) e não V

g. rad(rad(81)) > 5 e pot(pot(2 , 3) , pot(2 , 2)) <= 15 e 10 / 5 = 32

h. rad(rad(pot(3 , 4))) > 3 ou pot(rad(16), pot(rad(4) , 2)) >= 19 ou – 15 * 2 = 7

i. não F ou 27 * 25 mod 13 < 91 e 51 div 3 > 12 ou 35 mod (17 – 12) >= 13

j. rad(36) mod pot(2 , 3) >= 10 ou não V e – pot(3 , 4) div 18 / 6 < 25 – 13 * 2

5. Estrutura Seqüencial

Uma estrutura seqüencial é aquela em que as ações de um algoritmo são executadas numaordem seqüencial, ou seja, de cima para baixo e da esquerda para a direita. Para o pseudocódigoadotado nesta apostila, convencionaremos que o uso do ponto-e-vírgula (;) determina o final deuma ação.

Em qualquer estrutura de algoritmos, para expressar a entrada de dados, o processamentodesses dados e a saída de resultados usamos os comandos de atribuição, comandos de entradae comandos de saída, os quais veremos a seguir:

5.1. Operador de Atribuição (�) e Comandos de Atribuição

O operador de atribuição, no nosso pseudocódigo representado pelo operador de atribuição � ,serve para atribuir um determinado valor para uma variável, tendo o cuidado de verificar se o valorque está sendo atribuído à variável tem o tipo de dado compatível, ou seja, se uma variável x foideclarada como inteiro, só é permitido atribuir valores inteiros à variável x.

Pseudocódigo

O comando de atribuição em pseudocódigo terá a seguinte regra sintática:

<nome da variável> � <expressão> ;

onde expressão pode ser uma expressão lógica, aritmética ou lógica.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

30

Page 37: Apostila Algoritmos

Por exemplo, vamos considerar que as variáveis x, y e z foram declaradas como do tiponumérico_inteiro:

x � 25;

y � x + 15 – 3;

z � y – x + rad(x) – pot(y , 2);

Java

O comando de atribuição em Java será o igual (=) e sua regra sintática fica praticamenteinalterada em relação ao pseudocódigo:

<nome da variável> = <expressão> ;

onde expressão pode ser uma expressão lógica, aritmética ou lógica.

Por exemplo, vamos considerar que as variáveis x, y e z foram declaradas como do tipo int:

x = 25;

y = x + 15 – 3;

z = y – x + Math.sqrt(x) – Math.pow(y , 2);

5.2. Comandos de Entrada e Saída

Os comandos de entrada e saída são utilizados para que haja uma interação entre o algoritmo e ousuário do algoritmo. Nesse caso, com o comando de entrada, é possível que o usuário forneçadados para serem processados pelo algoritmo e, com o comando de saída, é possível que ousuário veja o resultado do processamento dos dados.

Pseudocódigo – Comandos de Entrada

Para que o usuário possa entrar com dados num algoritmo, utilizaremos a seguinte regra sintáticapara o comando de entrada:

ler (<nome da variável>);

Por exemplo, vamos considerar que uma variável num foi declarada como do tiponumérico_real:

ler (num);

Quando esse comando for executado, o algoritmo espera que o usuário digite algum valor real e ovalor digitado será atribuído à variável num. Por exemplo, se o usuário digitar 5, então a variávelnum passará a ter o valor 5.0.

Copyright Faculdade IBTA

31

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 38: Apostila Algoritmos

Podemos também receber valores para várias variáveis com um mesmo comando de entrada,seguindo a seguinte regra sintática:

ler (<nome da variável>, <nome da variável> , ... , <nome da variável>);

Por exemplo, vamos considerar que as variáveis num1, num2 e num3 foram declaradas como dotipo numérico_real:

ler (num1, num2, num3);

Quando esse comando for executado, o algoritmo espera que o usuário digite três valores reaisseparados pela tecla <enter> e os valores digitados serão atribuídos às variáveis num1, num2 enum3. Por exemplo, se ele digitar: 5.2 <enter> -2.34 <enter> 0.0 <enter>, então as variáveisnum1, num2 e num3 passarão a ter os valores 5.2, -2.34 e 0.0, respectivamente.

Java – Comandos de Entrada

Para que o usuário possa entrar com dados num programa Java, utilizaremos o métodoJOptionPane.showInputDialog definido dentro do pacote javax.swing. Para isso, o programadeve fazer o import dessa biblioteca no início do programa da seguinte forma:

import javax.swing.*;

Utilizaremos a seguinte regra sintática para o comando de entrada:

<nome da variável> = <conversão tipos> (JOptionPane.showInputDialog("<msg>"));

Por exemplo, vamos considerar que uma variável num foi declarada como do tipo double:

num = Double.parseDouble(JOptionPane.showInputDialog("Digite umnúmero"));

Quando esse comando for executado, o programa espera que o usuário digite algum valor que érecebido pelo método como do tipo String. Esse valor é convertido para o tipo double e atribuídoà variável num. Por exemplo, se o usuário digitar 5, então o método recebe a String “5", convertepara o double 5.0 e a variável num passará a ter o valor 5.0.

Observação: note que a conversão de tipos só é necessária se a variável que receber o retornodo método showInputDialog não for do tipo String.

Os métodos acima explicados utilizam janelas para a comunicação com o usuário, ou seja, asmensagens de coleta de dados são feitas com o uso de janelas com uma interface gráfica maisamigável.

Outra forma utilizada para receber dados do usuário é usando o vetor2 de argumentos. Essaforma não possui uma interface gráfica e a coleta de dados é feita pela tela do MS-DOS. Quandoexecutamos um determinado arquivo, por exemplo, arquivo.class, usamos o seguinte comandono prompt do DOS:

c:\ java arquivo

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

32

—————————————————2 O conceito de vetor será visto no capítulo 10.

Page 39: Apostila Algoritmos

Podemos também passar argumentos como parâmetro para o programa que está sendoexecutado, por exemplo, da seguinte forma:

c:\ java arquivo 1 Logica

O dado String “1" e o dado String ”Logica" estão sendo passados como parâmetros para ométodo principal. Mas onde?

O cabeçalho do método principal de qualquer programa Java é:

public static void main(String arg [])

arg é o nome dado para um vetor de String que recebe os argumentos passados comoparâmetros quando o programa é executado. No nosso exemplo, dois valores (“1" e ”Logica")foram passados como parâmetros, nesse caso, nosso vetor arg possui esses dois valores, um nasua posição 0 e um na sua posição 1.

Utilizaremos a seguinte regra sintática para pegar os dados desse vetor arg:

<nome da variável> = <conversão de tipos>(arg[<posição>]);

Por exemplo:

int num = Integer.parseInt(arg[0]);

String n = arg[1];

No primeiro exemplo, pega-se o conteúdo do vetor arg na posição 0, converte-se esse dado parao tipo int e armazena-se na variável num. No segundo exemplo, pega-se o conteúdo do vetor arg

na posição 1 e armazena-se na variável n.

Note que podemos passar tantos argumentos como parâmetros quantos forem necessários e aordem dos argumentos digitados é sempre a mesma que aparece no vetor arg.

Observação: note que a conversão de tipos só é necessária se a variável que receber o conteúdodo vetor arg não for do tipo String.

Pseudocódigo – Comandos de Saída

Para que o usuário possa ver o resultado do processamento dos dados ou alguma mensagemenviada pelo algoritmo, utilizaremos a seguinte regra sintática para o comando de saída:

escrever (<nome da variável>);

Por exemplo, vamos considerar que uma variável num foi declarada como do tiponumérico_inteiro e o valor 5 lhe foi atribuído:

num � 5;

escrever (num);

Copyright Faculdade IBTA

33

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 40: Apostila Algoritmos

Quando o comando escrever for executado, o algoritmo mostra na tela do usuário o conteúdo davariável num, nesse caso, o valor 5, já convertido para o tipo alfanumérico.

Ao invés de mostrar para o usuário o conteúdo de uma variável, podemos mostrar um dadoalfanumérico, conforme a seguinte regra sintática abaixo:

escrever ("<mensagem>");

Por exemplo:

escrever ("Disciplina de Lógica de Programação");

Quando o comando escrever for executado, o algoritmo mostra na tela do usuário a seguintemensagem: Disciplina de Lógica de Programação.

Com o mesmo comando de saída, podemos enviar uma mensagem cujo conteúdo seja aconcatenação de vários dados do tipo alfanuméricos, sejam eles do tipo alfanuméricos ou daconversão de outros tipos de dados para o tipo alfanumérico, seguindo a seguinte regrasintática:

escrever ("<msg>", <nome var> , ... , "<msg>", <nome var>, ... , "<msg>");

Por exemplo, vamos considerar que as variáveis num1 e num2 foram declaradas como do tiponumérico_inteiro e os valores 10 e 5 lhes foram, respectivamente, atribuídos:

num1 � 10;

num2 � 5;

escrever ("Maria tem" , num1 , "anos e João tem" , num2 , "anos");

Quando o comando escrever for executado, o algoritmo mostra na tela do usuário a seguintemensagem: Maria tem 10 anos e João tem 5 anos. Perceba que os conteúdos que estão entreaspas duplas (“Maria tem ”, “ anos e João tem ” , “ anos”) são dados do tipo alfanuméricos e suaimpressão na tela não se altera, enquanto que num1 e num2 são dados do tiponumérico_inteiro e o que é mostrado na tela não são os nomes das variáveis mas sim os seusconteúdos (10 , 5) já convertidos para o tipo alfanumérico. Note ainda que a vírgula dentro docomando escrever tem a função de concatenar as informações, mostrando ao final uma únicamensagem.

Java – Comandos de Saída

Para que o usuário possa ver o resultado do processamento dos dados ou alguma mensagemenviada pelo programa Java, utilizaremos o método JOptionPane.showMessageDialog definidodentro do pacote javax.swing. Para isso, o programa deve fazer o import dessa biblioteca noinício do programa da seguinte forma:

import javax.swing.*;

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

34

Page 41: Apostila Algoritmos

Utilizaremos a seguinte regra sintática para o comando de saída:

JOptionPane.showMessageDialog(null , "<mensagem>");

Por exemplo, vamos considerar que uma variável num foi declarada como do tiponumérico_inteiro e o valor 5 lhe foi atribuído:

num = 5;

JOptionPane.showMessageDialog(null, num);

Quando o comando JOptionPane.showMessageDialog for executado, o programa mostra natela do usuário o conteúdo da variável num, nesse caso, o valor 5, já convertido para o tipoString.

Ao invés de mostrar para o usuário o conteúdo de uma variável, podemos mostrar um dadoalfanumérico, conforme a seguinte regra sintática abaixo:

JOptionPane.showMessageDialog(null, "<mensagem>");

Por exemplo:

JOptionPane.showMessageDialog(null, "Disciplina de Lógica deProgramação");

Quando o comando JOptionPane.showMessageDialog for executado, o programa mostra natela do usuário a seguinte mensagem: Disciplina de Lógica de Programação.

Com o mesmo comando de saída, podemos enviar uma mensagem cujo conteúdo seja aconcatenação de vários dados do tipo String, sejam eles do tipo String ou da conversão deoutros tipos de dados para o tipo String, seguindo a seguinte regra sintática:

JOptionPane.showMessageDialog(null, "<msg>"+ <nome var> + ... + "<msg>" +

<nome var> + ... + "<msg>");

Por exemplo, vamos considerar que as variáveis num1 e num2 foram declaradas como do tipoint e os valores 10 e 5 lhes foram, respectivamente, atribuídos:

num1 = 10;

num2 = 5;

JOptionPane.showMessageDialog(null, "Maria tem" + num1 + "anos eJoão tem" + num2 + "anos");

Quando o comando JOptionPane.showMessageDialog for executado, o programa mostra natela do usuário a seguinte mensagem: Maria tem 10 anos e João tem 5 anos. Perceba que osconteúdos que estão entre aspas duplas são dados do tipo String e sua impressão na tela não sealtera, enquanto que num1 e num2 são dados do tipo int e o que é mostrado na tela não são osnomes das variáveis mas sim os seus conteúdos já convertidos para o tipo String. Note ainda queo sinal de mais (+) dentro do comando JOptionPane.showMessageDialog tem a função deconcatenar as informações, mostrando ao final uma única mensagem.

Copyright Faculdade IBTA

35

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 42: Apostila Algoritmos

Os métodos acima explicados utilizam janelas para a comunicação com o usuário, ou seja, asmensagens de aviso são feitas com o uso de janelas com uma interface gráfica mais amigável.

Outro método utilizado para mostrar o resultado de um processamento de dados ou algumamensagem para o usuário é o método System.out.print ou System.out.println. A únicadiferença entre esses dois métodos é que o primeiro somente mostra a mensagem passada comoparâmetro e o segundo, além de mostrar a mensagem, pula o cursor para a linha de baixo. Essesmétodos não possuem uma interface gráfica e a mensagem é mostrada na tela do MS-DOS.Utilizaremos as seguintes regras sintáticas para este comando de saída:

System.out.print ("<mensagem>");

System.out.println ("<mensagem>");

Todas as propriedades de quantidade de parâmetros e concatenação de Strings vistos para ométodo JOptionPane.showMessageDialog também valem para os métodos System.out.println

e System.out.print.

5.3. Blocos

Um bloco é representado por um conjunto de ações cujo início e fim são bem definidos. Umalgoritmo pode ser considerado um bloco. As variáveis declaradas dentro de um bloco sãoreconhecidas somente dentro desse bloco.

Pseudocódigo

Em pseudocódigo, um bloco tem seu início com a palavra início e seu término com a palavrafim;. Um algoritmo pode ser considerado um bloco, no entanto, seu início é determinado com apalavra início_algoritmo e seu término com a palavra fim_algoritmo.

Por exemplo:

Algoritmo Exemplo

início_algoritmo // início do bloco ou algoritmo

Declarar

// declaração das variáveis e/ou constantes

// seqüência dos comandos

fim_algoritmo. // fim do bloco ou algoritmo

Nesse exemplo, o bloco inicia-se com a palavra início_algoritmo e termina com a palavrafim_algoritmo.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

36

Page 43: Apostila Algoritmos

Note que um algoritmo deve estar bem identado, isto é, deve estar numa formação que facilite oseu entendimento. No exemplo acima, veja que as palavras início_algoritmo e fim_algoritmo

aparecem ligeiramente à direita do cabeçalho do algoritmo Algoritmo Exemplo; a palavraDeclarar aparece ligeiramente à direita da palavra início_algoritmo porque as declarações estãodentro do bloco; as declarações de variáveis e/ou constantes aparecem ligeiramente à direita dapalavra Declarar, pois as declarações fazem parte do bloco de declaração; e, por fim, aseqüência de comandos aparece ligeiramente à direita da palavra início_algoritmo, masalinhado com a palavra Declarar, pois a seqüência de comandos também faz parte do bloco doalgoritmo.

Java

Em programas Java, um bloco tem seu início com a chave aberta, {, e seu término com a chavefechada, }. Um programa Java também pode ser considerado um bloco com início e términorepresentados pela chave aberta e chave fechada, respectivamente.

Por exemplo:

// nome da classe

class Exemplo

{ // início do bloco que limita a classe

// cabeçalho do método principal

public static void main(String argumentos[ ])

{ // início do bloco que limita o método principal

// declaração das variáveis e/ou constantes

// seqüência dos comandos

} // fim do bloco que limita o método principal

} // fim do bloco que limita a classe

Nesse exemplo, o bloco inicia-se com a chave aberta e termina com a chave fechada. Nessecaso, temos dois blocos, o bloco da classe exemplo e o bloco do método principal main().

Note que um programa Java também deve estar bem identado, isto é, deve estar numa formaçãoque facilite o seu entendimento. No exemplo acima, veja que as chaves aberta e fechadaaparecem ligeiramente à direita do nome da classe class Exemplo e ligeiramente à direita dométodo principal main(); as declarações de variáveis e/ou constantes aparecem ligeiramente àdireita da chave aberta e da chave fechada do método principal main(), pois as declaraçõesfazem parte do bloco do método principal; e, por fim, a seqüência de comandos também apareceligeiramente à direita da chave aberta e da chave fechada do método principal main(), masalinhada com as declarações, pois a seqüência de comandos também faz parte do bloco dométodo principal main().

Copyright Faculdade IBTA

37

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 44: Apostila Algoritmos

5.4. Estrutura Seqüencial

Uma estrutura seqüencial é aquela em que as ações de um algoritmo são executadas numaordem seqüencial, ou seja, de cima para baixo e da esquerda para a direita. Para o pseudocódigoadotado nesta apostila, convencionaremos que o uso do ponto-e-vírgula (;) determina o final deuma ação.

Pseudocódigo

Em pseudocódigo, a estrutura seqüencial representa um conjunto de ações ou comandos que sãoexecutados num determinado fluxo. Numa estrutura sequëncial, este fluxo é executado de cimapara baixo e da esquerda para a direita. A estrutura seqüencial para pseudocódigo segue aseguinte regra sintática:

Algoritmo <nome do algoritmo>

início_algoritmo

Declarar

// declaração das variáveis e/ou constantes

<comando_1>;

<comando_2>;

...

<comando_n>;

fim_algoritmo.

Por exemplo:

Algoritmo Exemplo_Sequencial

início_algoritmo

Declarar

x, y alfanumérico;

ler(x, y);

escrever("Você digitou primeiro o" , x);

escrever("Você digitou logo em seguida o" , y);

fim_algoritmo.

Esse exemplo caracteriza uma estrutura seqüencial, pois a execução desse algoritmo, desde seuinício até o seu término, segue um fluxo: primeiro as variáveis do tipo alfanumérico x e y sãodeclaradas; depois essas variáveis recebem valores digitados pelo usuário; depois umamensagem com o valor de x é apresentada ao usuário; e, por último, uma mensagem com o valorde y é apresentada na tela.

Se o usuário digitou 5 e 10, o valor de x será 5 e o valor de y será 10. O resultado da execuçãodeste exemplo será:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

38

Page 45: Apostila Algoritmos

Você digitou primeiro o 5

Você digitou logo em seguida o 10

Java

Em Java, a estrutura seqüencial não difere do pseudocódigo em relação ao comportamento, poistambém representa um conjunto de ações ou comandos que são executados num determinadofluxo. Este fluxo, num programa seqüencial em Java, também é executado de cima para baixo eda esquerda para a direita. A estrutura seqüencial para Java segue a seguinte regra sintática:

class <nome da classe>

{

public static void main(String argumentos[ ])

{

// declaração das variáveis e/ou constantes

<comando_1>;

<comando_2>;

...

<comando_n>;

}

}

Por exemplo:

class Exemplo_Sequencial

{

public static void main(String arg[ ])

{

String x, y;

x = JOptionPane.showInputDialog("Digite um valor");

y = JOptionPane.showInputDialog("Digite um valor");

JOptionPane.showMessageDialog(null, "Você digitouprimeiro o " + x);

JOptionPane.showMessageDialog(null, "Você digitou logoem seguida o " + y);

System.exit(0);

}

}

Copyright Faculdade IBTA

39

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 46: Apostila Algoritmos

Esse exemplo caracteriza uma estrutura seqüencial, pois a execução desse programa, desde seuinício até o seu término, segue um fluxo: primeiro as variáveis do tipo String x e y são declaradas;depois a variável x recebe um valor digitado pelo usuário; depois a variável y recebe um valordigitado pelo usuário; depois uma mensagem com o valor de x é apresentada ao usuário; depoisuma mensagem com o valor de y é apresentada na tela; e, por fim; o método System.exit(0), quefinaliza e sai do programa, é executado.

O resultado da execução desse exemplo é:

Digite um valor

// suponha que o usuário digitou 5 e clicou no botão ok

Digite um valor

// suponha que o usuário digitou 10 e clicou no botão ok

Você digitou primeiro o 5 // e o usuário clicou no botão ok

Você digitou logo em seguida o 10 // e o usuário clicou no botão ok

5.5. Funções de Tratamento de Caracteres em Java

Algumas vezes, precisamos trabalhar com caracteres em Java e para isso podemos utilizaralguns comandos existentes:

• static boolean isDigit(char)

Verifica se determinado caracter é digito.

• static boolean isLowerCase(char)

Verifica se determinado caracter é minúsculo.

• static boolean isUpperCase(char)

Verifica se determinado caracter é maiúsculo.

• static boolean isSpace(char)

Verifica se determinado caracter é um espaço.

• static char toLowerCase(char)

Retorna a conversão de determinado caracter para minúsculo.

• static char toUpperCase(char)

Retorna a conversão de determinado caracter para maiúsculo.

• boolean equals(Object)

Verifica se um objeto é igual a outro.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

40

Page 47: Apostila Algoritmos

• boolean equalsIgnoreCase(String)

Verifica se um String é igual a outro sem diferenciar letras maiúsculas de minúsculas.

• String concat(String)

Retorna dois Strings concatenados em um único String.

• String toString()

Retorna a conversão de determinado valor num String.

• int length()

Retorna o tamanho de um String.

• boolean compareTo(String)

Verifica se dois Strings são iguais.

5.6. Exemplos de Estrutura Seqüencial em Pseudocódigo

1. Desenvolva um algoritmo que receba três valores numéricos inteiros e mostre a soma dessestrês números.

Algoritmo Somar

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

num1, num2, num3, soma numérico_inteiro;

// mensagem ao usuário

escrever ("Digite três valores inteiros");

// entrada de dados

ler (num1 , num2 , num3);

// processamento de dados

soma � num1 + num2 + num3;

// saída de resultados

escrever ("A soma dos três valores digitados é: " , soma);

fim_algoritmo.

Copyright Faculdade IBTA

41

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 48: Apostila Algoritmos

2. Desenvolva um algoritmo que receba quatro notas bimestrais, calcule e mostre a médiaaritmética dessas quatro notas.

Algoritmo MediaAritmetica

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

n1, n2, n3, n4, media numérico_real;

// mensagem ao usuário

escrever ("Digite as quatro notas bimestrais");

// entrada de dados

ler (n1 , n2 , n3 , n4);

// processamento de dados

media � (n1 + n2 + n3 + n4) / 4;

// saída de resultados

escrever ("A média é: " , media);

fim_algoritmo.

3. Desenvolva um algoritmo que receba a base e a altura de um triângulo, calcule e mostre a áreadeste triângulo.

Algoritmo AreaTriangulo

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

base, altura, area numérico_real;

// mensagem ao usuário

escrever ("Digite a base e a altura do triângulo");

// entrada de dados

ler (base , altura);

// processamento de dados

area � (base * altura) / 2;

// saída de resultados

escrever ("A área do triângulo é: " , area);

fim_algoritmo.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

42

Page 49: Apostila Algoritmos

5.7. Exemplos de Estrutura Seqüencial em Java

1. Desenvolva um algoritmo que receba três valores numéricos inteiros e mostre a soma dessestrês números.

class Somar

{

public static void main (String args [ ])

{

// declaração de variáveis e/ou constantes

int num1, num2, num3, soma;

// mensagem ao usuário e entrada de dados

num1 = Integer.parseInt(JOptionPane.showInputDialog("Digite um valor inteiro"));

num2 = Integer.parseInt(JOptionPane.showInputDialog("Digite um valor inteiro"));

num3 = Integer.parseInt(JOptionPane.showInputDialog("Digite um valor inteiro"));

// processamento de dados

soma = num1 + num2 + num3;

// saída de resultados

System.out.println ("A soma dos três valores digitadosé: " + soma);

System.exit(0);

} // fim do void main

} // fim da classe Somar

2. Desenvolva um algoritmo que receba quatro notas bimestrais, calcule e mostre a médiaaritmética dessas quatro notas.

class MediaAritmetica

{

public static void main (String args [ ])

{

// declaração de variáveis e/ou constantes

double n1, n2, n3, n4, media;

// mensagem ao usuário e entrada de dados

Copyright Faculdade IBTA

43

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 50: Apostila Algoritmos

n1 = Double.parseDouble(JOptionPane.showInputDialog("Digite uma nota bimestral"));

n2 = Double.parseDouble(JOptionPane.showInputDialog("Digite uma nota bimestral"));

n3 = Double.parseDouble(JOptionPane.showInputDialog("Digite uma nota bimestral"));

n4 = Double.parseDouble(JOptionPane.showInputDialog("Digite uma nota bimestral"));

// processamento de dados

media = (n1 + n2 + n3 + n4) / 4;

// saída de resultados

System.out.println ("A média é: " + media);

System.exit(0);

} // fim do void main

} // fim da classe

3. Desenvolva um algoritmo que receba a base e a altura de um triângulo, calcule e mostre a áreadesse triângulo.

class AreaTriangulo

{

public static void main (String args [ ])

{

// declaração de variáveis e/ou constantes

double base, altura, area;

// mensagem ao usuário e entrada de dados

base = Double.parseDouble(JOptionPane.showInputDialog("Digite a base do triângulo"));

altura = Double.parseDouble(JOptionPane.showInputDialog("Digite altura do triângulo"));

// processamento de dados

area = (base * altura) / 2;

// saída de resultados

System.out.println ("A área do triângulo é: " + area);

System.exit(0);

} // fim do void main

} // fim da classe main

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

44

Page 51: Apostila Algoritmos

Exercícios de Algoritmos Seqüenciais

01. Desenvolva um algoritmo que receba o salário de um funcionário, calcule e mostre seu novosalário com reajuste de 15%.

02. Desenvolva um algoritmo que receba a base e a altura de um retângulo, calcule e mostre a áreadesse retângulo. Fórmula da área de um retângulo: A = base . altura.

03. Desenvolva um algoritmo que receba uma temperatura em graus Celsius (C), calcule e mostre atemperatura convertida para graus Fahrenheit (F).

Fórmula de conversão: F = (9.C + 160) / 5.

04. Desenvolva um algoritmo que receba uma temperatura em graus Kelvin (K), calcule e mostre atemperatura convertida para graus Celsius (C).

Fórmula de conversão: C = K - 273.

05. Desenvolva um algoritmo que receba dois valores inteiros para as variáveis x e y, efetue a trocados valores, ou seja, x passa a ter o valor de y e y passa a ter o valor de x e mostre os valorestrocados.

06. Desenvolva um algoritmo que receba os coeficientes a, b e c de uma equação de segundo grau(ax2 + bx + c), calcule e mostre as raízes reais dessa equação, considerando uma equação quepossui duas raízes reais.

07. Desenvolva um algoritmo que receba os valores do comprimento (C), da largura (L) e da altura (H)de um paralelepípedo, calcule e mostre o volume desse paralelepípedo. Fórmula do volume deum paralelepípedo: V = C . L . H.

08. Desenvolva um algoritmo que receba o salário bruto de um funcionário, calcule e mostre o saláriolíquido desse funcionário, sabendo que ele recebe 10% de gratificação calculados sobre o saláriobruto, mas paga 20% de imposto de renda também calculados sobre o salário bruto.

09. Desenvolva um algoritmo que receba o valor de um depósito em poupança, calcule e mostre ovalor após um mês de aplicação na poupança, sabendo que a poupança rende 5% ao mês.

10. Desenvolva um algoritmo que receba um valor em Real, calcule e mostre o valor convertido paraDólar.

11. Desenvolva um algoritmo que receba um valor em Euro, calcule e mostre o valor convertido paraReal.

12. Desenvolva um algoritmo que receba um valor numérico real, calcule e mostre o quadrado dessenúmero.

13. Desenvolva um algoritmo que receba dois valores numérico inteiro, calcule e mostre a soma doquadrado desses dois números.

Copyright Faculdade IBTA

45

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 52: Apostila Algoritmos

14. Desenvolva um algoritmo que receba dois valores numérico real, calcule e mostre o quadrado dadiferença desses dois números.

15. Desenvolva um algoritmo que receba o nome e o sobrenome de uma pessoa e mostre o nomeinteiro dessa pessoa.

16. Desenvolva um algoritmo que receba três valores numérico inteiro, calcule e mostre o cubo dasoma desses três números.

17. Desenvolva um algoritmo que receba dois valores numérico real, calcule e mostre a diferença docubo desses dois números.

18. Desenvolva um algoritmo que receba o nome, a idade e o sexo de uma pessoa e mostre essasinformações na tela.

19. Desenvolva um algoritmo que receba o raio (R) de uma circunferência, calcule e mostre ocomprimento dessa circunferência.

Fórmula do comprimento da circunferência: C = 2 . � . R.

20. Desenvolva um algoritmo que receba o raio (R) de uma circunferência, calcule e mostre a áreadessa circunferência. Fórmula da área: A = � . R2.

21. Desenvolva um algoritmo que receba o ano de nascimento de uma pessoa e o ano atual, calculee mostre a idade dessa pessoa e quantos anos essa pessoa terá daqui a 10 anos.

22. Desenvolva um algoritmo que receba o número de horas trabalhadas por um funcionário e quantoesse funcionário recebe por hora trabalhada, calcule e mostre o valor que deve ser recebido poresse funcionário.

23. Desenvolva um algoritmo que receba uma quantidade de um alimento em quilos, calcule e mostrequantos dias durará esse alimento para uma pessoa que consome 50 gramas desse alimento pordia.

24. Desenvolva um algoritmo que receba a altura de um degrau, calcule e mostre quantos degrausuma pessoa precisa subir se deseja estar a uma altura de 5 quilômetros.

25. Desenvolva um algoritmo que receba um valor numérico inteiro, calcule e mostre qual o quocientee o resto da divisão desse número por 3.

26. Desenvolva um algoritmo que receba os valores dos catetos (C1, C2) de um triângulo retângulo,calcule e mostre o valor da hipotenusa (H) desse triângulo. Fórmula do cálculo da hipotenusa deum triângulo retângulo. H2 = C12 + C22.

27. Desenvolva um algoritmo que receba os valores de dois ângulos de um triângulo qualquer, calculee mostre o valor do terceiro ângulo desse triângulo, sabendo que a soma dos três ângulos de umtriângulo é igual a 180.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

46

Page 53: Apostila Algoritmos

28. Desenvolva um algoritmo que receba um horário em horas, minutos e segundos, calcule e mostreeste mesmo horário convertido em minutos.

29. Desenvolva um algoritmo que receba a data de nascimento de uma pessoa e a data atual, calculee mostre a idade desta pessoa em anos, meses, dias e semanas.

30. Desenvolva um algoritmo que receba o valor de um produto, calcule e mostre o valor desseproduto após um desconto de 15%.

6. Estrutura de Decisão

Quando desenvolvemos um algoritmo ou programa estruturado, muitas vezes, precisamosinterferir no fluxo natural ou seqüencial que o algoritmo deve seguir. No entanto, precisamossaber controlar qual o fluxo que o algoritmo percorre do início até o fim de sua execução. Paraisso, utilizaremos os fluxos de controle, por exemplo, estrutura de decisão e estrutura derepetição.

Uma estrutura de decisão é um fluxo de controle utilizado para decidir qual o fluxo que o algoritmoseguirá. Uma estrutura de decisão determina qual conjunto de comandos ou bloco será executadoapós uma condição ser avaliada. Essa condição é representada por expressões lógicas erelacionais que podem ou não serem satisfeitas, isto é, podem retornar ao valor verdadeiro oufalso.

Uma estrutura de decisão pode ser simples, composta ou encadeada. Veremos a seguir como equando trabalhar com cada uma delas.

6.1. Estrutura de Decisão Simples (se/então)

Uma estrutura de decisão simples pode ser utilizada quando o algoritmo precisa testardeterminada condição antes de executar um conjunto de comandos. Nesse caso, uma condição éavaliada e, se seu resultado for verdadeiro, o conjunto de comandos dentro da estrutura dedecisão simples se/então é executado. Por outro lado, se o resultado da avaliação for falso, esseconjunto de comandos não fará parte do fluxo de execução do algoritmo.

Pseudocódigo

Na estrutura de decisão simples, utilizaremos as palavras se e então que representam aspalavras principais dessa estrutura e a palavra fimse; para determinar o fim do bloco de execuçãodessa estrutura. A estrutura de decisão simples para pseudocódigo segue a seguinte regrasintática:

Copyright Faculdade IBTA

47

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 54: Apostila Algoritmos

se (<condição>)

então

<comandos>;

fimse;

Por exemplo:

se (var < 0)

então

escrever(“O número” , var , “é negativo”);

fimse;

Nesse exemplo, a variável var possui um valor numérico e vai passar por uma avaliação, ou seja,a expressão var<0 será avaliada. Se o resultado de retorno dessa avaliação for verdadeira, entãoo comando escrever(...); será executado. Por outro lado, se o resultado da avaliação for falso,então o mesmo comando não será executado.

O resultado da execução desse exemplo é:

// se o valor de var for -5

O número –5 é negativo

Java

Na estrutura de decisão simples, utilizaremos a palavra if para representar a palavra principaldessa estrutura e chave aberta, {, e chave fechada, }, para representar o conjunto de comandosque fazem parte da estrutura. A estrutura de decisão simples para Java segue a seguinte regrasintática:

if (<condição>)

{

<comandos>;

}

Por exemplo:

if (var < 0)

{

System.out.print("O número " + var + " é negativo");

}

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

48

Page 55: Apostila Algoritmos

Nesse exemplo, assim como no pseudocódigo, a variável var possui um valor numérico e vaipassar por uma avaliação. Se o resultado de retorno dessa avaliação for verdadeiro, então ocomando System.out.print(...); será executado. Por outro lado, se o resultado da avaliação forfalso, então o comando não será executado.

O resultado da execução desse exemplo é:

// se o valor de var for -5

O número –5 é negativo

6.2. Estrutura de Decisão Composta (se/então/senão)

Uma estrutura de decisão composta é parecida com a estrutura de decisão simples. A diferençaentre as duas estruturas é que a primeira pode ser utilizada quando o algoritmo precisa testardeterminada condição, cujos resultados podem ser verdadeiro ou falso, antes de executar umconjunto de comandos. Neste caso, uma condição é avaliada e, se seu resultado for verdadeiro, oconjunto de comandos dentro da estrutura se/então é executado. Por outro lado, se o resultadoda avaliação for falso, o conjunto de comandos dentro da estrutura senão é executado.

Pseudocódigo

Na estrutura de decisão composta, utilizaremos as palavras se, então e senão que representamas palavras principais dessa estrutura e a palavra fimse; para determinar o fim do bloco deexecução dessa estrutura. A estrutura de decisão composta para pseudocódigo segue a seguinteregra sintática:

se (<condição>)

então

<comandos1>;

senão

<comandos2>;

fimse;

Por exemplo:

se (var < 0)

então

escrever(“O número” , var , "é negativo”);

senão

escrever(“O número” , var , “é não negativo”);

fimse;

Copyright Faculdade IBTA

49

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 56: Apostila Algoritmos

Nesse exemplo, a variável var possui um valor numérico e vai passar por uma avaliação, ou seja,a expressão var<0 será avaliada. Se o resultado de retorno dessa avaliação for verdadeiro, entãoo comando escrever(...); dentro da estrutura do então será executado. Por outro lado, se oresultado da avaliação for falso, então o comando escrever(...); dentro da estrutura do senão éexecutado. Note que somente os comandos de uma das duas estruturas então e senão sãoexecutados, ou seja, nunca as duas estruturas podem ser executadas num mesmo momento.

O resultado da execução desse exemplo é:

// se o valor de var for 5

O número 5 é não negativo

// se o valor de var for -5

O número –5 é negativo

Java

Na estrutura de decisão composta, utilizaremos as palavras if e else para representar as palavrasprincipais dessa estrutura e chave aberta, {, e chave fechada, }, para representar o conjunto decomandos que fazem parte da estrutura. A estrutura de decisão composta para Java segue aseguinte regra sintática:

if (<condição>)

{

<comandos1>;

}

else

{

<comandos2>;

}

Por exemplo:

if (var < 0)

{

System.out.print("O número " + var + " é negativo");

}

else

{

System.out.print("O número " + var + " é não negativo");

}

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

50

Page 57: Apostila Algoritmos

Nesse exemplo, assim como no pseudocódigo, a variável var possui um valor numérico e vaipassar por uma avaliação. Se o resultado de retorno dessa avaliação for verdadeiro, então ocomando System.out.print(...); dentro da estrutura do if será executado. Por outro lado, se oresultado da avaliação for falso, então o comando System.out.print(...); dentro da estrutura doelse é executado. Assim, como no pseudocódigo, somente os comandos de uma das duasestruturas if e else são executados, ou seja, nunca as duas estruturas podem ser executadasnum mesmo momento.

O resultado da execução desse exemplo é:

// se o valor de var for 5

O número 5 é não negativo

// se o valor de var for -5

O número –5 é negativo

6.3. Estrutura de Decisão Encadeada (se/ então ... / senão ...)

Uma estrutura de decisão encadeada pode ser utilizada quando o algoritmo precisa testar umconjunto de condições, cujos resultados podem ser verdadeiro ou falso. Dizemos que essaestrutura é encadeada, pois há estruturas de decisões dentro de outras estruturas de decisões.Para qualquer caso, cada condição é avaliada e, se seu resultado for verdadeiro, o conjunto decomandos dentro da estrutura se/então é executado. Por outro lado, se o resultado da avaliaçãofor falso, o conjunto de comandos dentro da estrutura senão é executado. Não existe limite para aestrutura de decisão encadeada, podemos ter quantas estruturas de decisão encadeadas foremnecessárias. Note que, para qualquer estrutura de decisão, no máximo, um único conjunto decomando será executado, aquele cuja avaliação de condição for sempre verdadeira.

Pseudocódigo

Na estrutura de decisão encadeada, utilizaremos as palavras se, então e senão que representamas palavras principais dessa estrutura e a palavra fimse; para determinar o fim do bloco deexecução dessa estrutura. Note que, para cada estrutura se que aparece, existe um fimse;

adequadamente localizado dentro da estrutura. A estrutura de decisão encadeada parapseudocódigo segue a seguinte regra sintática:

se (<condição1>)

então

se (<condição2>)

então

se (<condição3>)

então

... // continua com outra estrutura de seleção ou coloca os comandos

Copyright Faculdade IBTA

51

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 58: Apostila Algoritmos

senão

... // continua com outra estrutura de seleção ou coloca os comandos

fimse; // da condição 3

fimse; // da condição 2

senão

se (<condição4>)

então

se (<condição5>)

então

... // continua com outra estrutura de seleção ou coloca os comandos

senão

... // continua com outra estrutura de seleção ou coloca os comandos

fimse; // da condição 5

fimse; // da condição 4

fimse; // da condição 1

Por exemplo:

se (var < 0)

então

escrever(“O número” , var , “é negativo”);

senão

se (var = 0)

então

escrever(“O número” , var , “é nulo”);

senão

escrever(“O número” , var , “é positivo”);

fimse; // do var = 0

fimse; // do var < 0

Nesse exemplo, a variável var possui um valor numérico e vai passar por uma avaliação, ou seja,a expressão var<0 será avaliada. Se o resultado de retorno dessa avaliação for verdadeiro, entãoo comando escrever(...); dentro da estrutura do primeiro então será executado. Por outro lado, seo resultado da avaliação for falso, então uma nova estrutura de decisão será avaliada, ou seja, aexpressão var=0 será avaliada. Se o resultado de retorno dessa avaliação for verdadeiro, então ocomando escrever(...); dentro da estrutura do segundo então será executado. Por outro lado, seo resultado da segunda avaliação for falso, então o comando escrever(...); dentro da estrutura dosegundo senão é executado. Note que somente os comandos de uma única das estruturas detoda a estrutura de decisão encadeada são executados.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

52

Page 59: Apostila Algoritmos

O resultado da execução desse exemplo é:

// se o valor de var for 5

O número 5 é positivo

// se o valor de var for -5

O número –5 é negativo

// se o valor de var for 0

O número 0 é nulo

Java

Na estrutura de decisão encadeada, utilizaremos as palavras if e else para representar aspalavras principais desta estrutura e chave aberta, {, e chave fechada, }, para representar oconjunto de comandos que fazem parte desta estrutura. A estrutura de decisão encadeada paraJava segue a seguinte regra sintática:

if (<condição1>)

{

if (<condição2>)

{

if (<condição3>)

{

... // continua com outra estrutura de seleção ou coloca os comandos

} // fim da condição 3 quando verdadeira

else

{

... // continua com outra estrutura de seleção ou coloca os comandos

} // fim do else da condição 3

} // fim da condição 2 quando verdadeira

} // fim do else da condição 1

else

{

if (<condição4>)

{

if (<condição5>)

{

Copyright Faculdade IBTA

53

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 60: Apostila Algoritmos

... // continua com outra estrutura de seleção ou coloca os comandos

} // fim da condição 5 quando verdadeira

else

{

... // continua com outra estrutura de seleção ou coloca os comandos

} // fim do else da condição 5

} // fim da condição 4 quando veradeira

} // fim do else da condição 1

Por exemplo:

if (var < 0)

{

System.out.print("O número " + var + " é negativo");

}

else

{

if (var = 0)

{

System.out.print("O número " + var + " é nulo");

}

else

{

System.out.print("O número " + var + " é positivo");

} // do var = 0

} // do var < 0

Nesse exemplo, assim como no pseudocódigo, a variável var possui um valor numérico e vaipassar por uma avaliação, ou seja, a expressão var<0 será avaliada. Se o resultado de retornodessa avaliação for verdadeiro, então o comando System.out.print(...); dentro da estrutura doprimeiro if será executado. Por outro lado, se o resultado da avaliação for falso, então uma novaestrutura de decisão será avaliada, ou seja, a expressão var=0 será avaliada. Se o resultado deretorno dessa avaliação for verdadeiro, então o comando System.out.print(...); dentro daestrutura do segundo if é executado. Por outro lado, se o resultado da segunda avaliação forfalso, então o comando System.out.print(...); dentro da estrutura do segundo else é executado.Assim, como no pseudocódigo, somente os comandos de uma única das estruturas de toda aestrutura de decisão encadeada são executados. Nesse caso, somente uma das impressões éefetuada.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

54

Page 61: Apostila Algoritmos

O resultado da execução desse exemplo é:

// se o valor de var for 5

O número 5 é positivo

// se o valor de var for -5

O número –5 é negativo

// se o valor de var for 0

O número 0 é nulo

6.4. Exemplos de Estrutura de Decisão Simples, Composta e Encadeadaem Pseudocódigo

1. Desenvolva um algoritmo que receba um valor numérico real, verifique e mostre se essenúmero é positivo.

Algoritmo Positivo

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

x numérico_real;

// mensagem ao usuário

escrever (“Digite um número real”);

// entrada de dados

ler (x);

// processamento de dados

se (x > 0)

então

// saída de resultados

escrever (x , “ é positivo”);

fimse;

fim_algoritmo.

Copyright Faculdade IBTA

55

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 62: Apostila Algoritmos

2. Desenvolva um algoritmo que receba três valores numéricos inteiros, mostra a soma dessestrês números, verifique e mostre se a soma é maior que 100.

Algoritmo Somar

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

num1, num2, num3, soma numérico_inteiro;

// mensagem ao usuário

escrever (“Digite três valores inteiros”);

// entrada de dados

ler (num1 , num2 , num3);

// processamento de dados

soma � num1 + num2 + num3;

// saída de resultados

escrever (“A soma dos três valores digitados é: ” , soma);

se (soma > 100)

então

// saída de resultados

escrever(“A soma é maior que 100");

senão

// saída de resultados

escrever(“A soma é menor ou igual a 100");

fimse;

fim_algoritmo.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

56

Page 63: Apostila Algoritmos

3. Desenvolva um algoritmo que receba quatro notas bimestrais, calcule e mostre a médiaaritmética dessas quatro notas bem como se o aluno foi aprovado (média >= 7), reprovado(média < 3) ou em exame (média >= 3 ou média <7).

Algoritmo MediaAritmetica

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

n1, n2, n3, n4, media numérico_real;

// mensagem ao usuário

escrever (“Digite as quatro notas bimestrais”);

// entrada de dados

ler (n1 , n2 , n3 , n4);

// processamento de dados

media � (n1 + n2 + n3 + n4) / 4;

// saída de resultados

escrever (“A média é: ” , media);

// processamento de dados

se (media >= 7)

então

// saída de resultados

escrever (“Aluno aprovado”);

senão

se (media < 3)

então

// saída de resultados

escrever (“Aluno reprovado”);

senão

// saída de resultados

escrever (“Aluno em exame”);

fimse; // do media < 3

fimse; // do media >= 7

fim_algoritmo.

Copyright Faculdade IBTA

57

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 64: Apostila Algoritmos

4. Desenvolva um algoritmo que receba a base e a altura de um triângulo e verifique se os dadosrecebidos são válidos, ou seja, todos maiores que zero. Se os dados forem válidos, calcule emostre a área desse triângulo, caso contrário, mostre uma mensagem de dados inválidos aousuário.

Algoritmo AreaTriangulo

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

base, altura, area numérico_real;

// mensagem ao usuário

escrever (“Digite a base e a altura do triângulo”);

// entrada de dados

ler (base , altura);

// processamento de dados

se (base <= 0 ou altura <= 0)

então

// mensagem ao usuário

escrever (“Dados digitados inválidos. As medidas de base e altura de um triângulodevem ser maiores que zero”);

senão

// processamento de dados

area � (base * altura) / 2;

// saída de resultados

escrever (“A área do triângulo é: ” , area);

fimse;

fim_algoritmo.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

58

Page 65: Apostila Algoritmos

5. Desenvolva um algoritmo que receba três valores numéricos reais, verifique e mostre se essesvalores podem ser o comprimento dos lados de um triângulo. Se falso, mostrar essainformação ao usuário, caso contrário, verificar se formam um triângulo equilátero, isósceles ouescaleno.

Algoritmo Triangulo

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

lado1, lado2, lado3 numérico_real;

// mensagem ao usuário

escrever (“Digite três valores reais”);

// entrada de dados

ler (lado1, lado2, lado3);

// processamento de dados

se ((lado1 < lado2 + lado3) e (lado2 < lado1 + lado3 ) e (lado3 < lado1 + lado2))

então

// saída de resultados

escrever (“Com os valores digitados, podemos construir um triângulo ”);

se ((lado1 = lado2) e (lado2 = lado3))

então

// saída de resultados

escrever (“equilátero, com três lados iguais.”);

senão

se ((lado1 = lado2) ou (lado1 = lado3) ou (lado2 = lado3))

então

// saída de resultados

escrever (“isósceles, com dois lados iguais.”);

senão

// saída de resultados

escrever (“escaleno, com três lados diferentes”);

fimse;

fimse;

senão

// saída de resultados

escrever (“Com os valores digitados, não podemos construir um triângulo”);

fimse;

fim_algoritmo.

Copyright Faculdade IBTA

59

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 66: Apostila Algoritmos

6.5. Exemplos de Estrutura de Decisão Simples, Composta e Encadeadaem Java

1. Desenvolva um algoritmo que receba um valor numérico real, verifique e mostre se essenúmero é positivo.

class Positivo

{

public static void main (String args [ ])

{

// declaração de variáveis e/ou constantes

double x;

// mensagem ao usuário e entrada de dados

x = Double.parseDouble(JOptionPane.showInputDialog("Digiteum número real"));

// processamento de dados

if (x > 0)

{

// saída de resultados

System.out.println (x + " é positivo");

} // fim do if

System.exit(0);

} // fim do void main

} // fim da classe Positivo

2. Desenvolva um algoritmo que receba três valores numéricos inteiros, mostre a soma dessestrês números, verifique e mostre se a soma é maior que 100.

class Somar

{

public static void main (String args [ ])

{

// declaração de variáveis e/ou constantes

int num1, num2, num3, soma;

// mensagem ao usuário e entrada de dados

num1 = Integer.parseInt(JOptionPane.showInputDialog("Digite um valor inteiro"));

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

60

Page 67: Apostila Algoritmos

num2 = Integer.parseInt(JOptionPane.showInputDialog("Digite um valor inteiro"));

num3 = Integer.parseInt(JOptionPane.showInputDialog("Digite um valor inteiro'));

// processamento de dados

soma = num1 + num2 + num3;

// saída de resultados

System.out.println ("A soma dos três valores digitadosé: " + soma);

if (soma > 100)

{

// saída de resultados

System.out.println("A soma é maior que 100");

} // fim do if

else

{

// saída de resultados

System.out.println("A soma é menor ou igual a 100");

}// fim do else

System.exit(0);

} // fim do void main

} //fim da classe

3. Desenvolva um algoritmo que receba quatro notas bimestrais, calcula e mostra a médiaaritmética dessas quatro notas, bem como, se o aluno foi aprovado (média >= 7), reprovado(média < 3) ou em exame (média >= 3 ou média <7).

class MediaAritmetica

{

public static void main (String args [ ])

{

// declaração de variáveis e/ou constantes

double n1, n2, n3, n4, media;

// mensagem ao usuário e entrada de dados

n1 = Double.parseDouble(JOptionPane.showInputDialog("Digite uma nota bimestral"));

n2 = Double.parseDouble(JOptionPane.showInputDialog("Digite uma nota bimestral"));

Copyright Faculdade IBTA

61

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 68: Apostila Algoritmos

n3 = Double.parseDouble(JOptionPane.showInputDialog("Digite uma nota bimestral"));

n4 = Double.parseDouble(JOptionPane.showInputDialog("Digite uma nota bimestral"));

// processamento de dados

media = (n1 + n2 + n3 + n4) / 4;

// saída de resultados

System.out.println ("A média é: " + media);

// processamento de dados

if (media >= 7)

{

// saída de resultados

System.out.println ("Aluno aprovado");

}

else

{

if (media < 3)

{

// saída de resultados

System.out.println ("Aluno reprovado");

}

else

{

// saída de resultados

System.out.println ("Aluno em exame");

} // do media < 3

} // do media >= 7

System.exit(0);

} // fim do void main

} //fim da classe

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

62

Page 69: Apostila Algoritmos

4. Desenvolva um algoritmo que receba a base e a altura de um triângulo, verifique se os dadosrecebidos são válidos, ou seja, todos maiores que zero. Se os dados forem válidos, calcule emostre a área desse triângulo, caso contrário, mostre mensagem de dados inválidos aousuário.

class AreaTriangulo

{

public static void main (String args [ ])

{

// declaração de variáveis e/ou constantes

double base, altura, area;

// mensagem ao usuário e entrada de dados

base = Double.parseDouble(JOptionPane.showInputDialog("Digite a base do triângulo"));

altura = Double.parseDouble(JOptionPane.showInputDialog("Digite altura do triângulo"));

// processamento de dados

if (base <= 0 || altura <= 0)

{

// mensagem ao usuário

System.out.println ("As medidas de um triângulo devemser maiores que zero");

}

else

{

// processamento de dados

area = (base * altura) / 2;

// saída de resultados

System.out.print ("A área do triângulo é: " + area);

}

System.exit(0);

} // fim do void main} //fim da classe

Copyright Faculdade IBTA

63

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 70: Apostila Algoritmos

5. Desenvolva um algoritmo que receba três valores numéricos reais, verifique e mostre se essesvalores podem ser o comprimento dos lados de um triângulo. Se falso, mostrar essainformação ao usuário, caso contrário, verificar se formam um triângulo equilátero, isósceles ouescaleno.

class Triangulo

{

public static void main (String args [ ])

{

// declaração de variáveis e/ou constantes

double lado1, lado2, lado3;

// mensagem ao usuário e entrada de dados

lado1 = Double.parseDouble(JOptionPane.showInputDialog("Digite o lado do triângulo"));

lado2 = Double.parseDouble(JOptionPane.showInputDialog("Digite o lado do triângulo"));

lado3 = Double.parseDouble(JOptionPane.showInputDialog("Digite o lado do triângulo"));

// processamento de dados

if ((lado1 < lado2 + lado3) && (lado2 < lado1 + lado3 )&& (lado3 < lado1 + lado2))

{

// saída de resultados

System.out.print ("Com os valores digitados,podemos construir um triângulo");

if ((lado1 == lado2) && (lado2 == lado3))

{

// saída de resultados

System.out.print ("equilátero, com três ladosiguais.");

}

else

{

if ((lado1 == lado2) || (lado1 == lado3)|| (lado2 == lado3))

{

// saída de resultados

System.out.print ("isósceles, com doislados iguais.");

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

64

Page 71: Apostila Algoritmos

}

else

{

// saída de resultados

System.out.print ("escaleno, com três ladosdiferentes");

}

}

}

else

{

// saída de resultados

System.out.print ("Com os valores digitados, nãopodemos construir um triângulo ");

}

System.exit(0);

} // fim do void main

} //fim da classe

Exercícios de Estrutura de Decisão Simples, Composta e Encadeada

01. Desenvolva um algoritmo que receba dois valores numéricos inteiros, calcule e mostre o resultadoda diferença do maior pelo menor valor.

02. Desenvolva um algoritmo que receba três valores numéricos reais e mostre-os em ordemcrescente. Utilizar a estrutura de decisão encadeada.

03. Desenvolva um algoritmo que receba um valor inteiro, calcule e mostre o módulo desse número.O módulo de um número qualquer é esse número positivo, ou seja, o módulo de –5 é 5 e omódulo de 5 é 5.

04. Desenvolva um algoritmo que receba dois valores numéricos reais, calcule e mostre o maior entreesses dois números.

05. Desenvolva um algoritmo que receba os três coeficientes a, b e c de uma equação de segundograu da forma ax2 + bx + c = 0, verifique e mostre a existência de raízes reais e caso existaraíz(es) real(is), calcule e mostre essa(s) raíz(es).

06. Desenvolva um algoritmo que receba os valores referentes a quatro notas bimestrais de umaluno, calcule a média desse aluno e mostre a mensagem de aprovação (média >= 5) oureprovação (média < 5) do aluno, juntamente com a média calculada.

Copyright Faculdade IBTA

65

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 72: Apostila Algoritmos

07. Desenvolva um algoritmo que receba três valores obrigatoriamente em ordem crescente e umquarto valor não necessariamente nessa ordem. Esse algoritmo deve mostrar os quatro númerosem ordem decrescente.

08. Desenvolva um algoritmo que receba um valor numérico inteiro, verifique e mostre se esse valor édivisível por 2 e por 3.

09. Desenvolva um algoritmo que receba um valor numérico inteiro, verifique e mostre se esse valor édivisível por 2 ou por 3.

10. Desenvolva um algoritmo que receba um valor numérico real, verifique e mostre se esse valor épar ou ímpar.

11. Desenvolva um algoritmo que receba os valores da altura e do sexo de uma pessoa, calcule emostre o peso ideal dessa pessoa, utilizando as seguintes regras:

- para homens: (72.7 * altura) – 58;

- para mulheres: (62.1 * altura) – 44.7.

12. Desenvolva um algoritmo que receba a data de nascimento de uma pessoa e a data atual, calculee mostre se essa pessoa é maior de idade.

13. Desenvolva um algoritmo que receba o ano de nascimento de uma pessoa, calcule e mostre asua idade, e também verifique e mostre se essa pessoa já tem idade para votar (16 anos ou mais)e se tem idade para obter a Carteira Nacional de Habilitação (18 anos ou mais).

14. Desenvolva um algoritmo que receba a hora de início de um jogo e a hora final desse jogo (cadahora é composta por duas variáveis inteiras: hora e minuto). Esse algoritmo deve calcular emostrar a duração do jogo (horas e minutos) sabendo-se que o tempo máximo de duração do jogoé de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte.

15. Desenvolva um algoritmo que receba cinco valores numéricos inteiros, identifique e mostre omaior e o menor dentre esses números. Proibida em qualquer hipótese a ordenação dos valores.

16. Desenvolva um algoritmo que receba um caracter alfanumérico, verifique e mostre se o caracterdigitado é uma vogal, uma consoante, um número, ou qualquer outro caracter.

17. Desenvolva um algoritmo que receba um valor numérico real, verifique e mostre se esse valor épositivo ou negativo.

18. Desenvolva um algoritmo que receba dois valores numéricos reais, verifique qual o maior dessesvalores, calcule e mostre a soma do cubo do maior número com o cubo do menor número.

19. Desenvolva um algoritmo que receba três valores numéricos reais, calcule e mostre a médiaponderada desses números, considerando que o primeiro número tem peso 2, o segundo númerotem peso 3 e o terceiro número tem peso 5.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

66

Page 73: Apostila Algoritmos

20. Desenvolva um algoritmo que receba o preço atual e a venda mensal média de um produto,calcule e mostre o novo preço, sabendo que:

- se a venda média mensal for menor que 500 e o preço atual menor que 30,00, então o produtosofre um aumento de 10%;

- se a venda média mensal for maior ou igual a 500 e menor que 1000 e o preço atual maior ouigual a 30,00 e menor que 80,00, então o produto sofre um aumento de 15%;

- se a venda mensal média for maior ou igual a 1000 e o preço atual maior ou igual a 80,00,então o produto sofre uma diminuição de 5%.

21. Desenvolva um algoritmo que receba dois valores numéricos inteiros, verifique e mostre se omaior número é múltiplo do menor número.

22. Desenvolva um algoritmo que receba dois valores numéricos inteiros, verifique e mostre se omaior número é divisível pelo menor número.

23. Desenvolva um algoritmo que receba o número de voltas dadas, a extensão do circuito, emmetros, e o tempo de duração, em minutos, de uma corrida de fórmula 1. O algoritmo devecalcular e mostrar a velocidade média do primeiro colocado, em quilômetros por hora.

24. Desenvolva um algoritmo que receba o salário de um funcionário, calcule e mostre o valor doaumento salarial e o salário final a ser recebido pelo funcionário, considerando que se ofuncionário:

- recebe menos que 500,00, terá reajuste de 100%;

- recebe mais ou igual a 500,00 e menos que 1.000,00, terá reajuste de 75%;

- recebe mais ou igual a 1.000,00 e menos que 1.500,00, terá reajuste de 50%;

- recebe mais ou igual a 1.500,00 e menos que 2.000,00, terá reajuste de 25%;

- recebe mais ou igual a 2.000,00 e menos que 3.000,00, terá reajuste de 10%;

- recebe mais ou igual a 3.000,00 e menos que 5.000,00, terá reajuste de 5%;

- recebe mais ou igual a 5.000,00, terá reajuste de 2%.

25. Desenvolva um algoritmo que receba a medida de um ângulo em graus, verifique se é um ânguloválido (entre 0 grau e 360 graus) calcule e mostre o quadrante em que esse ângulo se localiza.Considere os quadrantes da trigonometria, primeiro quadrante graus entre 0 e 90, segundoquadrante graus entre 90 e 180, terceiro quadrante graus entre 180 e 270 e quarto quadrantegraus entre 270 e 360.

26. Desenvolva um algoritmo que receba a medida de um ângulo em graus, calcule e mostre oquadrante em que esse ângulo se localiza. Considere os quadrantes da trigonometria e paraângulos maiores que 360 graus ou menores que –360 graus, reduzi-los, mostrando também onúmero de voltas e o sentido da volta (horário ou anti-horário).

27. Desenvolva um algoritmo que receba uma senha de quatro números, verifique a validade destasenha sabendo que a senha correta é 1234 e mostre ao usuário uma mensagem dizendo se asenha digitada é válida ou não.

Copyright Faculdade IBTA

67

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 74: Apostila Algoritmos

28. Desenvolva um algoritmo que receba o tipo de investimento (poupança ou fundo de renda fixa) eo valor do investimento, calcule e mostre o valor corrigido do investimento após o período de 30dias, considerando que o rendimento mensal da poupança é de 3% e o do fundo de renda fixa éde 5%.

29. Desenvolva um algoritmo que receba a data de nascimento de uma pessoa, verifique e mostre emqual estação do ano (primavera, verão, outono ou inverno) essa pessoa nasceu.

30. Desenvolva um algoritmo que receba a data de nascimento de uma pessoa, verifique e mostrequal o signo dessa pessoa. Usar estrutura de decisão encadeada.

7. Estrutura de Múltipla Escolha

Uma estrutura de múltipla escolha também é uma estrutura de decisão em que um fluxo decontrole é utilizado para decidir qual o fluxo que o algoritmo seguirá. Uma estrutura de múltiplaescolha determina qual conjunto de comandos ou bloco será executado após uma opção seravaliada e um caso para essa opção for detectado. Essa opção é representada por valores dequaisquer tipos de dados conhecidos. Note que somente um caso é executado, dentre todos oscasos da estrutura de múltipla escolha.

Uma estrutura de múltipla escolha pode ser construída dentro de uma estrutura de decisão, sejaela simples, composta ou encadeada, assim como qualquer estrutura de decisão pode serconstruída dentro de uma estrutura de múltipla escolha.

Uma estrutura de múltipla escolha pode ser simples ou encadeada. Veremos a seguir como equando trabalhar com cada uma delas.

7.1. Estrutura de Múltipla Escolha Simples

Uma estrutura de decisão de múltipla escolha pode ser utilizada quando o algoritmo precisa testarum conjunto de valores diferentes antes de executar um conjunto de comandos associado aesses valores. Nesse caso, uma opção é avaliada, seu resultado é verificado dentro de umconjunto de casos e o conjunto de comandos dentro do caso relacionado à opção avaliada éexecutado como parte do fluxo de execução do algoritmo. Numa estrutura de múltipla escolha, otipo de dado da opção precisa, necessariamente, ser do mesmo tipo dos casos relacionados.

Pseudocódigo

Na estrutura de múltipla escolha simples, utilizaremos as palavras escolha, caso e caso

contrário que representam as palavras principais dessa estrutura e a palavra fimescolha; paradeterminar o fim do bloco de execução dessa estrutura. A estrutura de múltipla escolha simplespara pseudocódigo segue a seguinte regra sintática:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

68

Page 75: Apostila Algoritmos

escolha (<opção>)

caso <caso_1> : <comandos_1>;

caso <caso_2> : <comandos_2>;

...

caso <caso_n> : <comandos_n>;

caso contrário : <mensagem>;

fimescolha;

Por exemplo:

escolha (var)

caso 1 : escrever (“O valor da variável var é 1");

caso 2 : escrever (“O valor da variável var é 2");

caso 3 : escrever (“O valor da variável var é 3");

caso contrário: escrever (“O valor da variável var não é nem 1, nem 2, nem 3");

fimescolha;

Nesse exemplo, a variável var possui um valor numérico_inteiro e vai passar por uma avaliação,ou seja, o valor da variável var será avaliado. Se o resultado de retorno dessa avaliação for onúmero inteiro 1, então o comando escrever(...); do caso 1 será executado, se for o númerointeiro 2, então o comando escrever(...); do caso 2 será executado, se for o número inteiro 3,então o comando escrever(...); do caso 3 será executado e se for diferente de 1,2 ou 3, então oescrever(...); do caso contrário será executado. Note que somente um dos casos é executado eque o tipo de dado da variável var é numérico_inteiro assim como os valores de cada um doscasos.

Note que o uso do comando caso contrário serve para os valores não previstos que a variávelvar possa assumir.

O resultado da execução desse exemplo é:

// se o valor de var for 1

O valor da variável var é 1

// se o valor de var for 2

O valor da variável var é 2

// se o valor de var for 3

O valor da variável var é 3

// se o valor de var for 4

Copyright Faculdade IBTA

69

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 76: Apostila Algoritmos

O valor da variável var não é nem 1, nem 2, nem 3

Numa estrutura de múltipla escolha, os valores escolhidos para cada caso não precisam serúnicos, isto é, cada caso da estrutura pode ser representado por um conjunto de valoresespecíficos. Nesse caso, a estrutura de múltipla escolha simples para pseudocódigo segue aseguinte regra sintática:

escolha (<opção>)

caso <caso_1> : <comandos_1>;

caso <caso_2>, <caso_3>, <caso_4> : <comandos_2>;

caso <caso_5> .. <caso_10> : <comandos_3>;

...

caso <caso_11>, <caso_15> .. <caso_20> : <comandos_4>;

caso contrário : <mensagem>;

fimescolha;

Por exemplo, um caso pode ter o valor 1, outro caso, os valores 2, 3 e 4, outro caso, os valores 7,15 e 25 e outro caso, os valores 8, 11, 12, 13 e 14:

escolha (var)

caso 1 : escrever (“O valor da variável var é 1");

caso 2 . . 4 : escrever (“O valor da variável var pode ser 2, 3 ou 4");

caso 7, 15, 25 : escrever (“O valor da variável var pode ser 7, 15 ou 25");

caso 8, 11 . . 14 : escrever (“O valor da variável var pode ser 8 , 11, 12, 13 ou 14");

caso contrário : escrever (“opção inválida.”);

fimescolha;

Nesse exemplo, a variável var possui um valor numérico_inteiro e vai passar por uma avaliação,ou seja, o valor da variável var será avaliado. Se o resultado de retorno dessa avaliação for onúmero inteiro 1, então o comando escrever(...); do caso 1 será executado, se for o númerointeiro 2, 3 ou 4, então o comando escrever(...); do caso 2 .. 4 será executado, se for o númerointeiro 7, 15, ou 25, então o comando escrever(...); do caso 7, 15, 25 será executado, se for 8,11, 12, 13 ou 14, então o comando escrever(...); do caso 8, 11 .. 14 será executado e se fordiferente de qualquer um dos valores anteriores, então o escrever(...); do caso contrário seráexecutado. Note que somente um dos casos é executado e que o tipo de dado da variável var énumérico_inteiro assim como os valores de cada um dos casos.

O resultado da execução desse exemplo é:

// se o valor de var for 1

O valor da variável var é 1

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

70

Page 77: Apostila Algoritmos

// se o valor de var for 2

O valor da variável var pode ser 2, 3 ou 4

// se o valor de var for 7

O valor da variável var pode ser 7, 15 ou 25

// se o valor de var for 8

O valor da variável var pode ser 8 , 11, 12, 13 ou 14

// se o valor de var for 100

Opção Inválida

Java

Na estrutura de múltipla escolha simples, utilizaremos as palavras switch, case, default e break

que representam as palavras principais dessa estrutura e a chave aberta, {, e a chave fechada, },para representar o conjunto de comandos que fazem parte dessa estrutura. A estrutura demúltipla escolha simples para Java segue a seguinte regra sintática:

switch (<opção>)

case <caso_1> : <comandos_1>;

break;

case <caso_2> : <comandos_2>;

break;

...

case <caso_n> : <comandos_n>;

break;

default : <mensagem>;

fimescolha;

Por exemplo:

switch (var)

{

case 1 : System.out.print ("O valor da variável var é 1");

break;

case 2 : System.out.print ("O valor da variável var é 2");

break;

case 3 : System.out.print ("O valor da variável var é 3");

break;

Copyright Faculdade IBTA

71

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 78: Apostila Algoritmos

default : System.out.print ("O valor da variável var não énem 1, nem 2, nem 3");

}

Nesse exemplo, a variável var possui um valor numérico_inteiro e vai passar por uma avaliação.Se o resultado de retorno dessa avaliação for o número inteiro 1, então o comandoSystem.out.print (...); do case 1 será executado, se for o número inteiro 2, então o comandoSystem.out.print (...); do case 2 será executado, se for o número inteiro 3, então o comandoSystem.out.print (...); do case 3 será executado e se for diferente de 1,2 ou 3, então oSystem.out.print (...); do default será executado. Note que somente um dos casos é executadoe que o tipo de dado da variável var é numérico_inteiro assim como os valores de cada um doscasos.

Note que o uso do comando break serve para sair de determinado bloco. Nesse caso, o break éutilizado para sair da estrutura switch/case após executar os comandos do case selecionado.Isso é necessário, pois sem o uso do break, todos os comandos após o case selecionado seriamexecutados.

Note que o uso do comando default serve para os valores não previstos que a variável var possaassumir.

O resultado da execução desse exemplo é:

// se o valor de var for 1

O valor da variável var é 1

// se o valor de var for 2

O valor da variável var é 2

// se o valor de var for 7

O valor da variável var é 3

// se o valor de var for 4

O valor da variável var não é nem 1, nem 2, nem 3

Numa estrutura de switch/case, os valores escolhidos para cada caso não precisam ser únicos,isto é, cada caso da estrutura pode ser representado por um conjunto de valores específicos.Nesse caso, a estrutura de múltipla escolha simples para pseudocódigo segue a seguinte regrasintática:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

72

Page 79: Apostila Algoritmos

switch (<opção>)

{

case <caso_1> : <comandos_1>;

break;

case <caso_2> : case <caso_3> : case <caso_4> : <comandos_2>;

break;

case <caso_5> : case <caso_6> : case <caso_7> : case <caso_8> :

case <caso_9> : case <caso_10> : <comandos_3>;

break;

...

case <caso_11> : case <caso_15> : case <caso_16> : case <caso_17> :

case <caso_18> : <comandos_4>;

break;

default : <mensagem>;

}

Por exemplo, um caso pode ter o valor 1, outro caso, os valores 2, 3 e 4, outro caso, os valores 7,15 e 25 e outro caso, os valores 8, 11, 12, 13 e 14:

switch (var)

{

case 1 : System.out.println ("O valor da variável var é 1");

break;

case 2 :

case 3 :

case 4 : System.out.println ("O valor da variável var pode ser2, 3 ou 4");

break;

case 7 :

case 15:

case 25: System.out.println ("O valor da variável var pode ser7, 15 ou 25");

break;

case 8 :

case 11:

case 12:

case 13:

Copyright Faculdade IBTA

73

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 80: Apostila Algoritmos

case 14: System.out.println ("O valor da variável var pode ser8 , 11, 12, 13 ou 14");

break;

default : System.out.println ("opção inválida.");

}

Nesse exemplo, a variável var possui um valor int e vai passar por uma avaliação, ou seja, ovalor da variável var será avaliado. Se o resultado de retorno dessa avaliação for o número inteiro1, então o comando System.out.println(...); do case 1 : será executado, se for o número inteiro2, 3 ou 4, então o comando System.out.println(...); do case 2 : case 3: case 4 : será executado,se for o número inteiro 7, 15, ou 25, então o comando System.out.printon(...); do case 7 : case

15 : case 25 : será executado, se for 8, 11, 12, 13 ou 14, então o comandoSystem.out.println(...); do case 8 : case 11 : case 12 : case 13 : case 14 : será executado e sefor diferente de qualquer um dos valores anteriores, então o System.out.println(...); do default

será executado. Note que somente um dos casos é executado e que o tipo de dado da variávelvar é int assim como os valores de cada um dos casos.

O resultado da execução desse exemplo é:

// se o valor de var for 1

O valor da variável var é 1

// se o valor de var for 2

O valor da variável var pode ser 2, 3 ou 4

// se o valor de var for 7

O valor da variável var pode ser 7, 15 ou 25

// se o valor de var for 8

O valor da variável var pode ser 8 , 11, 12, 13 ou 14

// se o valor de var for 100

Opção Inválida

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

74

Page 81: Apostila Algoritmos

7.2. Estrutura de Múltipla Escolha Encadeada

Uma estrutura de múltipla escolha encadeada pode ser utilizada quando o algoritmo precisa testarum conjunto de valores diferentes antes de executar um conjunto de comandos associados aesses valores. Dizemos que essa estrutura é encadeado, pois há estruturas de múltipla escolhadentro de outras estruturas de múltipla escolha. Para qualquer caso, cada opção é avaliada epara cada resultado um conjunto de comandos dentro da estrutura escolha/caso pode serexecutado. Não existe limite para a estrutura de múltipla escolha encadeada, podemos terquantas estruturas de múltipla escolha encadeadas forem necessárias. Note que, para qualquerestrutura de múltipla escolha, no máximo, um único conjunto de comando será executado, aquelecuja avaliação de opção for escolhida.

Pseudocódigo

Na estrutura de múltipla escolha encadeada, utilizaremos as palavras escolha, caso e caso

contrário que representam as palavras principais dessa estrutura e a palavra fimescolha; paradeterminar o fim do bloco de execução dessa estrutura. Note que, para cada estruturaescolha/caso que aparece, existe um fimescolha; adequadamente localizado dentro daestrutura. A estrutura de múltipla escolha encadeada para pseudocódigo segue a seguinte regrasintática:

escolha (<opção_1>)

caso <caso_1> : escolha (<opção_2>)

caso <caso_11> : escolha (<opção_3>)

caso <caso_111> : <comandos_111>;

caso <caso_112> : <comandos_112>;

...

caso <caso_11n> : <comandos_11n>;

caso contrário : <mensagem>;

fimescolha; // opção 3

caso <caso_12> : <comandos_12>;

...

caso <caso_1n> : <comandos_1n>;

caso contrário : <mensagem>;

fimescolha; // opção 2

caso <caso_2> : escolha (<opção_4>)

caso <caso_21> : <comandos_21>;

caso <caso_22> : <comandos_22>;

...

caso <caso_2n> : <comandos_2n>;

caso contrário : <mensagem>;

Copyright Faculdade IBTA

75

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 82: Apostila Algoritmos

fimescolha; // opção 4

caso <caso_3> : <comandos_3>;

...

caso <caso_n> : <comandos_n>;

caso contrário : <mensagem>;

fimescolha; // opção 1

Por exemplo:

escolha (var)

caso 1 . . 3 : escolha (var)

caso 1 , 2 : escolha (var)

caso 1 : escrever (“o valor da variável var é 1");

caso 2 : escrever (“o valor da variável var é 2");

caso contrário : escrever (“opção inválida”);

fimescolha;

caso 3 : escrever (“o valor da variável var é 3");

caso contrário : escrever (“opção inválida”);

fimescolha;

caso 4 , 5 : escolha (var)

caso 4 : escrever (“o valor da variável var é 4");

caso 5 : escrever (“o valor da variável var é 5");

caso contrário : escrever(“opção inválida”);

fimescolha;

caso 6 : escrever (“o valor da variável var é 6");

caso contrário : escrever (“opção inválida”);

fimescolha;

Nesse exemplo, a variável var possui um valor numérico_inteiro e vai passar por uma avaliação,ou seja, o valor da variável var será avaliado. Se o resultado de retorno dessa avaliação for onúmero inteiro 6, então o comando escrever(...); do caso 6 será executado, se for o númerointeiro 4 ou 5, então uma nova estrutura de múltipla escolha é avaliado. Se nessa avaliação, ovalor de var for o número 4, o comando escrever(...); do caso 4 será executado, se for o número5, o comando escrever(...); do caso 5 será executado. Se o resultado da avaliação do primeirovar for o número inteiro 1, 2, ou 3, então uma nova estrutura de múltipla escolha é avaliada eassim por diante. Note que somente um dos casos é executado, ou seja, uma única mensagemescrever(...); será apresentada ao usuário e que o tipo de dado da variável var énumérico_inteiro assim como os valores de cada um dos casos.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

76

Page 83: Apostila Algoritmos

O resultado da execução desse exemplo é:

// se o valor de var for 1

O valor da variável var é 1

// se o valor de var for 2

O valor da variável var é 2

// se o valor de var for 3

O valor da variável var é 3

// se o valor de var for 4

O valor da variável var é 4

// se o valor de var for 5

O valor da variável var é 5

// se o valor de var for 6

O valor da variável var é 6

// se o valor de var for 7

Opção Inválida

Java

Na estrutura de múltipla escolha encadeada, utilizaremos as palavras switch, case, default ebreak que representam as palavras principais dessa estrutura e a chave aberta, {, e a chavefechada, }, para representar o conjunto de comandos que fazem parte dessa estrutura. Aestrutura de múltipla escolha encadeada para Java segue a seguinte regra sintática:

switch (<opção_1>)

{

case <caso_1> : switch (<opção_2>)

{

case <caso_11> : switch (<opção_3>)

{

case <caso_111> : <comandos_111>;

break;

Copyright Faculdade IBTA

77

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 84: Apostila Algoritmos

case <caso_112> : <comandos_112>;

break;

...

case <caso_11n> : <comandos_11n>;

break;

default : <mensagem>;

} // opção 3

break;

case <caso_12> : <comandos_12>;

break;

...

case <caso_1n> : <comandos_1n>;

break;

default : <mensagem>;

} // opção 2

break;

case <caso_2> : switch (<opção_4>)

{

case <caso_21> : <comandos_21>;

break;

case <caso_22> : <comandos_22>;

break;

...

case <caso_2n> : <comandos_2n>;

break;

default : <mensagem>;

} // opção 4

break;

case <caso_3> : <comandos_3>;

break;

...

case <caso_n> : <comandos_n>;

break;

default : <mensagem>;

} // opção 1

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

78

Page 85: Apostila Algoritmos

Por exemplo:

switch (var)

{

case 1 :

case 2 :

case 3 :

switch (var)

{

case 1 :

case 2 :

switch (var)

{

case 1 : System.out.print ("o valor da variável var é1");

break;

case 2 : System.out.print ("o valor da variável var é2");

break;

default : System.out.print ("opção inválida");

}

break;

case 3 : System.out.print ("o valor da variável var é 3");

break;

default : System.out.print ("opção inválida");

}

break;

case 4 :

case 5 :

switch (var)

{

case 4 : System.out.print ("o valor da variável var é 4");

break;

case 5 : System.out.print ("o valor da variável var é 5");

break;

default : System.out.print ("opção inválida");

}

Copyright Faculdade IBTA

79

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 86: Apostila Algoritmos

break;

case 6 : System.out.print ("o valor da variável var é 6");

break;

default : System.out.print ("opção inválida");

}

Nesse exemplo, a variável var possui um valor numérico_inteiro e vai passar por uma avaliação,ou seja, o valor da variável var será avaliado. Se o resultado de retorno dessa avaliação for onúmero inteiro 6, então o comando System.out.print(...); do case 6 será executado, se for onúmero inteiro 4 ou 5, então uma nova estrutura do switch/case é avaliada. Se nessa avaliação ovalor de var for o número 4, o comando System.out.print(...); do case 4 será executado, se for onúmero 5, o comando System.out.print(...); do case 5 será executado. Se o resultado daavaliação do primeiro var for o número inteiro 1, 2, ou 3, então uma nova estrutura doswitch/case é avaliada e assim por diante. Note que somente um dos casos é executado, ouseja, uma única mensagem System.out.print(...); será apresentada ao usuário e que o tipo dedado da variável var é numérico_inteiro assim como os valores de cada um dos casos.

O resultado da execução desse exemplo é:

// se o valor de var for 1

O valor da variável var é 1

// se o valor de var for 2

O valor da variável var é 2

// se o valor de var for 3

O valor da variável var é 3

// se o valor de var for 4

O valor da variável var é 4

// se o valor de var for 5

O valor da variável var é 5

// se o valor de var for 6

O valor da variável var é 6

// se o valor de var for 7

Opção Inválida

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

80

Page 87: Apostila Algoritmos

7.3. Exemplos de Estrutura de Múltipla Escolha em Pseudocódigo

1. Desenvolva um algoritmo que receba quatro notas bimestrais, calcule e mostre a médiaaritmética dessas quatro notas, bem como, se o aluno foi aprovado (média >= 7), reprovado(média < 3), em exame (média >= 3 ou média < 7) ou aprovado com louvor (média = 10).

Algoritmo MediaAritmetica

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

n1, n2, n3, n4, media numérico_real;

// mensagem ao usuário

escrever (“Digite as quatro notas bimestrais”);

// entrada de dados

ler (n1 , n2 , n3 , n4);

// processamento de dados

media � (n1 + n2 + n3 + n4) / 4;

// saída de resultados

escrever (“A média é: ” , media);

// processamento de dados

escolha (media)

caso 7 .. 10 : se (media = 10)

então

// saída de resultados

escrever(“Aluno aprovado com louvor”);

senão

// saída de resultados

escrever (“Aluno aprovado”);

fimse;

caso 0 .. 2.9 : // saída de resultados

escrever (“Aluno reprovado”);

caso 3 .. 6.9 : // saída de resultados

escrever (“Aluno em exame”);

caso contrário : // saída de resultados

escrever (“média inválida”);

fimescolha;

fim_algoritmo.

Copyright Faculdade IBTA

81

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 88: Apostila Algoritmos

2. Desenvolva um algoritmo que receba o preço de um produto e seu código de origem e mostreo preço do produto junto de sua procedência, conforme tabela abaixo:

código de origem região de procedência

1 norte

2, 5, 9 sul

3, 10 até 15 leste

7 ou 20 oeste

qualquer outro importado

Algoritmo Produto

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

preco numérico_real;

codigo numérico_inteiro;

// mensagem ao usuário

escrever (“Digite o preço e o código de origem do produto”);

// entrada de dados

ler (preco, codigo);

// processamento de dados

escolha (codigo)

caso 1 : // entrada de dados

escrever (preco , “ - Norte”);

caso 2, 5, 9 : // saída de resultados

escrever (preco ," - Sul");

caso 3, 10 .. 15 : // saída de resultados

escrever (preco , “ - Leste”);

caso 7 , 20 : // saída de resultados

escrever (preco , “- Oeste”);

caso contrário : // saída de resultados

escrever (preco , "- Importado”);

fimescolha;

fim_algoritmo.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

82

Page 89: Apostila Algoritmos

3. Desenvolva um algoritmo que receba dois valores numéricos inteiros e o símbolo da operaçãoconforme tabela abaixo, calcule e mostre a operação efetuada:

Símbolo da operação Nome da operação

+ adição

- subtração

* multiplicação

/ divisão

Algoritmo Calculo

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

d numérico_real;

res, num1, num2 numérico_inteiro;

oper alfanumérico;

// mensagem ao usuário

escrever (“Digite dois inteiros e a operação”);

// entrada de dados

ler (num1, num2, oper);

// processamento de dados

escolha (oper)

caso ‘+’ : res � num1 + num2;

// saída de resultados

escrever (“A soma de ” , num1 , “ com ” , num2 , “ é ” , res);

caso ‘-’ : res � num1 - num2;

// saída de resultados

escrever (“A diferença de ” , num1 , “ com ” , num2 , “ é ” , res);

caso ‘*’ : res � num1 * num2;

// saída de resultados

escrever (“O produto de ” , num1 , “ com ” , num2 , “ é ” , res);

caso ‘/’ : d � num1 / num2;

// saída de resultados

escrever (“A divisão de ” , num1 , “ com ” , num2 , “ é ” , d);

caso contrário : // saída de resultados

escrever (“operação inválida”);

fimescolha;

fim_algoritmo.

Copyright Faculdade IBTA

83

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 90: Apostila Algoritmos

7.4. Exemplos de Estrutura de Múltipla Escolha em Java

1. Desenvolva um algoritmo que receba quatro notas bimestrais, calcule e mostre a médiaaritmética dessas quatro notas bem como se o aluno foi aprovado (média >= 7), reprovado(média < 3), em exame (média >= 3 ou média < 7) ou aprovado com louvor (média = 10).

class MediaAritmetica

{

public static void main(String arg [ ])

{

// declaração de variáveis e/ou constantes

double n1, n2, n3, n4, media;

int op = 0;

// mensagem ao usuário e entrada de dados

n1 = Double.parseDouble(JOptionPane.showInputDialog("Digiteuma nota bimestral"));

n2 = Double.parseDouble(JOptionPane.showInputDialog("Digiteuma nota bimestral"));

n3 = Double.parseDouble(JOptionPane.showInputDialog("Digiteuma nota bimestral"));

n4 = Double.parseDouble(JOptionPane.showInputDialog("Digiteuma nota bimestral"));

// processamento de dados

media = (n1 + n2 + n3 + n4) / 4;

// saída de resultados

System.out.println ("A média é: " + media);

// processamento de dados

if (media >= 7 && media <= 10)

{

op = 1;

}

else

{

if (media < 7 && media >= 3)

{

op = 3;

}

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

84

Page 91: Apostila Algoritmos

else

{

if (media >= 0 && media < 3)

{

op = 2;

}

}

}

switch (op)

{

case 1 : if (media == 10)

{

// saída de resultados

System.out.println("Aluno aprovado comlouvor");

}

else

{

// saída de resultados

System.out.println ("Aluno aprovado");

}break;

case 2 : // saída de resultados

System.out.println ("Aluno reprovado");

break;

case 3 : // saída de resultados

System.out.println ("Aluno em exame");

break;

default : // saída de resultados

System.out.println ("média inválida");

} // fim do switch

System.exit(0);

} // fim do void main

} // fim da classe

Copyright Faculdade IBTA

85

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 92: Apostila Algoritmos

2. Desenvolva um algoritmo que receba o preço de um produto e seu código de origem e mostreo preço do produto junto de sua procedência, conforme tabela abaixo:

Código de origem região de procedência

1 norte

2, 5, 9 sul

3, 10 até 15 leste

7 ou 20 oeste

qualquer coisa importado

class Produto

{

public static void main(String arg [ ])

{

// declaração de variáveis e/ou constantes

double preco;

int codigo;

// mensagem ao usuário e entrada de dados

preco = Double.parseDouble(JOptionPane.showInputDialog("Digiteo preço do produto"));

codigo = Integer.parseInt(JOptionPane.showInputDialog("Digiteo código de origem do produto"));

// processamento de dados

switch (codigo)

{

case 1 : // saída de resultados

System.out.println (preco + " - Norte");

break;

case 2 : case 5 : case 9 :

// saída de resultados

System.out.println (preco + " - Sul");

break;

case 3 : case 10 : case 11 : case 12 :

case 13 : case 14 : case 15 :

// saída de resultados

System.out.println (preco + " - Leste");

break;

case 7 : case 20 :

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

86

Page 93: Apostila Algoritmos

// saída de resultados

System.out.println (preco + "- Oeste");

break;

default : // saída de resultados

System.out.println (preco + "- Importado");

} // fim do switch

System.exit(0);

} // fim do void main

} // fim da classe

3. Desenvolva um algoritmo que receba dois valores numéricos inteiros e o símbolo da operaçãoconforme tabela abaixo, calcule e mostre a operação efetuada:

Sistema da operação Nome da operação

+ adição

- subtração

* multiplicação

/ divisão

class Calculo

{

public static void main(String arg [ ])

{

// declaração de variáveis e/ou constantes

double d;

int res, num1, num2, oper;

// mensagem ao usuário e entrada de dados

num1 = Integer.parseInt(JOptionPane.showInputDialog("Digiteum número inteiro"));

num2 = Integer.parseInt(JOptionPane.showInputDialog("Digiteum número inteiro"));

oper = Integer.parseInt(JOptionPane.showInputDialog("Digitea operação: \n 1 para somar \n2 para subtrair \n 3 paramultiplicar \n 4 para dividir"));

// processamento de dados

switch (oper)

{

case 1 : res = num1 + num2;

Copyright Faculdade IBTA

87

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 94: Apostila Algoritmos

// saída de resultados

System.out.println ("A soma de " + num1 +" com " + num2 + " é " + res);

break;

case 2 : res = num1 - num2;

// saída de resultados

System.out.println ("A diferença de " + num1 +" com " + num2 + " é " + res);

break;

case 3 : res = num1 * num2;

// saída de resultados

System.out.println ("O produto de " + num1 +" com " + num2 + " é " + res);

break;

case 4 : d = num1 / num2;

// saída de resultados

System.out.println ("A divisão de " + num1 +" com " + num2 + " é " + d);

break;

default : // saída de resultados

System.out.println ("operação inválida");

} // fim do switch

System.exit(0);

} // fim do void main

} // fim da classe

Exercícios de Estrutura de Múltipla Escolha Simples e Encadeada

01. Desenvolva um algoritmo que receba o nome e os dados para cálculo da área de uma figurageométrica conforme tabela abaixo, calcule e mostre a área da figura geométrica:

Figura geométrica Fórmula

quadrado lado * lado

triângulo (base * altura) / 2

retângulo base * altura

trapézio ((Base maior = base menor) * altura) / 2

02. Desenvolva um algoritmo que receba dois valores reais e o código do produto notável conformetabela abaixo, calcule e mostre o valor do produto notável:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

88

Page 95: Apostila Algoritmos

Código Produto Notável Fórmula

12345

Quadrado da diferença de dois númerosQuadrado da soma de dois númerossoma do quadrado de dois númerosDiferença do quadrado de dois númerosproduto da soma com a diferença de dois números

(a - b) * (a - b)(a + b) * (a + b)a * a + b * ba * a - b * b(a - b) * (a + b)

03. Desenvolva um algoritmo que receba o nome de um lugar e mostre para o usuário o que ele devefazer nesse lugar, conforme tabela abaixo:

Lugar O que fazer

EscolaBancoFarmáciaCasaCorreio

EstudarPagar contasComprar remédiosDescansarRemeter cartas

04. Desenvolva um algoritmo que receba um dia da semana e mostre qual(is) a(s) disciplina(s) vocêtem naquele dia da semana.

05. Desenvolva um algoritmo que receba um mês do ano e mostre qual(is) o(s) feriado(s) daquelemês.

06. Desenvolva um algoritmo que receba a data de nascimento de uma pessoa e mostre qual o signodessa pessoa.

07. Desenvolva um algoritmo que receba o código de determinado produto e mostre a suaclassificação, conforme a tabela abaixo:

Código Classificação

10 ou 111213, 14 ou 1519, 26 até 3017 até 25Qualquer outro código

alimento não perecívelalimento perecívelvestuáriohigiene pessoallimpeza e utensílios domésticosinválido

Copyright Faculdade IBTA

89

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 96: Apostila Algoritmos

08. Desenvolva um algoritmo que receba a idade de um atleta e mostre a sua classificação emcategorias, conforme a tabela abaixo:

Idade Categoria

3 até 4 anos5 até 7 anos8 até 10 anos11 até 13 anos14 até 17 anos18 até 50 anosmais que 50

MirimInfantil AInfantil BJuvenil AJuvenil BAdultoVeterano

09. Desenvolva um algoritmo que receba o código da condição de pagamento e o preço de umproduto, calcule o que deve ser pago pelo produto e mostre a condição de pagamento e o preço aser pago, conforme a tabela abaixo:

Código Condição de pagamento

ABCD

à vista em dinheiro ou cheque tem 20% de descontoà vista em cartão de crédito tem 10% de descontoem 2 vezes, preço normal de etiqueta sem jurosem 3 vezes, preço normal de etiqueta mais juros de 15%

10. Desenvolva um algoritmo que receba o valor de dois números inteiros, o símbolo da operaçãoaritmética desejada, calcule e mostre o resultado da operação aritmética, conforme a tabelaabaixo:

símbolo Operação aritmética

+-*/^mq

adiçãosubtração

multiplicaçãodivisão

potenciaçãoresto da divisão

quociente da divisão

11. Desenvolva um algoritmo que receba o número de horas extras de um funcionário e o número dehoras que um funcionário faltou ao trabalho, calcule e mostre a gratificação de natal dessefuncionário sabendo que o valor da gratificação é calculada conforme fórmula e tabela abaixo:

G = (número de horas extras) – 2/3 * (número de horas que faltou)

G gratificação

maior ou igual a 5.000,00 100,00

menor que 5.000,00 e maior ou igual que 2.500,00 200,00

menor que 2.500,00 e maior ou igual que 1.000,00 300,00

menor que 1.000,00 e maior ou igual que 500 400,00

menor que 500,00 500,00

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

90

Page 97: Apostila Algoritmos

12. Desenvolva um algoritmo que receba a idade e o peso de uma pessoa, verifique e mostre em qualgrupo de risco essa pessoa se encaixa, conforme a tabela abaixo:

Idade Peso

Até 60 (inclusive) Entre 60 e 90 (inclusive) acima de 90

menores de 20 9 8 7

de 20 a 50 6 5 4

maiores de 50 3 2 1

13. Desenvolva um algoritmo que receba o código do produto comprado e a quantidade comprada deum produto, calcule e mostre o preço unitário do produto, conforme a tabela abaixo, e o preçototal da nota:

Código do produto Preço do produto

1 a 5 10,00

6, 8 a 15 50,00

7 15,00

16, 17 25,00

14. Desenvolva um algoritmo que receba o salário de um funcionário, calcule e mostre o valor doaumento salarial e o salário final a ser recebido pelo funcionário, considerando que:

- se o funcionário recebe menos que 500,00, terá reajuste de 100%;

- se o funcionário recebe mais ou igual a 500,00 e menos que 1.000,00, terá reajuste de 75%;

- se o funcionário recebe mais ou igual a 1.000,00 e menos que 1.500,00, terá reajuste de 50%;

- se o funcionário recebe mais ou igual a 1.500,00 e menos que 2.000,00, terá reajuste de 25%;

- se o funcionário recebe mais ou igual a 2.000,00 e menos que 3.000,00, terá reajuste de 10%;

- se o funcionário recebe mais ou igual a 3.000,00 e menos que 5.000,00, terá reajuste de 5%;

- se o funcionário recebe mais que 5.000,00, terá reajuste de 2%.

15. Desenvolva um algoritmo que receba o tipo de investimento e o valor do investimento, calcule emostre o valor corrigido do investimento após o período de 30 dias, considerando que orendimento mensal para cada tipo de investimento varia conforme a tabela abaixo:

Tipo de investimento Rendimento

Poupança 3%

Fundo de renda fixa 5%

CDB 6%

Ações 10%

Copyright Faculdade IBTA

91

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 98: Apostila Algoritmos

16. Desenvolva um algoritmo que receba a data de nascimento de uma pessoa, verifique e mostre emqual estação do ano (primavera, verão, outono ou inverno) esta pessoa nasceu.

17. Desenvolva um algoritmo que receba três valores numéricos reais e um código e mostre-osconforme a tabela abaixo:

Código Operação

1 apresentar os três valores em ordem crescente

2 apresentar os três valores em ordem decrescente

3 apresentar somente os valores pares

4 apresentar somente os valores ímpares

5 apresentar somente os valores positivos

6 apresentar somente os valores negativos

18. Desenvolva um algoritmo que receba o preço atual e a venda mensal média de um produto,calcule e mostre o novo preço, sabendo que:

• se a venda média mensal for menor que 500 e o preço atual menor que 30,00, então o produtosofre um aumento de 10%;

• se a venda média mensal for maior ou igual a 500 e menor que 1000 e o preço atual maior ouigual a 30,00 e menor que 80,00, então o produto sofre um aumento de 15%;

• se a venda mensal média for maior ou igual a 1000 e o preço atual maior ou igual a 80,00,então o produto sofre uma diminuição de 5%.

19. Desenvolva um algoritmo que receba o raio de uma circunferência e um código, calcule e mostreos dados da circunferência, conforme a tabela abaixo:

Código Operação

x calcula o comprimento: C = 2 . � . raio

y calcula a área: A = � . raio2

z calculo o volume: V = 4/3 . � . raio3

20. Desenvolva um algoritmo que receba um caracter, verifique e mostre se o caracter digitado é umavogal, uma consoante, ou qualquer outro caracter.

21. Desenvolva um algoritmo que receba o nome de uma pessoa, verifique e mostre qual a sua cor efruta preferida, conforme a tabela abaixo:

NomePreferência

Cor fruta

Maria vermelho morango

José azul figo

João verde uva

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

92

Page 99: Apostila Algoritmos

22. Desenvolva um algoritmo que receba o nome de um País, verifique e mostre como característicasa sua capital, continente a que pertence e idioma oficial, conforme tabela abaixo:

PaísCaracterísticas

capital continente idioma

Brasil Brasilia América Português

Japão Tóquio Ásia Japonês

Itália Roma Europa Italiano

Argélia Argel África Francês

Austrália Canberra Oceania Inglês

23. Desenvolva um algoritmo que receba o nome de uma bebida, verifique e mostre comocaracterísticas dessa bebida uma fruta, um ingrediente e que dia da semana essa bebida éoferecida, conforme tabela abaixo:

BebidaCaracterísticas

fruta ingrediente dia da semana

Magro Abacaxi Ginseng Segunda-feira

Forte Pêra Geléia Terça-feira

Vitaminado Pêssego Guaraná Quarta-feira

Poderoso Acerola Germe de Trigo Quinta-feira

Saudável Laranja Algas Sexta-feira

24. Desenvolva um algoritmo que receba o nome de uma família, verifique e mostre o nome da fontee o dia de instalação dessa fonte, conforme tabela abaixo:

FamíliaFonte

Nome Instalação

Tompson Oásis Sábado

Dorneles Floresta Tropical Domingo

Aguiar Gruta Sábado

Santos Pão de Açúcar Domingo

Copyright Faculdade IBTA

93

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 100: Apostila Algoritmos

25. Desenvolva um algoritmo que receba o número da etapa de uma viagem de barco, verifique emostre o nome do barco, a distância percorrida e a vista dessa viagem, conforme tabela abaixo:

EtapaViagem

barco Distância Vista

primeira Netuno 3 quilômetros Canhão

segunda Plutão 4 quilômetros Índios

terceira Saturno 5 quilômetros Ruínas

quarta Marte 2 quilômetros Igreja

quinta Urano 8 quilômetros Gruta

26. Desenvolva um algoritmo que receba o nome de um museu, o horário de abertura, o horário defechamento e o valor da entrada, mostre os dados do museu, quantas horas o museu fica abertoe o troco que uma pessoa deve receber se possui R$ 50,00 para pagar a entrada, conformetabela abaixo:

MuseuDados

horário abertura horário de fechamento valor

Arte Moderna 8 horas 16 horas e 30 minutos R$ 43,60

Cartas e Manuscritos 10 horas 17 horas e 15 minutos R$ 21,50

Instrumentos Musicais 12 horas 17 horas e 30 minutos R$ 32,85

Pedras Preciosas 14 horas 18 horas e 10 minutos R$ 29,20

Relíquias 16 horas 18 horas e 45 minutos R$ 39,50

27. Desenvolva um algoritmo que receba o nome de uma vila, verifique e mostre o nome do rio quepassa nessa vila e a extensão desse rio, conforme a tabela abaixo:

VilaRio

Nome Extensão

Vila Áurea Rio Coral 21 km

Vila do Retorno Rio Grande 24 km

Vila da Luz Rio Mesquita 28 km

Vila dos Pinheiros Rio Ronco 32 km

Vila Santana Rio da Viúva 33 km

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

94

Page 101: Apostila Algoritmos

28. Desenvolva um algoritmo que receba uma data, verifique e mostre qual atividade foi desenvolvidanesta data, como estava o tempo e a temperatura, conforme tabela abaixo:

DataDados

Atividade tempo temperatura

17 de maio Caminhada Frente Fria 16 graus

18 de maio Leitura Nublado 22 graus

19 de maio Computador Chuva Fina 18 graus

20 de maio Pesca Sol 25 graus

21 de maio Bicicleta Vento 20 graus

29. Desenvolva um algoritmo que receba um dia da semana, verifique e mostre qual a avaliaçãorealizada nesta data, qual o horário e o grau de dificuldade, conforme tabela abaixo:

DataDados

Disciplina horário dificuldade

segunda-feira Lógica de Programação 19h30 as 21h médio

terça-feira Lógica Matemática 21h30 as 23h difícil

quarta-feira Fundamentos Software 19h30 as 21h fácil

quinta-feira Fundamentos Hardware 21h30 as 23h fácil

sexta-feira Inglês 19h30 as 21h médio

30. Desenvolva um algoritmo que receba o nome de cinco alunos de sua sala, verifique e mostre quala idade, o sexo e o estado civil de cada um deles.

Copyright Faculdade IBTA

95

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 102: Apostila Algoritmos

8. Estrutura de Repetição

Quando desenvolvemos um algoritmo ou programa estruturado, muitas vezes, precisamos repetirparte do algoritmo, um comando ou um conjunto de comandos. Podemos fazer isso repetindoesse bloco quantas vezes forem necessárias, mas isso é inviável. Para solucionar esse problema,podemos usar as estruturas de repetição. No entanto, precisamos saber controlar quantas vezeso algoritmo deve repetir determinada parte do algoritmo. Para isso, estudaremos o fluxo decontrole chamado estrutura de repetição.

Uma estrutura de repetição é um fluxo de controle utilizado para decidir quantas vezesdeterminado conjunto de comandos se repetirá dentro do algoritmo. Uma estrutura de repetiçãodetermina qual conjunto de comandos ou bloco será executado após uma condição ser avaliada.Essa condição é representada por expressões lógicas e relacionais que podem ou não sersatisfeitas, isto é, podem retornar o valor verdadeiro ou falso. Enquanto essa condição estiverretornando verdadeiro, o conjunto de comandos será executado, parando somente quando oresultado da avaliação da condição for falso. Numa estrutura de repetição, o número derepetições pode ser indeterminado, mas necessariamente finito.

As estruturas de repetição também podem estar encadeadas, ou seja, uma estrutura de repetiçãodentro de outra estrutura de repetição. Às vezes, precisamos repetir várias vezes uma mesmaestrutura de repetição, é nesses casos que utilizamos as estruturas de repetições encadeadas.

Uma estrutura de repetição pode ser construída dentro de uma estrutura de decisão, seja elasimples, composta ou encadeada, bem como dentro de uma estrutura de múltipla escolha. Damesma forma, qualquer estrutura de decisão ou de múltipla escolha pode ser construída dentrode uma estrutura de repetição.

Temos três tipos de estrutura de repetição: enquanto, faça/enquanto e para. Cada uma dessasestruturas de repetição pode ser simples ou encadeada. Veremos a seguir como e quandotrabalhar com cada uma delas.

8.1. Estrutura de Repetição Enquanto

Uma estrutura de repetição enquanto pode ser utilizada quando o algoritmo precisa testardeterminada condição antes de executar um conjunto de comandos repetidas vezes. Nesse caso,uma condição é avaliada e se seu resultado for verdadeiro, o conjunto de comandos dentro daestrutura de repetição enquanto é executado e, após essa execução, a condição é novamenteavaliada. Por outro lado, se o resultado da avaliação for falso, esse conjunto de comandos nãoserá executado e o fluxo do algoritmo segue normalmente. Note que nessa estrutura de repetição,pode ocorrer que o conjunto de comando não seja executado nenhuma vez.

Pseudocódigo

Na estrutura de repetição enquanto, utilizaremos as palavras enquanto e faça que representamas palavras principais dessa estrutura e a palavra fimenquanto; para determinar o fim do blocode execução da estrutura. A estrutura de repetição enquanto para pseudocódigo segue aseguinte regra sintática:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

96

Page 103: Apostila Algoritmos

<inicialização da variável de controle>;

enquanto (<condição>) faça

<comandos>;

<atualização da variável de controle>;

fimenquanto;

Por exemplo:

x � 0;

enquanto (x < 3) faça

escrever (“O valor de x é: ” , x);

x � x + 1;

fimenquanto;

Nesse exemplo, o valor inicial da variável x é 0. Na primeira vez que a condição x<3 é avaliada,seu resultado é verdadeiro, pois 0 é menor que 3, então o comando escrever(...); e a atualizaçãode x (x passa a ser 1) são executados. Na segunda vez que a condição x<3 é avaliada, seuresultado é verdadeiro, pois 1 é menor que 3, então o comando escrever(...); e a atualização de x

(x passa a ser 2) são executados. Na terceira vez que a condição x<3 é avaliada, seu resultado éverdadeiro, pois 2 é menor que 3, então o comando escrever(...); e a atualização de x (x passa aser 3) são executados. Na quarta vez que a condição x<3 é avaliada, seu resultado é falso, pois 3não é menor que 3, então os comandos dentro da estrutura de repetição enquanto não sãoexecutados e essa estrutura é finalizada, seguindo com o fluxo do algoritmo após esta estrutura.

O resultado da execução deste exemplo é:

O valor de x é 0

O valor de x é 1

O valor de x é 2

Java

No Java, para a estrutura de repetição enquanto, utilizaremos a palavra while que representa apalavra principal dessa estrutura e chave aberta, {, e chave fechada, }, para representar oconjunto de comandos que fazem parte dessa estrutura. A estrutura de repetição enquanto paraJava segue a seguinte regra sintática:

Copyright Faculdade IBTA

97

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 104: Apostila Algoritmos

<inicialização da variável de controle>;

while (<condição>)

{

<comandos>;

<atualização da variável de controle>;

}

Por exemplo:

x � 0;

while (x < 3)

{

System.out.println ("O valor de x é: " + x);

x � x + 1;

}

Nesse exemplo, o valor inicial da variável x é 0. Na primeira vez que a condição x<3 é avaliada,seu resultado é verdadeiro, pois 0 é menor que 3, então o comando System.out.println(...); e aatualização de x (x passa a ser 1) são executados. Na segunda vez que a condição x<3 éavaliada, seu resultado é verdadeiro, pois 1 é menor que 3, então o comando System.out.println

(...); e a atualização de x (x passa a ser 2) são executados. Na terceira vez que a condição x<3 éavaliada, seu resultado é verdadeiro, pois 2 é menor que 3, então o comando System.out.println

(...); e a atualização de x (x passa a ser 3) são executados. Na quarta vez que a condição x<3 éavaliada, seu resultado é falso, pois 3 não é menor que 3, então os comandos dentro da estruturade repetição while não são executados e essa estrutura é finalizada, seguindo com o fluxo doalgoritmo após essa estrutura.

O resultado da execução desse exemplo é:

O valor de x é 0

O valor de x é 1

O valor de x é 2

Encadeamento

Na estrutura de repetição enquanto, utilizaremos as palavras enquanto e faça que representamas palavras principais dessa estrutura e a palavra fimenquanto; para determinar o fim do blocode execução dessa estrutura. A estrutura de repetição enquanto encadeada para pseudocódigosegue a seguinte regra sintática:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

98

Page 105: Apostila Algoritmos

<inicialização da variável de controle 1>;

enquanto (<condição1>) faça

<inicialização da variável de controle 2>;

enquanto (<condição2>) faça

<comandos que podem ser outra estrutura de repetição enquanto>;

<atualização da variável de controle 2>;

fimenquanto;

<atualização da variável de controle 1>;

fimenquanto;

No Java, para a estrutura de repetição enquanto, utilizaremos a palavra while que representa apalavra principal dessa estrutura e chave aberta, {, e chave fechada, }, para representar oconjunto de comandos que fazem parte dessa estrutura. A estrutura de repetição while

encadeada para Java segue a seguinte regra sintática:

<inicialização da variável de controle 1>;

while (<condição1>)

{

<inicialização da variável de controle 2>;

while (<condição2>)

{

<comandos que podem ter outra estrutura de repetição while>;

<atualização da variável de controle 2>;

}

<atualização da variável de controle 1>;

}

Para um melhor entendimento do encadeamento nas estruturas de repetição enquanto,resolveremos o seguinte exemplo:

Desenvolva um algoritmo que calcula o fatorial dos números inteiros de 5 até 15.

Nesse exemplo, precisamos usar uma estrutura de repetição enquanto para calcular o fatorial deum número e uma outra estrutura de repetição enquanto para passar por todos os números de 5até 15. Note que a primeira estrutura de repetição está dentro da segunda estrutura de repetição,ou seja, elas estão encadeadas. A resolução desse exercício em pseudocódigo é a seguinte:

Copyright Faculdade IBTA

99

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 106: Apostila Algoritmos

Algoritmo ExemploEnquanto

início_algoritmo

Declarar

i, num, fat numérico_inteiro;

// entrada de dados

num � 5;

// processamento de dados

enquanto (num <= 15) faça

fat � num;

i � num – 1;

enquanto (i > 1) faça

fat � fat * i;

i � i – 1;

fimenquanto;

// saída de dados

escrever (“O valor do fatorial de ” , num , “ é ” , fat);

num � num + 1;

fimenquanto;

fim_algoritmo.

A solução desse exercício em Java é a seguinte:

class ExemploEnquanto

{

public static void main(String args [])

{

int i, num, fat;

num = 5;

while (num <= 15)

{

fat = num;

i = num – 1;

while (i > 1)

{

fat = fat * i;

i = i – 1;

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

100

Page 107: Apostila Algoritmos

} // segundo while

System.out.print ("O valor do fatorial de " + num +" é " + fat);

num = num + 1;

} // primeiro while

} // main

} // classe

8.2. Faça/Enquanto

Uma estrutura de repetição faça/enquanto pode ser utilizada quando o algoritmo precisa testardeterminada condição depois de executar um conjunto de comandos, passando por esses passosrepetidas vezes. Nesse caso, um conjunto de comandos dentro da estrutura de repetiçãofaça/enquanto é executado e, após esta execução, uma condição é avaliada e, se seu resultadofor verdadeiro, o conjunto de comandos é novamente executado. Por outro lado, se o resultado daavaliação for falso, esse conjunto de comandos não volta a ser executado e o fluxo do algoritmosegue normalmente. Note que nessa estrutura de repetição, pelo menos uma vez, o conjunto decomandos dentro da estrutura de repetição faça/enquanto é executado.

Pseudocódigo

Na estrutura de repetição faça/enquanto, utilizaremos as palavras faça e enquanto querepresentam as palavras principais dessa estrutura e a própria palavra enquanto determinará ofim do bloco de execução da estrutura. A estrutura de repetição faça/enquanto parapseudocódigo segue a seguinte regra sintática:

<inicialização da variável de controle>;

faça

<comandos>;

<atualização da variável de controle>;

enquanto(<condição>);

Por exemplo:

x � 0;

faça

escrever (“O valor de x é: ” , x);

x � x + 1;

enquanto (x < 3);

Copyright Faculdade IBTA

101

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 108: Apostila Algoritmos

Neste exemplo, o valor inicial da variável x é 0. Na primeira vez que a estrutura de repetiçãofaça/enquanto é solicitada, o comando escrever(...); e a atualização de x (x passa a ser 1) sãoexecutados e a condição x<3 é avaliada. O resultado dessa avaliação é verdadeiro, pois 1 émenor que 3, então a estrutura de repetição faça/enquanto é novamente solicitada, o comandoescrever(...); e a atualização de x (x passa a ser 2) são executados e a condição x<3 é avaliada.O resultado dessa avaliação é verdadeiro, pois 2 é menor que 3, então a estrutura de repetiçãofaça/enquanto é novamente solicitada, o comando escrever(...); e a atualização de x (x passa aser 3) são executados e a condição x<3 é avaliada. O resultado dessa avaliação é falso, pois 3não é menor que 3, então essa estrutura é finalizada, seguindo com o fluxo do algoritmo apósessa estrutura.

Resultado da execução deste exemplo:

O valor de x é 0

O valor de x é 1

O valor de x é 2

Java

No Java, para a estrutura de repetição faça/enquanto, utilizaremos as palavras do e while querepresentam as palavras principais dessa estrutura e chave aberta, {, e chave fechada, }, pararepresentar o conjunto de comandos que fazem parte dessa estrutura. A estrutura de repetiçãofaça/enquanto para Java segue a seguinte regra sintática:

<inicialização da variável de controle>;

do

{

<comandos>;

<atualização da variável de controle>;

} while (<condição>);

Por exemplo:

x = 0;

do

{

System.out.println (“O valor de x é: ” + x);

x = x + 1;

} while (x < 3);

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

102

Page 109: Apostila Algoritmos

Nesse exemplo, o valor inicial da variável x é 0. Na primeira vez que a estrutura de repetiçãodo/while é solicitada, o comando System.out.println(...); e a atualização de x (x passa a ser 1)são executados e a condição x<3 é avaliada. O resultado dessa avaliação é verdadeiro, pois 1 émenor que 3, então a estrutura de repetição do/while é novamente solicitada, o comandoSystem.out.println (...); e a atualização de x (x passa a ser 2) são executados e a condição x<3

é avaliada. O resultado dessa avaliação é verdadeiro, pois 2 é menor que 3, então a estrutura derepetição do/while é novamente solicitada, o comando System.out.println (...); e a atualizaçãode x (x passa a ser 3) são executados e a condição x<3 é avaliado. O resultado dessa avaliaçãoé falso, pois 3 não é menor que 3, então essa estrutura é finalizada, seguindo com o fluxo doalgoritmo após essa estrutura.

Resultado da execução desse exemplo:

O valor de x é 0

O valor de x é 1

O valor de x é 2

Encadeamento

Na estrutura de repetição faça/enquanto, utilizaremos as palavras faça e enquanto querepresentam as palavras principais dessa estrutura e a própria palavra enquanto determinará ofim do bloco de execução dessa estrutura. A estrutura de repetição faça/enquanto encadeadapara pseudocódigo segue a seguinte regra sintática:

<inicialização da variável de controle 1>;

faça

<inicialização da variável de controle 2>;

faça

<comandos que podem ter outra estrutura de repetição faça/enquanto>;

<atualização da variável de controle 2>;

enquanto(<condição1>);

<atualização da variável de controle 1>;

enquanto(<condição2>);

No Java, para a estrutura de repetição faça/enquanto, utilizaremos as palavras do e while querepresentam as palavras principais dessa estrutura e chave aberta, {, e chave fechada, }, pararepresentar o conjunto de comandos que fazem parte dessa estrutura. A estrutura de repetiçãofaça/enquanto encadeado para Java segue a seguinte regra sintática:

<inicialização da variável de controle 1>;

do

{

<inicialização da variável de controle 2>;

do

Copyright Faculdade IBTA

103

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 110: Apostila Algoritmos

{

<comandos que podem ter outra estrutura de repetição do/while>;

<atualização da variável de controle 2>;

} while (<condição1>);

<atualização da variável de controle 2>;

} while (<condição2>);

Para um melhor entendimento do encadeamento nas estruturas de repetição faça/enquanto,resolveremos o seguinte exemplo:

Desenvolva um algoritmo que calcula o fatorial dos números inteiros de 5 até 15.

Nesse exemplo, precisamos usar uma estrutura de repetição faça/enquanto para calcular ofatorial de um número e uma outra estrutura de repetição faça/enquanto para passar por todosos números de 5 até 15. Note que a primeira estrutura de repetição está dentro da segundaestrutura de repetição, ou seja, elas estão encadeadas. A resolução desse exercício empseudocódigo é a seguinte:

Algoritmo ExemploFacaEnquanto

início_algoritmo

Declarar

i, num, fat numérico_inteiro;

num � 5; // entrada de dados// processamento de dadosfaça

fat � num;

i � num – 1;faça

fat � fat * i;

i � i – 1;enquanto (i > 1);

escrever (“O valor do fatorial de ” , num , “ é ” , fat); // saída de dados

num � num + 1;enquanto (num <= 15);

fim_algoritmo.

A solução desse exercício em Java é a seguinte:

class ExemploFacaEnquanto

{

public static void main(String args [])

{

int i, num, fat;

num = 5;

do

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

104

Page 111: Apostila Algoritmos

{

fat = num;

i = num – 1;

do

{

fat = fat * i;

i = i – 1;

} while (i > 1);

System.out.print ("O valor do fatorial de " + num +" é " + fat);

num = num + 1;

} while (num <= 15);

} // main

} // classe

8.3. Para

Uma estrutura de repetição para pode ser utilizada quando o algoritmo precisa ter definida aquantidade de vezes que um conjunto de comandos deve ser executado. Nesse caso, a variávelde controle, sua inicialização e finalização, bem como sua atualização, fazem parte do cabeçalhoda estrutura de repetição para e o conjunto de comandos dentro da estrutura de repetição para éexecutado a quantidade de vezes determinada no cabeçalho dessa estrutura. Assim que onúmero de repetições dessa estrutura for finalizado, o fluxo do algoritmo segue normalmente.Note que nessa estrutura de repetição, pode ocorrer que o conjunto de comandos não sejaexecutado nenhuma vez.

Pseudocódigo

Na estrutura de repetição para, utilizaremos as palavras para, de , até, passo e faça querepresentam as palavras principais dessa estrutura e a palavra fimpara; para determinar o fim dobloco de execução dessa estrutura. A estrutura de repetição para para pseudocódigo segue aseguinte regra sintática:

para <variável de controle> de <valor inicial> até <valor final> passo <atualização>

faça

<comandos>;

fimpara;

Copyright Faculdade IBTA

105

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 112: Apostila Algoritmos

Por exemplo:

para x de 0 até 2 passo +1 faça

escrever (“O valor de x é: ” , x);

fimpara;

Nesse exemplo, na primeira vez que a estrutura de repetição do para for solicitada, o valor inicialda variável x é 0, então o comando escrever(...); e a atualização de x (x passa a ser 1) sãoexecutados. Na segunda vez que a estrutura de repetição do para for solicitado, o valor de x é 1,então o comando escrever(...); e a atualização de x (x passa a ser 2) são executados. Na terceiravez que a estrutura de repetição do para for solicitado, o valor de x é 2, então o comandoescrever(...); e a atualização de x (x passa a ser 3) são executados. Na quarta vez que aestrutura de repetição do para for solicitado, o valor de x é 3, então os comandos dentro daestrutura de repetição para não são executados e essa estrutura é finalizada, seguindo com ofluxo do algoritmo após essa estrutura.

O resultado da execução desse exemplo é:

O valor de x é 0

O valor de x é 1

O valor de x é 2

Java

No Java, para a estrutura de repetição para, utilizaremos a palavra for que representa a palavraprincipal dessa estrutura e a chave aberta, {, e chave fechada, }, para representar o conjunto decomandos que fazem parte dessa estrutura. A estrutura de repetição para para Java segue aseguinte regra sintática:

for (<var de controle> = <vlr inicial> ; <condição> ; <atualização>)

{

<comandos>;

}

Por exemplo:

for (x=0 ; x<3 ; x++)

{

System.out.println ("O valor de x é: " + x);

}

Nesse exemplo, na primeira vez que a estrutura de repetição do for for solicitada, o valor inicial davariável x é 0, então o comando System.out.println(...); e a atualização de x (x passa a ser 1)são executados. Na segunda vez que a estrutura de repetição do for for solicitada, o valor de x é

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

106

Page 113: Apostila Algoritmos

1, então o comando System.out.println (...); e a atualização de x (x passa a ser 2) sãoexecutados. Na terceira vez que a estrutura de repetição do for for solicitada, o valor de x é 2,então o comando System.out.println (...); e a atualização de x (x passa a ser 3) são executados.Na quarta vez que a estrutura de repetição do for for solicitada, o valor de x é 3, então oscomandos dentro da estrutura de repetição for não são executados e essa estrutura é finalizada,seguindo com o fluxo do algoritmo após esta estrutura.

O resultado da execução desse exemplo é:

O valor de x é 0

O valor de x é 1

O valor de x é 2

Encadeamento

Na estrutura de repetição para, utilizaremos as palavras para, de, até, passo e faça querepresentam as palavras principais dessa estrutura e a palavra fimpara; para determinar o fim dobloco de execução dessa estrutura. A estrutura de repetição para encadeado para pseudocódigosegue a seguinte regra sintática:

para <var de controle 1> de <valor inicial 1> até <vlr final> passo <atualização 1> faça

para <var de controle 2> de <vlr inicial 2> até <vlr final> passo <atualização 2> faça

<comandos que podem ter outra estrutura de repetição para>;

fimpara;

fimpara;

No Java, para a estrutura de repetição para, utilizaremos a palavra for que representa a palavraprincipal dessa estrutura e a chave aberta, {, e chave fechada, }, para representar o conjunto decomandos que fazem parte dessa estrutura. A estrutura de repetição para encadeado para Javasegue a seguinte regra sintática:

for (<var de controle 1> = <vlr inicial 1> ; <condição 1> ; <atualização 1>)

{

for (<var de controle 2> = <vlr inicial 2> ; <condição 2> ; <atualização 2>)

{

<comandos que podem ter outra estrutura de repetição for>;

}

}

Para um melhor entendimento do encadeamento nas estruturas de repetição para, resolveremoso seguinte exemplo:

Copyright Faculdade IBTA

107

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 114: Apostila Algoritmos

Desenvolva um algoritmo que calcule o fatorial dos números inteiros de 5 até 15.

Nesse exemplo, precisamos usar uma estrutura de repetição para para calcular o fatorial de umnúmero e uma outra estrutura de repetição para para passar por todos os números de 5 até 15.Note que a primeira estrutura de repetição está dentro da segunda estrutura de repetição, ou seja,elas estão encadeadas. A resolução deste exercício em pseudocódigo é a seguinte:

Algoritmo ExemploPara

início_algoritmo

Declarar

i, num, fat numérico_inteiro;

// processamento de dados

para num de 5 até 15 passo +1 faça

fat � num;

para i de (num – 1) até 2 passo –1 faça

fat � fat * i;

fimpara;

escrever (“O valor do fatorial de ” , num , “ é ” , fat); // saída de dados

fimpara;

fim_algoritmo.

A solução desse exercício em Java é a seguinte:

class ExemploPara

{

public static void main(String args [])

{

int i, num, fat;

for (num = 5 ; num <= 15 ; num++)

{

fat = num;

for (i = (num – 1) ; i > 1 ; i––)

{

fat = fat * i;

} // segundo for

System.out.print ("O valor do fatorial de " + num +" é " + fat);

} // primeiro for

} // main

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

108

Page 115: Apostila Algoritmos

} // classe

8.4. Exemplo de Estrutura de Repetição Enquanto, Faça/Enquanto e Paraem pseudocódigo

1. Desenvolva um algoritmo que calcula a soma de todos os números compreendidos entre 1 e100.

// na estrutura de repetição enquanto

Algoritmo SomaEnquanto

Declarar

i, s � 0 numérico_inteiro;

i � 1;

enquanto (i <= 100) faça

s � s + i;

i � i + 1;

fimenquanto;

escrever (“A somatória de 1 até 100 é ” , s);

fim_algoritmo.

// na estrutura de repetição faça/enquanto

Algoritmo SomaFaca

Declarar

i, s � 0 numérico_inteiro;

i � 1;

faça

s � s + i;

i � i + 1;

enquanto (i <= 100);

escrever (“A somatória de 1 até 100 é ” , s);

fim_algoritmo.

// na estrutura de repetição para

Algoritmo SomaPara

Declarar

Copyright Faculdade IBTA

109

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 116: Apostila Algoritmos

i, s � 0 numérico_inteiro;

para i de 1 até 100 passo +1 faça

s � s + i;

fimpara;

escrever (“A somatória de 1 até 100 é ” , s);

fim_algoritmo.

2. Desenvolva um algoritmo que calcule a soma de todos os números pares compreendidos entre1 e 100.

// na estrutura de repetição enquanto

Algoritmo SomaEnquanto

Declarar

i, s � 0 numérico_inteiro;

i � 1;

enquanto (i <= 100) faça

se ((i mod 2) = 0)

então

s � s + i;

fimse;

i � i + 1;

fimenquanto;

escrever (“A somatória dos números pares de 1 até 100 é ” , s);

fim_algoritmo.

// na estrutura de repetição faça/enquanto

Algoritmo SomaFaca

Declarar

i, s � 0 numérico_inteiro;

i � 1;

faça

se ((i mod 2) = 0)

então

s � s + i;

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

110

Page 117: Apostila Algoritmos

fimse;

i � i + 1;

enquanto (i <= 100);

escrever (“A somatória dos números pares de 1 até 100 é ” , s);

fim_algoritmo.

// na estrutura de repetição para

Algoritmo SomaPara

Declarar

i, s � 0 numérico_inteiro;

para i de 1 até 100 passo +1 faça

se ((i mod 2) = 0)

então

s � s + i;

fimse;

fimpara;

escrever (“A somatória dos números pares de 1 até 100 é ” , s);

fim_algoritmo.

3. Desenvolva um algoritmo que mostre um menu de opções para: calcular a soma de todos osnúmeros compreendidos entre 1 e 100; calcular a soma de todos os números parescompreendidos entre 1 e 100; e calcular a soma de todos os números divisíveis por 3.

Algoritmo Soma

Declarar

op, i, s � 0 numérico_inteiro;

faça

escreva (“Digite 1 para soma de todos os números entre 1 e 100\n”);

escreva (“Digite 2 para soma de todos os números pares entre 1 e 100\n”);

escreva (“Digite 3 para soma de todos os números divisíveis por 3 entre 1 e 100\n”);

escreva (“Digite 0 para sair do programa\n”);

leia (op);

escolha (op)

caso 1 : início

i � 1;

enquanto (i <= 100) faça

Copyright Faculdade IBTA

111

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 118: Apostila Algoritmos

s � s + i;

i � i + 1;

fimenquanto;

escrever (“A somatória de 1 até 100 é ” , s);

fim;

caso 2 : início

i � 1;

faça

se ((i mod 2) = 0)

então

s � s + i;

fimse;

i � i + 1;

enquanto (i <= 100);

escrever (“A somatória dos números pares de 1 até 100 é ” , s);

fim;

caso 3 : início

para i de 1 até 100 passo +1 faça

se ((i mod 3) = 0)

então

s � s + i;

fimse;

fimpara;

escrever (“A somatória dos números divisíveis por 3 de 1 até 100 é ” , s);

fim;

caso 0 : início

escrever (“Saindo do programa!”);

fim;

caso contrário : escrever (“opção inválida, tente novamente”);

fimescolha;

enquanto (op <> 0);

fim_algoritmo.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

112

Page 119: Apostila Algoritmos

8.5. Exemplo de Estrutura de Repetição Enquanto, Faça/Enquanto e Paraem Java

1. Desenvolva um algoritmo que calcule a soma de todos os números compreendidos entre 1 e100.

// na estrutura de repetição while

class Soma

{

public static void main (String args [ ])

{

int i, s = 0;

i = 1;

while (i <= 100)

{

s = s + i;

i = i + 1;

} // fim do while

System.out.println (“A somatória de 1 até 100 é ” + s);

System.exit(0);

} // fim do void main

} // fim da classe

// na estrutura de repetição do/while

class Soma

{

public static void main (String args [ ])

{

int i, s = 0;

i = 1;

do

{

s = s + i;

i = i + 1;

} while (i <= 100);

System.out.println (“A somatória de 1 até 100 é ” + s);

System.exit(0);

Copyright Faculdade IBTA

113

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 120: Apostila Algoritmos

} // fim do void main

} // fim da classe

// na estrutura de repetição do

class Soma

{

public static void main (String args [ ])

{

int i, s = 0;

for ( i = 1 ; i <= 100 ; i++ ){

s = s + i;

}

System.out.println (“A somatória de 1 até 100 é ” + s);

System.exit(0);

} // fim do void main

} // fim da classe

2. Desenvolva um algoritmo que calcule a soma de todos os números pares compreendidos entre1 e 100.

// na estrutura de repetição enquanto

class Soma

{

public static void main (String args [ ])

{

int i, s = 0;

i = 1;

while (i <= 100)

{

if ((i % 2) == 0)

{

s = s + i;

} // fim do if

i = i + 1;

} // fim do while

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

114

Page 121: Apostila Algoritmos

System.out.println (“A somatória dos números pares de1 até 100 é ” + s);

System.exit(0);

} // fim do void main

} // fim da classe

// na estrutura de repetição faça/enquanto

class Soma

{

public static void main (String args [ ])

{

int i, s = 0;

i = 1;

do

{

if ((i % 2) == 0)

{

s = s + i;

} // fim do se

i = i + 1;

} while (i <= 100);

System.out.println (“A somatória dos números pares de1 até 100 é ” + s);

System.exit(0);

} // fim do void main

} // fim da classe

// na estrutura de repetição para

class Soma

{

public static void main (String args [ ])

{

int i, s = 0;

for ( i = 1 ; i <= 100 ; i++ )

{

if ((i % 2) == 0)

Copyright Faculdade IBTA

115

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 122: Apostila Algoritmos

{

s = s + i;

} // fim do if

} // fim do for

System.out.println (“A somatória dos números pares de1 até 100 é ” + s);

System.exit(0);

} // fim do void main

} // fim da classe

3. Desenvolva um algoritmo que mostre um menu de opções para: calcular a soma de todos osnúmeros compreendidos entre 1 e 100; calcular a soma de todos os números parescompreendidos entre 1 e 100; e calcular a soma de todos os números divisíveis por 3.

class Soma

{

public static void main (String args [ ])

{

int op, i, s;

do

{

s = 0;

op = Integer.parseInt(JOptionPane.showInputDialog(“Digite1 para soma de todos os números entre 1 e 100\nDigite 2 para soma de todos os números pares entre1 e 100 \nDigite 3 para soma de todos os númerosdivisíveis por 3 entre 1 e 100 \nDigite 0 para sairdo programa”));

switch (op)

{

case 1 : {

i = 1;

while (i <= 100)

{

s = s + i;

i = i + 1;

} // fim do while

System.out.println(“A somatória de 1 até100 é ” + s);

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

116

Page 123: Apostila Algoritmos

}

break;

case 2 : {

i = 1;

do

{

if ((i % 2) == 0)

{

s = s + i;

} // fim do if

i = i + 1;

} while (i <= 100);

System.out.println (“A somatória dosnúmeros pares de 1 até 100 é ” + s);

}

break;

case 3 : {

for ( i = 1 ; i <= 100 ; i++ )

{

if ((i % 3) == 0)

{

s = s + i;

} // fim do if

} // fim do for

System.out.println (“A somatória dosnúmeros divisíveis por 3 de1 até 100 é ” + s);

}

break;

case 0 : {

System.out.println(“Saindo do programa!”);

System.exit(0);

}

break;

default : System.out.println (“opção inválida, tentenovamente”);

} // fim do switch

Copyright Faculdade IBTA

117

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 124: Apostila Algoritmos

} while (op != 0);

} // fim do void main

} // fim da classe

Exercícios de Estrutura de Repetição Enquanto, Faça/Enquanto e Para

Para todos os exercícios abaixo, construir um algoritmo modularizado para cada estrutura derepetição, ou seja, um usando o Enquanto, um usando o Faça/Enquanto e outro usando o Para.

01. Desenvolva um algoritmo que calcule e mostre o quadrado dos números inteiros compreendidosentre 10 e 150.

02. Desenvolva um algoritmo que receba um número inteiro, calcule e mostre o seu fatorial.

03. Desenvolva um algoritmo que receba um número N, calcule e mostre o valor da seguinte série:

Série = 1 + 1/2 + 1/3 + ... + 1/N.

04. Desenvolva um algoritmo que receba um número, calcule e mostre os resultados da tabuadadesse número.

05. Desenvolva um algoritmo que receba dois números inteiros, verifique qual é o maior entre eles,calcule e mostre o resultado da somatória dos números ímpares compreendidos entre esses doisnúmeros.

06. Desenvolva um algoritmo que receba um número N, calcule e mostre o valor da seguinte série:

Série = 1 + 1/1! + 1/2! + 1/3! + ... + 1/N!.

07. Desenvolva um algoritmo que receba um número inteiro N, calcule e mostre a série de Fibonacciaté o seu N-ésimo termo. A série de Fibonacci é dada pela seguinte seqüência: 1, 1, 2, 3, 5, 8, 13,21, 34, 55 ... etc.

08. Desenvolva um algoritmo que receba 100 números reais, verifique e mostre o maior e o menornúmero recebido.

09. Desenvolva um algoritmo que calcule o número de grãos de trigo dispostos num tabuleiro dexadrez e que segue a seguinte regra: no primeiro quadro, colocar um grão de trigo; no segundoquadro, colocar o dobro de grãos de trigo do primeiro quadro; e, para todos os quadrossubseqüentes, colocar o dobro de grãos de trigo do quadro anterior. Um tabuleiro de xadrez tem64 quadros.

10. Desenvolva um algoritmo que receba um número x calcule e mostre um número inteiro que maisse aproxima da raiz quadrada desse número x.

11. Desenvolva um algoritmo que receba um número inteiro, verifique e mostre se esse número éprimo ou não.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

118

Page 125: Apostila Algoritmos

12. Desenvolva um algoritmo que receba dois números inteiros, verifique e mostre todos os númerosprimos existentes entre os dois números recebidos.

13. Desenvolva um algoritmo que mostre todas as possibilidades de lançamento de dois dados, deforma que tenhamos o valor 7 como resultado da soma dos valores de cada dado.

14. Desenvolva um algoritmo que calcule e mostre o valor da seguinte série:

Série = 1 + 2/3 + 3/5 + 4/7 + ... + 50/99.

15. Desenvolva um algoritmo que receba 15 números inteiros, calcule e mostre a somatória do fatorialde cada número recebido.

16. Desenvolva um algoritmo que recebe 30 números reais, calcula e mostra a somatória e a médiados números recebidos.

17. Desenvolva um algoritmo que receba dois números inteiros, verifique qual o maior entre eles,calcule e mostre o quociente e o resto da divisão do maior número pelo menor. Em hipótesenenhuma utilizar os operadores div e mod.

18. Desenvolva um algoritmo que receba o nome e a idade de 50 pessoas, verifique e mostre o nomee a idade da pessoa mais velha e da pessoa mais nova.

19. Desenvolva um algoritmo que calcule e mostre quantos anos serão necessários para queFlorentina seja maior que Clarisbela, considerando que Clarisbela tem 1,50 metros e cresce 2centímetros por ano e Florentina tem 1,10 metros e cresce 3 centímetros por ano.

20. Desenvolva um algoritmo que calcule e mostre o valor da somatória dos trinta primeiros termos daseguinte série:

Série = 5/1000 - 10/980 + 5/960 - 10/940 + ...

21. Desenvolva um algoritmo que receba o salário de Clarisbela, calcule e mostre o salário deFlorentina que é um terço do salário de Clarisbela. Além disso, calcule e mostre quantos mesessão necessários para que o dinheiro aplicado de Florentina seja igual ou maior que o dinheiroaplicado de Clarisbela, considerando que Clarisbela aplicou todo o seu salário na poupança, querende 2% ao mês, e que Florentina aplicou todo o seu salário no fundo de renda fixa, que rende5% ao mês.

22. Desenvolva um algoritmo que receba dois valores inteiros, x e y, calcule e mostre a potência xy,

sem utilizar o operador pot.

23. Desenvolva um algoritmo que receba o sexo, a idade e a experiência no trabalho (s/n) de 50candidatos a uma vaga de uma empresa, calcule e mostre: o número de candidatos do sexomasculino; o número de candidatos do sexo feminino; a idade média dos candidatos que já têmexperiência no trabalho; a porcentagem de homens com mais de 50 anos do total de homens; onúmero de mulheres com idade inferior a 30 e com experiência no trabalho; e a menor e a maioridade entre as mulheres que já têm experiência no trabalho.

Copyright Faculdade IBTA

119

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 126: Apostila Algoritmos

24. Desenvolva um algoritmo que receba 50 números reais, calcule e mostre: a soma dos númerosdigitados; a média dos números digitados; o maior número digitado; o menor número digitado; odobro dos números digitados; o cubo dos números digitados; a porcentagem dos númerosímpares digitados.

25. Desenvolva um algoritmo que calcule e mostre o valor da seguinte série:

Série = 1/2 - 2/4 + 3/6 - 4/8 + 5/10 - 6/12 + ... - 50/100.

26. Desenvolva um algoritmo que receba um número inteiro N, mostre um menu de opções: calcule emostre a soma do fatorial dos números entre 1 e N; calcule e mostre a série de Fibonacci até oseu N-ésimo termo; calcule e mostre o produto dos números entre 1 e N; e calcule e mostre asoma dos números pares entre 1 e N.

27. Desenvolva um algoritmo que mostre um menu de opções: receba 20 números reais, calcule emostre a somatória desses números; receba 15 números reais, calcule e mostre o produto dosnúmeros ímpares desses números; e receba 10 números inteiros, calcule e mostre quais dessesnúmeros são divisíveis por 5 e 7.

28. Desenvolva um algoritmo que mostre um menu de opções: receba a altura e a base de 10triângulos, calcule e mostre a área de cada triângulo; receba a altura e a base de 15 retângulos,calcule e mostre a área de cada retângulo; receba a altura, a base maior e a base menor de 20trapézios, calcule e mostre a área de cada trapézio; e receba o raio de 15 circunferências, calculee mostre a área de cada circunferência.

29. Desenvolva um algoritmo que receba dois valores inteiros, a e b, a > b, mostre um menu deopções que: calcule e mostre a potência a

b, sem utilizar o operador pot; calcule e mostre oquociente e o resto da divisão de a por b, sem usar os operadores div e mod; e calcule e mostrese os valores a e b são primos ou não.

30. Desenvolva um algoritmo que calcule e mostre o valor da seguinte série:

Série = 1/1 - 2/4 + 3/9 - 4/16 + 5/25 - ... + 15/225.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

120

Page 127: Apostila Algoritmos

9. Modularização

Muitas vezes fica complicado desenvolvermos um algoritmo extenso de um único problema. Paraisso, utilizaremos a modularização desse algoritmo, isto é, a divisão do algoritmo em módulos ousub-rotinas, para que o problema dividido em subproblemas possa ser facilmente interpretado edesenvolvido.

Nesse sentido, veremos a necessidade da modularização, aprenderemos como construir módulosde um algoritmo, módulos esses que são conjuntos de comandos que têm como finalidadeexecutar determinada função.

Temos dois tipos de módulos: procedimentos e funções. Os procedimentos são aquelesmódulos que executam um conjunto de comandos sem retorno para o módulo que o chamou. Asfunções são aqueles módulos que executam um conjunto de comando e retornam algum dadopara o módulo que o chamou. A seguir vamos ver como e quando trabalhar com cada um deles.

9.1. Necessidade da Modularização em Programas

Um dos pontos principais para o uso da modularização é a divisão do algoritmo em módulos paraque ele seja melhor interpretado e desenvolvido. Esses módulos acabam sendo mais simples emenos complexos. A divisão em módulos facilita o entendimento parcial do problema eentendendo todos os problemas parciais, no final, teremos entendido o problema maior.

A maioria dos módulos pode ser vista como um mini-algoritmo, ou seja, com entrada de dados,processamento desses dados e saída de resultados.

Outro ponto principal para o uso de modularização é a reutilização de código. Muitas vezes,precisamos repetir um mesmo pedaço do algoritmo, por exemplo, um menu de opções, váriasvezes, dentro de um mesmo algoritmo. Nesse caso, basta desenvolver um módulo com essepedaço do algoritmo e sempre que precisarmos dele no algoritmo, basta fazer a chamada domódulo, evitando reescrever o mesmo código.

9.2. Construção de Módulos

Para focalizarmos o problema e dividi-lo em subproblemas, precisamos adotar uma regra. Essaregra serve para nos orientar na divisão e construção de módulos.

Para construir os módulos, primeiro precisamos analisar o problema e dividi-lo em partesprincipais, que são os módulos. Depois precisamos analisar os módulos obtidos para verificar sea divisão está coerente. Se algum módulo ainda estiver complexo, devemos dividi-lo também emoutros submódulos. Por fim, precisamos analisar todos os módulos e o problema geral paragarantir que o algoritmo mais os módulos resolvam o problema de forma simples.

Esse processo é chamado de Método de Refinamento Sucessivo, pois o problema complexo édividido em problemas menores e, a partir do resultado dos problemas menores, temos oresultado do problema complexo.

Por exemplo, suponha que queremos desenvolver um algoritmo que receba dois valoresnuméricos e uma opção do usuário que decida qual entre as quatro operações básicas damatemática (soma, subtração, divisão e multiplicação) ele quer resolver.

Copyright Faculdade IBTA

121

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 128: Apostila Algoritmos

Analisando esse problema, vamos dividi-lo em subproblemas, por exemplo, um menu de opçõespara que o usuário possa escolher uma operação matemática, o cálculo da soma, o cálculo dasubtração, o cálculo da divisão e o cálculo da multiplicação. Temos assim cinco módulos pararesolver o nosso problema. São módulos coerentes que ajudam a resolver o nosso problema deforma simples. Mas, analisando bem os módulos, verificamos que falta mais um módulo, o móduloprincipal que se encarrega de fazer a chamada dos módulos, enviar e receber dados para essesmódulos. Agora sim temos o nosso problema dividido e analisado, basta começar adesenvolvê-los. Mas para isso, precisamos assimilar outros conceitos como escopo de variáveis,módulo procedimento, módulo função e chamada de módulo que veremos a seguir, completandocom um exemplo.

9.3. Escopo de Variáveis

O escopo de uma variável é onde, dentro do algoritmo, uma variável é válida ou pode serreconhecida. Uma variável pode ter o escopo dividido em dois tipos: variável global ou variávellocal.

Uma variável global é aquela declarada no início do algoritmo e pode ser utilizada por qualquerparte desse algoritmo, seja nos comandos do próprio algoritmo, bem como, dentro de qualquermódulo que pertença ao algoritmo. Nesse caso, sua declaração é feita apenas uma única vez,não sendo permitido que o mesmo nome de variável seja declarado dentro de qualquer outraparte do algoritmo, por exemplo, dentro de qualquer outro módulo.

Uma variável local é aquela declarada dentro de algum bloco, por exemplo, dentro de ummódulo. Nesse caso, essa variável é válida e reconhecida somente dentro do bloco em que foideclarada. Assim, o mesmo nome de variável pode ser declarado dentro de diferentes blocos,pois serão reconhecidas como uma nova variável.

Por exemplo, se declararmos uma variável x no início de um algoritmo, essa variável x pode serusada e alterada em qualquer parte desse algoritmo e em nenhum momento declaradanovamente, ou seja, ela é única no algoritmo inteiro. Mas é muito importante ter o controle dessasvariáveis globais, justamente porque elas podem ser alteradas a qualquer momento. No entanto,se declararmos, usarmos e alterarmos uma variável y dentro do módulo soma, poderemostambém declará-la, utilizá-la e alterá-la dentro do módulo subtração, do módulo divisão e domódulo multiplicação, se assim o desejarmos. Nesse caso, não precisando tomar os cuidadosnecessários que uma variável global precisa.

9.4. Módulos Procedimento

Os módulos procedimento são os módulos que não retornam valor para o módulo ou algoritmoque os tenham chamado. Nesse sentido, esse tipo de módulo é utilizado quando o algoritmoprincipal ou módulo que chama o módulo procedimento não necessita de retorno de qualquerdado do módulo.

Pseudocódigo

Nos módulos procedimento, utilizaremos as palavras início_módulo e fimmódulo; querepresentam as palavras principais desse módulo, ou seja, o início e o fim do módulo,respectivamente. Os módulos procedimento em pseudocódigo seguem a seguinte regra sintática:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

122

Page 129: Apostila Algoritmos

<nome do módulo> ( )

início_módulo

<comandos>;

fimmódulo;

Note que os comandos dentro do módulo são comuns àqueles de qualquer algoritmo, ou seja,com entrada de dados, processamento desses dados e saída de resultados.

Por exemplo, suponha que queiramos desenvolver um módulo que imprima o nome da disciplinae o nome da instituição de ensino:

Dados ( )

início_módulo

Declarar

disc, fac alfanumérico;

disc � “Lógica de Programação”;

fac � “IBTA”;

escrever (“nome da disciplina => ” , disc);

escrever (“nome da instituição de ensino =>” , fac);

fimmódulo;

Neste exemplo, Dados é o nome do módulo procedimento. O módulo parece um mini-algoritmocom declaração de variáveis, entrada de dados para essas variáveis e a saída de resultados. Oque difere um algoritmo de um módulo é justamente sua simplicidade.

Java

Nos módulos procedimento em Java, utilizaremos a palavra void que representa a palavraprincipal dessa estrutura e a chave aberta, {, e chave fechada, }, para representar o conjunto decomandos que fazem parte desse módulo. Os módulos procedimento em Java seguem a seguinteregra sintática:

void <nome do módulo> ( )

{

<comandos>;

}

Note que os comandos dentro do módulo são comuns àqueles de qualquer programa, ou seja,com entrada de dados, processamento desses dados e saída de resultados.

Por exemplo, suponha que queremos desenvolver um módulo que imprime o nome da disciplina eo nome da instituição de ensino:

Copyright Faculdade IBTA

123

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 130: Apostila Algoritmos

void Dados ( ){

String disc, fac;

disc = “Lógica de Programação”;fac = “IBTA”;System.out.println (“nome da disciplina => ” + disc);System.out.println (“nome da instituição de ensino =>” + fac);

}

Nesse exemplo, Dados é o nome do módulo procedimento. O módulo parece um miniprogramacom declaração de variáveis, entrada de dados para essas variáveis e a saída de resultados. Oque difere um programa de um módulo é justamente sua simplicidade.

Perceba o uso da palavra void, ela é utilizada no Java para identificar um módulo procedimento.

9.5. Módulos Função

Os módulos função são os módulos que retornam algum valor para o módulo ou algoritmo que ostenha chamado. Nesse sentido, esse tipo de módulo é utilizado quando o algoritmo principal oumódulo que chama o módulo função necessita de retorno de qualquer dado do módulo.

Pseudocódigo

Nos módulos função, utilizaremos as palavras início_módulo e fimmódulo; que representam aspalavras principais desse módulo, ou seja, o início e o fim do módulo, respectivamente. Alémdessas palavras, utilizaremos a palavra retornar que é a principal palavra do módulo função, poisé a partir desse comando que um valor é retornado para o algoritmo ou módulo que o chamou. Osmódulos função em pseudocódigo seguem a seguinte regra sintática:

<tipo de retorno> <nome do módulo> ( )

início_módulo

<comandos>;

retornar <valor de retorno>;

fimmódulo;

Note que os comandos dentro do módulo são comuns àqueles de qualquer algoritmo, ou seja,com entrada de dados, processamento desses dados e saída de resultados. Note ainda que ovalor de retorno enviado pelo comando retornar precisa ser do mesmo tipo de dado declaradopara o módulo função.

Por exemplo, suponha que queremos desenvolver um módulo que retorna o nome da disciplina eo nome da instituição de ensino:

alfanumérico Dados ( )

início_módulo

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

124

Page 131: Apostila Algoritmos

Declarar

disc, fac, mens alfanumérico;

disc � “Lógica de Programação”;

fac � “IBTA”;

mens � “nome da disciplina => ” + disc + “\nnome da instituição de ensino => ” + fac;

retornar mens;

fimmódulo;

Nesse exemplo, Dados é o nome do módulo função. O módulo parece um mini-algoritmo comdeclaração de variáveis, entrada de dados para essas variáveis, processamento de dados eretorno dos resultados. O que difere um algoritmo de um módulo é justamente sua simplicidade.

Note que o tipo de retorno do módulo função Dados é alfanumérico e o retorno do módulo é oconteúdo da variável mens do tipo alfanumérico, ou seja, do mesmo tipo de dados, isso éobrigatório.

Java

Nos módulos função em Java, utilizaremos a palavra return que representa a palavra principaldessa estrutura e a chave aberta, {, e chave fechada, }, para representar o conjunto de comandosque fazem parte desse módulo. É a partir do comando return que um valor é retornado para oprograma ou método que o chamou. Os módulos função em Java seguem a seguinte regrasintática:

<tipo de retorno> <nome do módulo> ( )

{

<comandos>;

return <valor de retorno>;

}

Note que os comandos dentro do módulo são comuns àqueles de qualquer programa, ou seja,com entrada de dados, processamento desses dados e saída de resultados. Note ainda que ovalor de retorno enviado pelo comando return precisa ser do mesmo tipo de dado declarado parao módulo função.

Por exemplo, suponha que queiramos desenvolver um módulo que retorna o nome da disciplina eo nome da instituição de ensino:

String Dados ( ){

String disc, fac, mens;

disc = “Lógica de Programação”;fac = “IBTA”;

Copyright Faculdade IBTA

125

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 132: Apostila Algoritmos

mens = “nome da disciplina => ” + disc + “\nnome da instituiçãode ensino => ” + fac;

return mens;

}

Nesse exemplo, Dados é o nome do módulo função. O módulo parece um miniprograma comdeclaração de variáveis, entrada de dados para essas variáveis, processamento de dados e oretorno dos resultados. O que difere um programa de um módulo é justamente sua simplicidade.

Note que o tipo de retorno do módulo função Dados é String e o retorno do módulo é o conteúdoda variável mens que é do tipo String, ou seja, do mesmo tipo de dados. Isso é obrigatório.

9.6. Parametrização de Módulos

Aprendemos a dividir um problema usando o método de refinamentos sucessivos e também aidentificar cada subdivisão do problema como um módulo do algoritmo que desejamosdesenvolver. Aprendemos também que temos dois tipos de módulos, o módulo função e o móduloprocedimento, para desenvolver cada um dos módulos detectados. No entanto, cada módulointerage com o módulo principal ou mesmo com outros módulos e, muitas vezes, quando osmódulos são chamados há a necessidade de enviar dados para que esses módulos possamresolver o seu subproblema. Esses dados que são enviados para os módulos são chamados deargumentos que são passados como parâmetros aos módulos.

O uso de argumentos passados como parâmetros em módulos, sejam eles funções ouprocedimentos é muito comum. Os exemplos vistos anteriormente para funções e procedimentosestão sem o uso de parametrização de módulos, por isso, após o nome dos módulos, osparênteses estão vazios. É dentro dos parênteses que os argumentos são passados comoparâmetros aos módulos.

Quando passamos argumentos como parâmetros, precisamos identificar qual o tipo de dado serápassado como parâmetro. Nesse caso, cada argumento deverá ser declarado no momento emque o módulo for desenvolvido.

Note que, o uso de parametrização em módulos depende do subproblema que o módulo precisaresolver. Nesse caso, o desenvolvedor do algoritmo ou módulos é quem deve decidir se o uso ounão da parametrização é necessário para um determinado módulo. Muitas vezes, é possíveldesenvolver o mesmo problema com ou sem o uso de parametrização, como vimos nos exemplosanteriores, por isso, essa decisão cabe ao desenvolvedor.

Vamos rever os mesmos exemplos do módulo procedimento em pseudocódigo e do módulofunção em Java, agora passando argumentos como parâmetro. Note que o uso deparametrização em módulos pode ser tanto para o módulo função como para o móduloprocedimento, não havendo diferenças no seu desenvolvimento, apenas o retorno ou não de umvalor.

Pseudocódigo

Nos módulos procedimento, utilizaremos as palavras início_módulo e fimmódulo; querepresentam as palavras principais deste módulo, ou seja, o início e o fim do módulo,respectivamente. Os módulos procedimento em pseudocódigo com parametrização seguem aseguinte regra sintática:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

126

Page 133: Apostila Algoritmos

<nome do módulo> (<nome da var> <tipo da var>, ... , <nome da var> <tipo da var>)

início_módulo

<comandos>;

fimmódulo;

Note que a quantidade de argumentos que pode ser passada como parâmetro não é determinada,pode ser um único argumento ou uma quantidade finita de argumentos.

Por exemplo, suponha que queremos desenvolver um módulo que recebe dois argumentos dotipo alfanumérico como parâmetro e imprime o nome da disciplina e o nome da instituição deensino:

Dados (disc alfanumérico, fac alfanumérico)

início_módulo

escrever (“nome da disciplina => ” , disc);

escrever (“nome da instituição de ensino => ” , fac);

fimmódulo;

Nesse exemplo, não é mais necessária a declaração das variáveis disc e fac dentro do móduloDados, pois esses dados estão declarados no cabeçalho do módulo como argumentos quereceberão dados que serão passados como parâmetros na chamada desse módulo.

Java

Nos módulos função em Java, utilizaremos a palavra return que representa a palavra principaldessa estrutura e a chave aberta, {, e a chave fechada, }, para representar o conjunto decomandos que fazem parte desse módulo. É a partir do comando return que um valor é retornadopara o programa ou método que o chamou. Os módulos função em Java com parametrizaçãoseguem a seguinte regra sintática:

<tipo de retorno> <nome módulo> (<tipo var> <nome var> , ... , <tipo var> <nome var>)

{

<comandos>;

return <valor de retorno>;

}

Note que a quantidade de argumentos que pode ser passada como parâmetro não é determinada,pode ser um único argumento ou uma quantidade finita de argumentos.

Por exemplo, suponha que queremos desenvolver um módulo que recebe dois argumentos dotipo String como parâmetro e imprime o nome da disciplina e o nome da instituição de ensino:

String Dados (String disc , String fac){

Copyright Faculdade IBTA

127

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 134: Apostila Algoritmos

String mens;

mens = “nome da disciplina => ” + disc + “\nnome da instituiçãode ensino => ” + fac;

return mens;

}

Neste exemplo, não é mais necessária a declaração das variáveis disc e fac dentro do móduloDados, pois esses dados estão declarados no cabeçalho do módulo como argumentos quereceberão dados que serão passados como parâmetros na chamada desse módulo.

9.7. Chamada dos Módulos

Aprendemos como desenvolver um módulo e como passar argumentos como parâmetros para ummódulo. No entanto, quando usamos modularização, o algoritmo principal ou outros módulosprecisam chamar os módulos para que eles sejam executados. A chamada de módulos dependedo tipo de módulo.

Para o módulo procedimento, basta fazer a chamada desse módulo pelo nome do módulo,passando os respectivos dados como argumento se for necessário.

Para o módulo função, a chamada desse módulo precisa estar vinculada a uma variável, ou seja,o retorno de dado da chamada do módulo função deve ser atribuído a uma variável cujo tipo dedado deve ser o mesmo que o dado que está sendo retornado. Nesse caso, a passagem dedados como argumentos, se for necessária, não se difere do módulo procedimento.

Por exemplo, vamos fazer a chamada dos módulos função e procedimento dos exemplos vistosanteriormente.

Pseudocódigo – Módulo Procedimento sem Parametrização

A chamada dos módulos procedimento sem parametrização em pseudocódigo segue a seguinteregra sintática:

<nome do módulo> ( );

Por exemplo, vamos chamar o módulo que imprime o nome da disciplina e o nome da instituiçãode ensino desenvolvido anteriormente em pseudocódigo:

Dados ( );

Neste exemplo, Dados é o nome do módulo procedimento, como ele é um módulo semparametrização, seus parênteses ficam vazios.

Java – Módulo Procedimento sem Parametrização

A chamada dos módulos procedimento sem parametrização em Java segue a seguinte regrasintática:

<nome do módulo> ( );

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

128

Page 135: Apostila Algoritmos

Por exemplo, vamos chamar o módulo que imprime o nome da disciplina e o nome da instituiçãode ensino desenvolvido anteriormente em Java:

Dados ();

Neste exemplo, Dados é o nome do módulo procedimento, como ele é um módulo semparametrização, seus parênteses ficam vazios.

Pseudocódigo – Módulo Função sem Parametrização

A chamada dos módulos função sem parametrização em pseudocódigo segue a seguinte regrasintática:

<variável> � <nome do módulo> ( );

Por exemplo, vamos chamar o módulo que imprime o nome da disciplina e o nome da instituiçãode ensino desenvolvido anteriormente em pseudocódigo:

alfanumérico m;

m � Dados ( );

Neste exemplo, Dados é o nome do módulo função, como ele é um módulo sem parametrização,seus parênteses ficam vazios. No entanto, como ele deve retornar um valor, esse valor é atribuídoà variável m.

Note que o tipo de retorno do módulo função Dados é alfanumérico e a variável m que recebe ovalor de retorno da função também é do tipo alfanumérico, ou seja, do mesmo tipo de dados.Isso é obrigatório!

Java – Módulo Função sem Parametrização

A chamada dos módulos função sem parametrização em Java segue a seguinte regra sintática:

<variável> = <nome do módulo> ( );

Por exemplo, vamos chamar o módulo que imprime o nome da disciplina e o nome da instituiçãode ensino desenvolvido anteriormente em Java:

String m;

m = Dados ( );

Neste exemplo, Dados é o nome do módulo função, como ele é um módulo sem parametrização,seus parênteses ficam vazios. No entanto, como ele deve retornar um valor, esse valor é atribuídoà variável m.

Note que o tipo de retorno do módulo função Dados é String e a variável m que recebe o valor deretorno da função também é do tipo String, ou seja, do mesmo tipo de dados. Isso é obrigatório.

Copyright Faculdade IBTA

129

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 136: Apostila Algoritmos

Pseudocódigo – Módulo Procedimento com Parametrização

A chamada dos módulos procedimentos com parametrização em pseudocódigo segue a seguinteregra sintática:

<nome do módulo> (<valor ou variável > , ... , <valor ou variável >);

Por exemplo, vamos chamar o módulo que imprime o nome da disciplina e o nome da instituiçãode ensino desenvolvido anteriormente em psedocódigo:

Dados (“Lógica de Programação” , “IBTA”);

Neste exemplo, Dados é o nome do módulo procedimento, como ele é um módulo comparametrização, dentro de seus parênteses são passados os argumentos como parâmetros parao módulo Dados.

Note que a quantidade de argumentos que foi passada como parâmetro é a mesma do móduloquando ele foi declarado. No nosso exemplo, a quantidade de argumentos é dois: “Lógica deProgramação” e “IBTA”.

Java – Módulo Função com Parametrização

A chamada dos módulos função com parametrização em Java segue a seguinte regra sintática:

<variável> = <nome do módulo> (<valor ou variável > , ... , <valor ou variável>);

Por exemplo, vamos chamar o módulo que imprime o nome da disciplina e o nome da instituiçãode ensino desenvolvido anteriormente em Java:

String m;

m = Dados ("Lógica de Programação" , "IBTA");

Neste exemplo, Dados é o nome do módulo função, como ele é um módulo com parametrização,dentro de seus parênteses são passados os argumentos como parâmetros para o módulo Dados.

Note que a quantidade de argumentos que foi passada como parâmetro é a mesma do móduloquando ele foi declarado. No nosso exemplo, a quantidade de argumentos é dois: “Lógica deProgramação” e “IBTA”.

9.8. Exemplo de Modularização em Pseudocódigo

1. Desenvolva um algoritmo que receba dois valores numérico inteiro e o símbolo da operaçãoconforme tabela a seguir, calcule e mostre a operação efetuada:

Símbolo da operação Nome da operação

+ adição

- subtração

* multiplicação

/ divisão

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

130

Page 137: Apostila Algoritmos

// módulo função Mais que recebe dois valores inteiros e retorna um valor inteiro

numérico_inteiro Mais (n1 numérico_inteiro , n2 numérico_inteiro)

início_módulo

// declaração de variáveis que só podem ser usadas dentro deste módulo

Declarar

res numérico_inteiro;

// processamento de dados

res � n1 + n2;

// retorno do módulo

retornar res;

fimmódulo; // Mais

// módulo procedimento Menos que recebe dois valores inteiros

Menos (n1 numérico_inteiro, n2 numérico_inteiro)

início_módulo

// declaração de variáveis que só podem ser usadas dentro deste módulo

Declarar

res numérico_inteiro;

// processamento de dados

res � n1 - n2;

// saída de resultados

escrever (“A diferença de ” , n1 , “ com ” , n2 , “ é ” , res);

fimmódulo; // Menos

// módulo procedimento Vezes que recebe dois valores inteiros

Vezes (n1 numérico_inteiro, n2 numérico_inteiro)

início_módulo

// declaração de variáveis que só podem ser usados dentro deste módulo

Declarar

res numérico_inteiro;

// processamento de dados

res � n1 * n2;

// saída de resultados

escrever (“O produto de ” , n1 , “ com ” , n2 , “ é ” , res);

Copyright Faculdade IBTA

131

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 138: Apostila Algoritmos

fimmódulo; // Vezes

// módulo função Dividido que recebe dois valores inteiros e retorna um valor real

numérico_real Dividido (n1 numérico_inteiro, n2 numérico_inteiro)

início_módulo

// declaração de variáveis que só podem ser usadas dentro deste módulo

Declarar

res numérico_real;

// processamento de dados

res � n1 / n2;

// retorno do módulo

retornar res;

fimmódulo; // Dividido

// módulo principal

Algoritmo Calculo

início_algoritmo

// declaração de variáveis e/ou constantes que podem ser usadas no algoritmo Calculo

Declarar

d numérico_real;

soma, num1, num2 numérico_inteiro;

oper alfanumérico;

// mensagem ao usuário

escrever (“Digite dois inteiros e a operação”);

// entrada de dados

ler (num1, num2, oper);

// processamento de dados

escolha (oper)

caso ‘+’ : // chamada do módulo função Mais, passando num1 e num2 como// parâmetro e atribuindo o retorno do módulo na variável somasoma � Mais(num1 , num2);// saída de resultadosescrever (“A soma de ” , num1 , “ com ” , num2 , “ é ” , soma);

caso ‘-’ : // chamada domódulo procedimento Menos, passando num1 e num2 como// parâmetroMenos (num1 , num2);

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

132

Page 139: Apostila Algoritmos

caso ‘*’ : // chamada do módulo procedimento vezes, passando num1 e num2 como// parâmetro

Vezes (num1 , num2);

caso ‘/’ : // chamada do módulo função Dividido, passando num1 e num2 como// parâmetro e atribuindo o retorno do módulo na variável dd � Dividido (num1 , num2);// saída de resultadosescrever (“A divisão de ” , num1 , “ com ” , num2 , “ é ” , d);

caso contrário : // saída de resultadosescrever (“operação inválida”);

fimescolha;

fim_algoritmo.

2. Desenvolva um algoritmo que mostre um menu de opções para: calcular a soma de trêsnúmeros fornecidos pelo usuário; verificar se um número fornecido pelo usuário é par; everificar se um número fornecido pelo usuário é divisível por 3.

// módulo procedimento Menu

Menu()

início_módulo

// mensagens ao usuário

escrever ("Digite 1 para somar três números\n");

escrever ("Digite 2 para verificar se um número é par\n");

escrever ("Digite 3 para verificar se um número é divisível por 3\n");

escrever ("Digite 0 para sair do programa\n");

fimmódulo; // Menu

// módulo função SomaTudo que retorna um valor inteiro

numérico_inteiro SomaTudo ()

início_módulo

// declaração de variáveis que só podem ser usadas dentro deste módulo

Declarar

s � 0, i numérico_inteiro;

// entrada de dados e processamento de dados

ler (i);

s � s + i;

ler (i);

s � s + i;

ler (i);

Copyright Faculdade IBTA

133

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 140: Apostila Algoritmos

s � s + i;

// retorno do módulo

retornar s;

fimmódulo; // SomaTudo

// módulo procedimento Pares que recebe um valor inteiro

Pares (par numérico_inteiro)

início_módulo

// processamento de dados

se ((par mod 2) = 0)

então

// saída de resultados

escrever ("O número ", par, " é par ");

senão

// saída de resultados

escrever ("O número ", par, " não é par ");

fimse;

fimmódulo; // Pares

// módulo função Divisivel3 que recebe um valor inteiro e retorna um valor lógico

lógico Divisivel3 (d numérico_inteiro)

início_módulo

// declaração de variáveis que só podem ser usadas dentro deste módulo

Declarar

res lógico;

// processamento de dados

se ((d mod 3) = 0)

então

res � verdadeiro;

senão

res � falso;

fimse;

// retorno da função

retornar res;

fimmódulo; // Divisivel3

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

134

Page 141: Apostila Algoritmos

// módulo principal

Algoritmo Somador

início_algoritmo

// declaração de variáveis que só podem ser usadas dentro do algoritmo Somador

Declarar

op, soma, num numérico_inteiro;

log lógico;

// processamento de dados

// chamada do módulo procedimento Menu, sem parametrização

Menu();

// entrada de dados

leia (op);

escolha (op)

caso 1 : // chamada do módulo função SomaTudo, sem parâmetrização e atribuindo o// retorno do módulo na variável somasoma � SomaTudo();// saída de resultadosescrever (“A somatória de três números fornecidos pelo usuário é: ” , soma);

caso 2 : // entrada de dados pelo usuárioler (num);// chamada do módulo procedimento Pares, passando o número num como// parâmetroPares(num);

caso 3 : // entrada de dados pelo usuárioler (num);// chamada do módulo função Divisivel3, passando o número num como// parâmetro e atribuindo o retorno do módulo na variável loglog � Divisivel3(num);// processamento de dados

se (log = verdadeiro)então

// saída de resultados

escrever (“O número ”, num, “ é divisível por 3 ”);senão

// saída de resultadosescrever (“O número ”, num, “ não é divisível por 3 ”);

fimse;caso 0 : escrever (“Saindo do programa!”);caso contrário : escrever (“opção inválida, tente novamente”);

fimescolha;fim_algoritmo.

Copyright Faculdade IBTA

135

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 142: Apostila Algoritmos

3. Desenvolva um algoritmo modularizado que receba o nome e os dados para cálculo da área deuma figura geométrica conforme tabela abaixo, e a partir da escolha do usuário por um menude opções, calcule e mostre a área da figura geométrica:

Figura geométrica Fórmula

quadrado lado * lado

triângulo (base * altura) / 2

retângulo base * altura

trapézio ((Base maior + base menor) * altura) / 2

// módulo procedimento Menu

Menu()

início_módulo

// mensagens ao usuário

escrever ("Digite 1 para área do quadrado\n");

escrever ("Digite 2 para área do triângulo\n");

escrever ("Digite 3 para área do retângulo\n");

escrever ("Digite 4 para área do trapézio\n");

escrever ("Digite 0 para sair do programa\n");

fimmódulo; // Menu

// módulo função Quadrado que recebe um valor real e retorna um valor real

numérico_real Quadrado (l numérico_real)

início_módulo

// declaração de variáveis que só podem ser usadas dentro deste módulo

Declarar

res numérico_real;

// processamento de dados

res � l * l;

// retorno do módulo

retornar res;

fimmódulo; // Quadrado

// módulo procedimento Triangulo que recebe dois valores reais

Triangulo (b numérico_real, h numérico_real)

início_módulo

// declaração de variáveis que só podem ser usadas dentro deste módulo

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

136

Page 143: Apostila Algoritmos

Declarar

res numérico_real;

// processamento de dados

res � (b * h) / 2;

// saída de resultados

escrever ("A área do triângulo de base " , b , " e altura " , h , " é " , res);

fimmódulo; // Triangulo

// módulo procedimento Retangulo que recebe dois valores reais

Retangulo (b numérico_real, h numérico_real)

início_módulo

// declaração de variáveis que só podem ser usadas dentro deste módulo

Declarar

res numérico_real;

// processamento de dados

res � b * h;

// saída de resultados

escrever ("A área do retângulo de base " , b , " e altura " , h , " é " , res);

fimmódulo; // Retangulo

// módulo função Trapezio que retorna um valor real

numérico_real Trapezio ( )

início_módulo

// declaração de variáveis que só podem ser usadas dentro deste módulo

Declarar

res, b1, b2, h numérico_real;

// entrada de dados

ler (b1, b2, h);

// processamento de dados

res � ((b1 + b2) * h) / 2;

// retorno do módulo

retornar res;

fimmódulo; // Trapezio

// módulo principal

Copyright Faculdade IBTA

137

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 144: Apostila Algoritmos

Algoritmo CalculoArea

início_algoritmo

// declaração de variáveis e/ou constantes que podem ser usadas no algoritmo

// CalculoArea

Declarar

retorno, lado, base, altura numérico_real;

figura numérico_inteiro;

// processamento de dados

// chamada do módulo procedimento Menu, sem parametrização

Menu();

// entrada de dados

leia (figura);

escolha (figura)

caso 1 : // entrada de dadosler (lado);// chamada do módulo função Quadrado, passando lado como// parâmetro e atribuindo o retorno do módulo na variável retornoretorno � Quadrado(lado);// saída de resultadosescrever (“A área do quadrado de lado ” , lado , “ é ” , retorno);

caso 2 : // entrada de dadosler (base, altura);// chamada do módulo procedimento Triangulo, passando base e altura// como parâmetroTriangulo (base, altura);

caso 3 : // entrada de dadosler (base, altura);// chamada do módulo procedimento Retangulo, passando base e altura// como parâmetro

Retangulo (base, altura);

caso 4 : // chamada do módulo função Trapezio e atribuindo o retorno do módulo na// variável retornoretorno � Trapezio ( );// saída de resultadosescrever (“A area do trapézio é ” , retorno);

caso 0 : escrever (“Saindo do programa!”);

caso contrário : // saída de resultadosescrever (“operação inválida”);

fimescolha;fim_algoritmo.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

138

Page 145: Apostila Algoritmos

4. Desenvolva um algoritmo que mostre um menu de opções para: calcular a soma de todos osnúmeros compreendidos entre 1 e 100; calcular a soma de todos os números parescompreendidos entre 1 e 100; e calcular a soma de todos os números divisíveis por 3.

// módulo procedimento Menu

Menu()

início

escreva (“Digite 1 para soma de todos os números entre 1 e 100\n”);

escreva (“Digite 2 para soma de todos os números pares entre 1 e 100\n”);

escreva (“Digite 3 para soma de todos os números divisíveis por 3 entre 1 e 100\n”);

escreva (“Digite 0 para sair do programa\n”);

fimmódulo; // Menu

// módulo função SomaTudo que retorna um valor inteiro

numérico_inteiro SomaTudo ()

início

Declarar

s � 0, i numérico_inteiro;

i � 1;

// processamento de dados

enquanto (i <= 100) faça

s � s + i;

i � i + 1;

fimenquanto;

retornar s; // retorno do módulo

fimmódulo; // Soma Tudo

// módulo procedimento SomaPares que recebe um valor inteiro

SomaPares (par numérico_inteiro)

início

Declarar

s � 0, i numérico_inteiro;

i � 1;

// processamento de dados

faça

se ((i mod par) = 0)

Copyright Faculdade IBTA

139

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 146: Apostila Algoritmos

então

s � s + i;

fimse;

i � i + 1;

enquanto (i <= 100);

escreva (“A somatória dos números pares de 1 até 100 é ” , s); // saída de resultados

fimmódulo; // SomaPares

// módulo função SomaDivisivel3 que recebe um valor inteiro e retorna um valor inteiro

numérico_inteiro SomaDivisivel3 (d numérico_inteiro)

início

Declarar

i, s � 0 numérico_inteiro;

// processamento de dados

para i de 1 até 100 passo +1 faça

se ((i mod d) = 0)

então

s � s + i;

fimse;

fimpara;

retornar s; // retorno da função

fimmódulo; // SomaDivisivel3

// módulo principal

Algoritmo Somador

Declarar

op, soma, d numérico_inteiro;

// processamento de dados

faça

/* chamada do módulo procedimento Menu, sem parametrização */

Menu();

leia (op); // entrada de dados

escolha (op)

caso 1 : soma � SomaTudo();escreva (“A somatória de 1 até 100 é ” , soma); // saída de resultados

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

140

Page 147: Apostila Algoritmos

caso 2 : SomaPares(2);

caso 3 : d � SomaDivisivel3(3);escreva (“A somatória dos números divisíveis por 3 de 1 até 100 é ” , d);

caso 0 : escreva (“Saindo do programa!”);

caso contrário : escreva (“opção inválida, tente novamente”);

fimescolha;

enquanto (op 0);

fim_algoritmo.

9.9. Exemplo de Modularização em Java

1. Desenvolva um algoritmo que receba dois valores numéricos inteiros e o símbolo da operaçãoconforme tabela abaixo, calcule e mostre a operação efetuada:

Símbolo da operação Nome da operação

+ adição

- subtração

* multiplicação

/ divisão

class Calculo

{

// módulo função Mais que recebe dois valores inteiros e retorna// um valor inteiro

static int Mais (int n1 , int n2)

{// declaração de variáveis que só podem ser usados dentro// deste módulo

int res;

// processamento de dadosres = n1 + n2;// retorno do módulo

return res;

} // fim do módulo Mais

// módulo procedimento Menos que recebe dois valores inteiros

static void Menos (int n1 , int n2)

{// declaração de variáveis que só podem ser usadas dentro// deste módulo

int res;

// processamento de dados

Copyright Faculdade IBTA

141

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 148: Apostila Algoritmos

res = n1 - n2;// saída de resultadosSystem.out.println (“A diferença de ” + n1 + “ com ” + n2 + “

é ” + res);

} // fim do módulo Menos

// módulo procedimento Vezes que recebe dois valores inteiros

static void Vezes (int n1 , int n2)

{// declaração de variáveis que só podem ser usadas dentro// deste módulo

int res;

// processamento de dadosres = n1 * n2;// saída de resultadosSystem.out.println (“O produto de ” + n1 + “ com ” + n2 + “

é ” + res);

} // fim do módulo Vezes

// módulo função Dividido que recebe dois valores inteiros e// retorna um valor real

static double Dividido (int n1 , int n2)

{// declaração de variáveis que só podem ser usadas dentro// deste módulo

double res;

// processamento de dadosres = (double)n1 / (double)n2;

// retorno do módulo

return res;

} // fim do módulo Dividido

// módulo principal

public static void main (String args [ ]){

// declaração de variáveis e/ou constantes que podem ser

// usadas no algoritmo Calculo

double d ;

int oper, soma, num1, num2;

// mensagem ao usuário e entrada de dadosnum1 = Integer.parseInt(JOptionPane.showInputDialog(“Digite um

número inteiro”));num2 = Integer.parseInt(JOptionPane.showInputDialog(“Digite um

número inteiro”));oper = Integer.parseInt(JOptionPane.showInputDialog(“Digite a

operação: \n1 para somar \n2 para subtrair\n3 para multiplicar \n4 para dividir”));

// processamento de dados

switch (oper)

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

142

Page 149: Apostila Algoritmos

{case 1: // chamada do módulo função Mais, passando num1 e

// num2 como parâmetro e atribuindo o retorno do// módulo na variável somasoma = Mais(num1 , num2);// saída de resultadosSystem.out.println (“A soma de ” + num1 + “ com ” +

num2 + “ é ” + soma);

break;case 2: // chamada domódulo procedimento Menos, passando

// num1 e num2 como parâmetroMenos (num1 , num2);

break;case 3: // chamada do módulo procedimento vezes, passando

// num1 e num2 como parâmetro

Vezes (num1 , num2);

break;case 4: // chamada do módulo função Dividido, passando num1

// e num2 como parâmetro e atribuindo o retorno do// módulo na variável d

d = Dividido (num1 , num2);// saída de resultadosSystem.out.println (“A divisão de ” + num1 + “

com ” + num2 + “ é ” + d);

break;default: // saída de resultados

System.out.println (“operação inválida”);

} // fim do switchSystem.exit(0);

} // fim do void main

} // fim da classe

2. Desenvolva um algoritmo que mostre um menu de opções para: calcular a soma de trêsnúmeros fornecidos pelo usuário; verificar se um número fornecido pelo usuário é par; everificar se um número fornecido pelo usuário é divisível por 3.

class Somador

{// módulo procedimento Menupublic static int Menu()

{String msg = “”;int op;

msg = msg + “Digite 1 para somar três números\n”;msg = msg + “Digite 2 para verificar se um número é par\n”;msg = msg + “Digite 3 para verificar se um número é divisível

por 3\n”;msg = msg + “Digite 0 para sair do programa\n”;op = Integer.parseInt(JOptionPane.showInputDialog(msg));

Copyright Faculdade IBTA

143

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 150: Apostila Algoritmos

return op;

} // Menu

// módulo função SomaTudo que retorna um valor inteiro

public static int SomaTudo ()

{// declaração de variáveis que só podem ser usadas dentro

// deste módulo

int s = 0, i;

// processamento de dadosi = Integer.parseInt(JOptionPane.showInputDialog (“Digite um

número”));s = s + i;i = Integer.parseInt(JOptionPane.showInputDialog (“Digite um

número”));s = s + i;i = Integer.parseInt(JOptionPane.showInputDialog (“Digite um

número”));s = s + i;// retorno do módulo

return s;

} // SomaTudo

// módulo procedimento Pares que recebe um valor inteiro

public static void Pares (int par)

{

// processamento de dados

if ((par % 2) == 0)

{// saída de resultadosSystem.out.println (“O número ” + par + “ é par ”);

}else

{// saída de resultadosSystem.out.println (“O número ” + par + “ não é par ”);

}} // Pares

// módulo função Divisivel3 que recebe um valor inteiro e retorna// um valor booleano

public static boolean Divisivel3 (int d)

{// declaração de variáveis que só podem ser usadas dentro

// deste módulo

boolean res;

// processamento de dados

if ((d % 3) == 0)

{

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

144

Page 151: Apostila Algoritmos

res = true;

}else

{res = false;

}// retorno da função

return res;

} // Divisivel3

// módulo principal

public static void main (String arg []){

// declaração de variáveis que só podem ser usadas dentro do

// algoritmo principal

int op = 0, soma, num;

boolean log;

// processamento de dados

do{op = Menu();// entrada de dados

switch (op)

{case 1: soma = SomaTudo();

System.out.println (“A somatória de três númerosfornecidos pelo usuário é: ” + soma);

break;case 2: num = Integer.parseInt(JOptionPane.showInputDialog

(“Digite um número”));Pares(num);

break;case 3: num = Integer.parseInt(JOptionPane.showInputDialog

(“Digite um número”));log = Divisivel3(num);

if (log == true)

{System.out.println (“O número ” + num + “ é

divisível por 3 ”);

}else{

System.out.println (“O número ” + num + “ não édivisível por 3 ”);

}break;

case 0: System.out.println (“Saindo do programa!”);System.exit(0);

default: System.out.println (“opção inválida, tentenovamente”);

Copyright Faculdade IBTA

145

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 152: Apostila Algoritmos

}} while (op != 0);

} // main

} // classe Somador

3. Desenvolva um algoritmo modularizado que receba o nome e os dados para cálculo da área deuma figura geométrica conforme tabela abaixo, e a partir da escolha do usuário por um menude opções, calcule e mostre a área da figura geométrica:

Figura geométrica Fórmula

quadrado lado * lado

triângulo (base * altura) / 2

retângulo base * altura

trapézio ((Base maior + base menor) * altura) / 2

class CalculoArea

{// módulo procedimento Menupublic static int Menu()

{String msg = “”;int op;

msg = msg + “Digite 1 para área do quadrado\n”;msg = msg + “Digite 2 para área do triângulo\n”;msg = msg + “Digite 3 para área do retângulo\n”;msg = msg + “Digite 4 para área do trapézio\n”;msg = msg + “Digite 0 para sair do programa\n”;

op = Integer.parseInt (JOptionPane.showInputDialog(msg));

return op;

} // Menu

// módulo função Quadrado que recebe um valor real e retorna um// valor real

public static double Quadrado (double l)

{// declaração de variáveis que só podem ser usadas dentro// deste módulo

double res;

// processamento de dadosres = l * l;// retorno do módulo

return res;

} // Quadrado

// módulo procedimento Triangulo que recebe dois valores reais

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

146

Page 153: Apostila Algoritmos

public static void Triangulo (double b, double h)

{// declaração de variáveis que só podem ser usadas dentro// deste módulo

double res;

// processamento de dadosres = (b * h) / 2;// saída de resultadosSystem.out.println (“A área do triângulo de base ” + b + “ e

altura ” + h + “ é ” + res);

} // Triangulo

// módulo procedimento Retangulo que recebe dois valores reais

public static void Retangulo (double b, double h)

{// declaração de variáveis que só podem ser usadas dentro// deste módulo

double res;

// processamento de dadosres = b * h;// saída de resultadosSystem.out.println (“A área do retângulo de base ” + b + “ e

altura ” + h + “ é ” + res);

} // Retangulo

// módulo função Trapezio que retorna um valor real

public static double Trapezio ( )

{// declaração de variáveis que só podem ser usadas dentro// deste módulo

double res, b1, b2, h;

// entrada de dadosb1 = Double.parseDouble(JOptionPane.showInputDialog(“Digite a

base menor”));b2 = Double.parseDouble(JOptionPane.showInputDialog(“Digite a

base maior”));h = Double.parseDouble(JOptionPane.showInputDialog(“Digite a

altura”));// processamento de dadosres = ((b1 + b2) * h) / 2;

// retorno do módulo

return res;

} // Trapezio

// módulo principal

public static void main (String arg []){

// declaração de variáveis e/ou constantes que podem ser// usadas no algoritmo principal

Copyright Faculdade IBTA

147

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 154: Apostila Algoritmos

double retorno, lado, base, altura;

int figura = 0;

do{figura = Menu();

switch (figura)

{case 1: // entrada de dados

lado = Double.parseDouble(JOptionPane.showInputDialog (“Digite o lado”));// chamada do módulo função Quadrado, passando lado// como parâmetro e atribuindo o retorno do módulo// na variável retornoretorno = Quadrado(lado);// saída de resultadosSystem.out.println (“A área do quadrado de lado ” +

lado + “ é ” + retorno);

break;case 2: // entrada de dados

base = Double.parseDouble(JOptionPane.showInputDialog (“Digite a base”));

altura = Double.parseDouble(JOptionPane.showInputDialog (“Digite a altura”));

// chamada do módulo procedimento Triangulo,// passando base e altura como parâmetroTriangulo (base, altura);

break;case 3: // entrada de dados

base = Double.parseDouble(JOptionPane.showInputDialog (“Digite a base”));

altura = Double.parseDouble(JOptionPane.showInputDialog (“Digite a altura”));

// chamada do módulo procedimento Retangulo,// passando base e altura como parâmetro

Retangulo (base, altura);

break;case 4: // chamada do módulo função Trapezio e atribuindo

// o retorno do módulo na variável retorno

retorno = Trapezio ( );// saída de resultadosSystem.out.println (“A area do trapézio é ” +

retorno);

break;case 0: System.out.println (“Saindo do programa!”);

System.exit(0);

default: // saída de resultadosSystem.out.println (“operação inválida”);

}} while (figura != 0);

}} // class CalculoArea

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

148

Page 155: Apostila Algoritmos

4. Desenvolva um algoritmo que mostre um menu de opções para: calcular a soma de todos osnúmeros compreendidos entre 1 e 100; calcular a soma de todos os números parescompreendidos entre 1 e 100; e calcular a soma de todos os números divisíveis por 3.

class Somador{

// módulo função Menustatic int Menu()

{int op;String msg = “”;

msg = msg + “Digite 1 para soma de todos os números entre 1 e100\nDigite 2 para soma de todos os números pares entre 1 e 100\nDigite3 para soma de todos os números divisíveis por 3 entre 1 e 100\nDigite 0para sair do programa\n”;

op = Integer.parseInt(JOptionPane.showInputDialog(msg));

return op;

} // fim do módulo Menu

// módulo função SomaTudo que retorna um valor inteiro

static int SomaTudo ()

{int s = 0, i;

i = 1;// processamento de dados

while (i <= 100)

{s = s + i;i = i + 1;

} // fim do while

return s; // retorno do módulo

} // fim do módulo SomaTudo

// módulo procedimento SomaPares que recebe um valor inteiro

static void SomaPares (int par)

{int s=0, i;

i = 1;// processamento de dados

do{

if ((i % par) == 0)

{s = s + i;

} // fim do ifi = i + 1;

} while (i <= 100);

Copyright Faculdade IBTA

149

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 156: Apostila Algoritmos

System.out.println (“A somatória dos números pares de 1 até 100é ” + s);

} // fim do móduloSomaPares

/* módulo função SomaDivisivel3 que recebe um valor inteiro e retornaum valor inteiro*/

static int SomaDivisivel3 (int d)

{int i, s = 0;

// processamento de dados

for ( i = 1 ; i <= 100 ; i++ ){

if ((i % d) == 0)

{s = s + i;

} // fim do if

} // fim do for

return s; // retorno da função

}// fim do módulo SomaDivisivel3

// módulo principal

public static void main (String args [ ]){

int op, soma, d;

// processamento de dados

do{

op = Menu(); // entrada de dados

switch (op)

{case 1 : soma = SomaTudo();

System.out.println (“A somatória de 1 até 100é” + soma);

break;

case 2 : SomaPares(2);break;

case 3 : d = SomaDivisivel3(3);System.out.println (“A somatória dos números

divisíveis por 3 de 1 até 100 é ” + d);break;

case 0 : System.out.println (“Saindo do programa!”);System.exit(0);

default :System.out.println (“opção inválida, tentenovamente”);

} // fim do switch

} while (op != 0);

} // fim do void main

} // fim da classe

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

150

Page 157: Apostila Algoritmos

Exercícios de Modularização

01. Desenvolva um módulo procedimento que receba dois números inteiros, calcule e mostre o restoda divisão entre os números inteiros, sem utilizar o operador mod ou %.

02. Desenvolva um módulo função que receba dois números inteiros, calcule e retorne o quociente dadivisão entre os números inteiros, sem utilizar o operador div ou / (para inteiros).

03. Desenvolva um módulo função que receba um número inteiro, calcule e retorne a raiz quadradainteira mais próxima desse número.

04. Desenvolva um módulo procedimento que receba um número, verifique e mostre se esse númeroé ou não divisível por 5.

05. Desenvolva um módulo procedimento que receba um número, verifique e mostre se esse númeroé ou não primo.

06. Desenvolva um módulo procedimento que receba um número, verifique e mostre se esse númeroé ou não par.

07. Desenvolva um módulo procedimento que receba um número inteiro e mostre todos os divisoresdesse número.

08. Desenvolva um módulo função que receba um número real, calcule e retorne o valor absolutodesse número.

09. Desenvolva um módulo função que receba um número inteiro, calcule e retorne o fatorial dessenúmero.

10. Desenvolva um módulo principal com um menu de opções para a chamada dos módulosdesenvolvidos nos exercícios 1 até 9, mostrando os respectivos resultados dos módulos função.O usuário é quem deve escolher o módulo que será executado.

11. Desenvolva um algoritmo modularizado que receba cinco valores inteiros e, a partir de um menude opções, permita o usuário escolher entre:

a. entrar e mostrar os valores a serem armazenados em cinco variáveis; (procedimento semparâmetros);

b. calcular e mostrar o valor da somatória dos valores das cinco variáveis; (procedimento comparâmetros)

c. calcular e retornar a média aritmética dos valores das cinco variáveis; (função sem parâmetros)

d. calcular e retornar a média ponderada dos valores das cinco variáveis, sendo peso 2 para asduas primeiras entradas, peso 5 para as duas próximas entradas e peso 10 para a últimaentrada; (função com parâmetros)

Copyright Faculdade IBTA

151

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 158: Apostila Algoritmos

e. mostrar os cinco valores em ordem crescente. (procedimento com parâmetros)

Obs1.: após a chamada das funções, mostrar o resultado.

Obs2.: uma das opções do menu deve ser a de sair do programa.

12. Desenvolva um algoritmo modularizado que receba um valor inteiro e, a partir de um menu deopções, permita o usuário escolher entre:

a. entrar e mostrar o valor a ser armazenado em uma variável n; (procedimento sem parâmetros)

b. calcular e retornar o valor da somatória dos vinte primeiros termos da série de Fibonnacci;(função sem parâmetros)

c. verificar e mostrar se o número armazenado na variável n é divisível por 7; (função comparâmetros)

d. verificar e mostrar se o número armazenado na variável n é par ou ímpar; (procedimento comparâmetros)

Obs1.: após a chamada das funções, mostrar os resultados.

Obs2.: uma das opções do menu deve ser a de sair do programa.

13. Desenvolva um algoritmo modularizado que receba o valor da compra de um produto e, a partir deum menu de opções, permita ao usuário escolher entre:

a. calcular e retornar o pagamento a vista com 20% de desconto; (função com parâmetros)

b. calcular e mostrar o pagamento em duas vezes com entrada e com 10% de desconto;(procedimento com parâmetros)

c. calcular e retornar o pagamento a vista no cartão com 15% de desconto; (função comparâmetros)

d. calcular e mostrar o pagamento em duas vezes no cartão com 5% de desconto; (função comparâmetros)

e. calcular e mostrar o pagamento a prazo em duas vezes sem entrada com acréscimo de 5%;(procedimento com parâmetros)

f. calcular e retornar o pagamento a prazo em três vezes sem entrada com acréscimo de 10%.(função com parâmetros)

Obs1.: após a chamada das funções, mostrar o resultado.

Obs2.: uma das opções do menu deve ser a de sair do programa.

14. Desenvolva um algoritmo modularizado que receba o nome de um aluno, o registro desse aluno equatro valores reais referentes às notas bimestrais desse aluno e, a partir de um menu de opções,permita ao usuário escolher entre:

a. entrar e mostrar o nome e o registro do aluno bem como suas notas bimestrais; (procedimentosem parâmetros)

b. calcular e mostrar o valor da média desse aluno com a mensagem de aprovação (média >=5.0) ou reprovação, bem como, seu nome e seu registro; (procedimento com parâmetros)

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

152

Page 159: Apostila Algoritmos

c. calcular e retornar o valor da média ponderada desse aluno com pesos 1, 2, 3 e 4,respectivamente para cada nota; (função com parâmetros)

d. calcular a média aritmética desse aluno e retornar a mensagem de aprovado ou reprovado.(função com parâmetros)

Obs1.: após a chamada das funções, mostrar o resultado.

Obs2.: uma das opções do menu deve ser a de sair do programa.

15. Desenvolva um algoritmo modularizado que receba um mês e um dia da semana e a partir de ummenu de opções, permita ao usuário escolher entre:

a. entrar e mostrar o mês e o dia da semana; (procedimento sem parâmetros)

b. verificar e mostrar se no mês informado ele tem alguma avaliação; (procedimento comparâmetros)

c. verificar e retornar se no mês e dia da semana informados ele precisa ir para o IBTA; (funçãocom parâmetros)

d. verificar e retornar quantos meses por ano ele está de férias escolares (função semparâmetros)

Obs1.: após a chamada das funções, mostrar o resultado.

Obs2.: uma das opções do menu deve ser a de sair do programa.

16. Desenvolva um algoritmo modularizado que receba um valor inteiro positivo e, a partir de ummenu de opções, permita ao usuário escolher entre:

a. entrar e mostrar o valor inteiro armazenado numa variável n; (procedimento sem parâmetros)

b. calcular e mostrar a somatória dos números 100 e n ; (procedimento com parâmetros)

c. calcular e retornar o produto dos números 20 e n; (função com parâmetros)

d. verificar e retornar se n é primo ou não (função sem parâmetros)

Obs1.: após a chamada das funções, mostrar o resultado.

Obs2.: uma das opções do menu deve ser a de sair do programa.

17. Desenvolva um algoritmo modularizado que receba o nome e os dados para cálculo da área deuma figura geométrica conforme tabela abaixo e, a partir de um menu de opções, permita aousuário escolher entre calcular e mostrar a área da figura geométrica:

Figura geométrica Fórmula

quadrado lado * lado

triângulo (base * altura) / 2

retângulo base * altura

trapézio ((Base maior + base menor) * altura) / 2

Copyright Faculdade IBTA

153

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 160: Apostila Algoritmos

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

18. Desenvolva um algoritmo modularizado que receba dois valores reais e o código do produtonotável conforme tabela abaixo e, a partir de um menu de opções, permita ao usuário escolherentre calcular e mostrar o valor do produto notável:

Código Produto Notável Fórmula

1 quadrado da diferença de dois números (a - b) * (a - b)

2 quadrado da soma de dois números (a + b) * (a + b)

3 soma do quadrado de dois números a * a + b * b

4 diferença do quadrado de dois números a * a - b * b

5 produto da soma com a diferença de dois números (a - b) * (a + b)

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

19. Desenvolva um algoritmo modularizado que receba o nome de um lugar e, a partir de um menu deopções, permita ao usuário escolher entre mostrar para o usuário o que ele deve fazer nesselugar, conforme tabela abaixo:

Lugar O que fazer

Escola Estudar

Banco Pagar contar

Farmácia Comprar remédios

Casa Descansar

Correio Remeter cartas

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

20. Desenvolva um algoritmo modularizado que receba o código da condição de pagamento e o preçode um produto e, a partir de um menu de opções, permita ao usuário escolher entre calcular o quedeve ser pago pelo produto e mostrar a condição de pagamento e o preço a ser pago, conforme atabela abaixo:

Código Condição de pagamento

A a vista em dinheiro ou cheque tem 20% de desconto

B a vista em cartão de crédito tem 10% de desconto

C em 2 vezes, preço normal de etiqueta sem juros

D em 3 vezes, preço normal de etiqueta mais juros de 15%

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

154

Page 161: Apostila Algoritmos

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

21. Desenvolva um algoritmo modularizado que receba o salário de um funcionário e, a partir de ummenu de opções, permita ao usuário escolher entre calcular e mostrar o valor do aumento salariale o salário final a ser recebido pelo funcionário, considerando que:

a. se o funcionário recebe menos que 500,00, terá reajuste de 100%;

b. se o funcionário recebe mais ou igual 500,00 e menos que 1.000,00, terá reajuste de 75%;

c. se o funcionário recebe mais ou igual a 1.000,00 e menos que 1.500,00, terá reajuste de 50%;

d. se o funcionário recebe mais ou igual a 1.500,00 e menos que 2.000,00, terá reajuste de 25%;

e. se o funcionário recebe mais ou igual a 2.000,00 e menos que 3.000,00, terá reajuste de 10%;

f. se o funcionário recebe mais ou igual a 3.000,00 e menos que 5.000,00, terá reajuste de 5%;

g. se o funcionário recebe mais ou igual a 5.000,00, terá reajuste de 2%.

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

22. Desenvolva um algoritmo modularizado que receba o tipo de investimento e o valor doinvestimento e, a partir de um menu de opções, permita ao usuário escolher entre calcular emostrar o valor corrigido do investimento após o período de 30 dias, considerando que orendimento mensal para cada tipo de investimento varia conforme a tabela abaixo:

Tipo de investimento Rendimento

Poupança 3%

Fundo de renda fixa 5%

CDB 6%

Ações 10%

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

23. Desenvolva um algoritmo modularizado que receba a data de nascimento de uma pessoa e a dataatual e, a partir de um menu de opções, permita ao usuário escolher entre verificar e mostrar:

a. em qual estação do ano (primavera, verão, outono ou inverno) essa pessoa nasceu;

b. em qual século essa pessoa nasceu;

c. se a pessoa nasceu em um ano bissexto;

d. qual o signo dessa pessoa;

e. quantos dias essa pessoa já viveu;

f. quantos meses essa pessoa já viveu;

g. quantos anos essa pessoa tem.

Copyright Faculdade IBTA

155

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 162: Apostila Algoritmos

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

24. Desenvolva um algoritmo modularizado que receba três valores numéricos reais e um código e, apartir de um menu de opções, permita ao usuário escolher entre calcular e mostrar dadosconforme a tabela abaixo:

código Operação

1 os três valores em ordem crescente

2 os três valores em ordem decrescente

3 somente os valores pares

4 somente os valores ímpares

5 somente os valores positivos

6 somente os valores negativos

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

25. Desenvolva um algoritmo modularizado que receba o preço atual e a venda mensal média de umproduto e, a partir de um menu de opções, permita ao usuário calcular e mostrar o novo preçopara um dos seguintes casos:

a. se a venda média mensal for menor que 500 e o preço atual menor que 30,00, então o produtosofrerá um aumento de 10%;

b. se a venda média mensal for maior ou igual a 500 e menor que 1000 e o preço atual maior ouigual a 30,00 e menor que 80,00, então o produto sofrerá um aumento de 15%;

c. se a venda mensal média for maior ou igual a 1000 e o preço atual maior ou igual a 80,00,então o produto sofrerá uma diminuição de 5%.

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

26. Desenvolva um algoritmo modularizado que receba o raio de uma circunferência e um código e, apartir de um menu de opções, permita o usuário calcular e mostrar os dados da circunferência,conforme a tabela abaixo:

Código Operação

x calcula o comprimento: C = 2 � �� raio

y calcula a área: A = � � raio2

z calcula o volume: V = 4/3 � �� raio3

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

156

Page 163: Apostila Algoritmos

Obs1.: usar procedimentos e funções com e sem parâmetros.

Obs2.: uma das opções do menu deve ser a de sair do programa.

27. Desenvolva um algoritmo modularizado que receba um caracter alfanumérico e, a partir de ummenu de opções, permita ao usuário verificar e mostrar se o caracter digitado é uma vogal, umaconsoante, ou qualquer outro caracter.

28. Desenvolva um algoritmo modularizado que receba a medida de um ângulo em graus, calcule emostre o quadrante em que esse ângulo se localiza. Considere os quadrantes da trigonometria epara ângulos maiores que 360 graus ou menores que -360 graus, reduzi-los, mostrando tambémo número de voltas e o sentido da volta (horário ou anti-horário).

29. Desenvolva um algoritmo modularizado que receba uma senha de quatro números, verifique avalidade desta senha sabendo que a senha correta é 1234 e mostre ao usuário uma mensagemdizendo se a senha digitada é válida ou não.

30. Desenvolva um algoritmo modularizado que receba o tipo de investimento (poupança ou fundo derenda fixa) e o valor do investimento, calcule e mostre o valor corrigido do investimento após operíodo de 30 dias, considerando que o rendimento mensal da poupança é de 3% e o do fundo derenda fixa é de 5%.

10. Estrutura de Dados Homogêneas – Vetores

Quando desenvolvemos um algoritmo ou programa estruturado, muitas vezes, precisamos usarvárias informações de um mesmo tipo de dado. Podemos fazer isso criando inúmeras variáveis,uma para cada informação, mas isso é inviável, pois é demasiado complexo desenvolvermos emanipularmos um algoritmo que utiliza inúmeras variáveis para várias informações de um mesmotipo. Para solucionar esse problema, podemos utilizar vetores e matrizes para armazenar essasinformações, isto é, uma estrutura de dados homogênea.

Uma estrutura de dados homogênea é uma estrutura capaz de armazenar várias informações deum mesmo tipo de dado. Assim, com um único nome declarado para essa estrutura, podemosmanipular várias informações.Uma estrutura de dados homogênea pode ser vista como qualquer outra variável, podendo sermanipulada dentro de uma estrutura de decisão (seja ela simples, composta ou encadeada),dentro de uma estrutura de múltipla escolha, dentro das estrutura de repetição.

Temos dois tipos de estrutura de dados homogênea: vetores e matrizes. No capítulo seguinte,veremos matrizes e a seguir veremos como e quando trabalhar com um vetor, bem como declarare manipular um vetor.

10.1. Definição de Vetor

Um vetor é um conjunto de informações de um mesmo tipo de dado. Note que vetor é um nomeparticular dado à matriz unidimensional. Por exemplo, considere uma fileira de 5 carteiras de umasala de aula representando uma estrutura de dados e cada uma das carteiras representando

Copyright Faculdade IBTA

157

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 164: Apostila Algoritmos

partições dessa estrutura. Em outras palavras, a fileira de carteiras é um vetor e cada carteira umelemento desse vetor. Podemos representar, graficamente, esse vetor da seguinte forma:

Vet0 1 2 3 4

carteira 1 carteira 2 carteira 3 carteira 4 carteira 5

Neste exemplo, possuímos um vetor chamado Vet, com dimensão ou tamanho do vetor igual a 5e com cinco posições: 0, 1, 2, 3 e 4. Na posição 0 do vetor Vet, temos a carteira1, na posição 1 dovetor Vet, temos a carteira2 e, assim por diante, até que na posição 4 do vetor Vet, temos acarteira5.

10.2. Declaração de Vetor

Quando declaramos um vetor, precisamos saber qual o tipo de dados das informações que serãoarmazenadas no vetor e o número de elementos desse vetor. O nome atribuído para a declaraçãode vetor segue as mesmas regras da declaração de qualquer identificador.

Pseudocódigo

A declaração de um vetor em pseudocódigo terá a seguinte regra sintática:

Declarar

<nome do vetor> [<número de elementos>] <tipo dos elementos do vetor>;

Por exemplo,

Declarar

Vet_exemplo [100] numérico_inteiro;

Neste exemplo, declaramos um vetor chamado Vet_exemplo com 100 elementos do tipo inteiro.

Java

A declaração de um vetor em Java terá a seguinte regra sintática:

<tipo dos elementos> <nome vetor> [ ] = new <tipo elementos> [<nro. de elementos>];

ou

<tipo dos elementos>[ ] <nome vetor> = new <tipo elementos> [<nro. de elementos>];

Por exemplo,

int Vet_exemplo [ ] = new int [100];

ou

int [ ] Vet_exemplo = new int [100];

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

158

Page 165: Apostila Algoritmos

Neste exemplo, declaramos um vetor chamado Vet_exemplo com 100 elementos do tipo inteiro.

Podemos declarar um vetor em Java e depois determinar seu tamanho, seguindo a seguinte regrasintática:

<tipo dos elementos> <nome do vetor> [ ];

<nome do vetor> = new <tipo dos elementos> [<nro. de elementos>];

Por exemplo:

int Vet_exemplo [ ];

Vet_exemplo = new int [100];

Neste exemplo, declaramos um vetor chamado Vet_exemplo do tipo inteiro e depoisdeterminamos seu tamanho com 100 elementos do tipo inteiro.

No Java, no momento da declaração do vetor, ele é automaticamente inicializado com zeros emcada posição do vetor.

10.3. Exemplo de Vetor

Vamos exemplificar, graficamente, um vetor chamado notas, de 10 posições, contendo notasfinais de 10 alunos. Como estamos considerando notas, então determinamos que essasinformações são do tipo numérico_real.

notas0 1 2 3 4 5 6 7 8 9

9.5 10.0 8.5 5.0 8.0 7.5 6.0 9.0 8.5 7.0

- notas é o nome do vetor;

- o vetor notas possui dez informações, por isso, tem tamanho 10, ou seja, 10 posições: de 0 até9;

- a posição 0 do vetor, notas[0], possui a nota 9.5;

- a posição 1 do vetor, notas[1], possui a nota 10.0;

- a posição 2 do vetor, notas[2], possui a nota 8.5;

- a posição 3 do vetor, notas[3], possui a nota 5.0;

- a posição 4 do vetor, notas[4], possui a nota 8.0;

- a posição 5 do vetor, notas[5], possui a nota 7.5;

- a posição 6 do vetor, notas[6], possui a nota 6.0;

- a posição 7 do vetor, notas[7], possui a nota 9.0;

- a posição 8 do vetor, notas[8], possui a nota 8.5;

- a posição 9 do vetor, notas[9], possui a nota 7.0.

Copyright Faculdade IBTA

159

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 166: Apostila Algoritmos

10.4. Atribuindo Valores ao Vetor

Quando atribuímos valores ao vetor, precisamos saber qual o tipo de dados das informações queserão armazenadas no vetor e o número de elementos desse vetor. Os valores são atribuídos acada posição do vetor e a forma de atribuição é a mesma de qualquer variável ou constante.

Pseudocódigo

A atribuição de valores para cada posição do vetor em pseudocódigo terá a seguinte regrasintática:

<nome do vetor> [<posição>] � <valor>;

Por exemplo,

notas [0] � 9.5;

Neste exemplo, a posição 0 do vetor notas recebe o valor 9.5.

Podemos também atribuir valores no momento da declaração do vetor, conforme a seguinte regrasintática:

Declarar

<nome vetor> [<nro dados>] � {<vlr1> , <vlr2> , ... , <vlrn>} <tipo dados do vetor>;

Por exemplo,

Declarar

notas [3] � { 9.5 , 10.0 , 8.5} numérico_real;

Neste exemplo, declaramos um vetor chamado notas de tamanho 3, de forma que a posição 0 dovetor possua o valor 9.5, a posição 1 do vetor possua o valor 10.0 e a última posição do vetorpossua o valor 8.5.

Java

A atribuição de valores para cada posição do vetor em Java terá a seguinte regra sintática:

<nome do vetor> [<posição>] = <valor>;

Por exemplo,

notas [0] = 9.5;

Neste exemplo, a posição 0 do vetor notas recebe o valor 9.5.

Podemos também atribuir valores no momento da declaração do vetor, conforme a seguinte regrasintática:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

160

Page 167: Apostila Algoritmos

<tipo dos dados> <nome do vetor> [ ] = {<vlr1> , <vlr2> , ... , <vlrn>};

Por exemplo,

double notas [ ] = { 9.5 , 10.0 , 8.5};

Neste exemplo, declaramos um vetor chamado notas de tamanho 3, de forma que a posição 0 dovetor possua o valor 9.5, a posição 1 do vetor possua o valor 10.0 e a última posição do vetorpossua o valor 8.5.

10.5. Mostrando os Elementos de um Vetor

Quando mostramos valores do vetor, precisamos saber qual o tipo de dados das informações queforam armazenadas no vetor e o número de elementos desse vetor. Os valores são mostradospara cada posição do vetor e a forma de mostrar os elementos na tela é a mesma de qualquervariável ou constante.

Pseudocódigo

Para mostrar os valores de cada posição do vetor em pseudocódigo teremos a seguinte regrasintática:

escrever (<nome do vetor>[<posição>]);

Por exemplo,

escrever (notas [0]);

Neste exemplo, o conteúdo da posição 0 do vetor notas será mostrado ao usuário, ou seja, ovalor 9.5 aparecerá na tela do usuário.

Note que a mensagem dentro do comando escrever pode vir concatenada com outros valoresalfanuméricos. Por exemplo:

escrever (“A nota é: ” , notas[0]);

Neste exemplo, a mensagem A nota é 9.5 aparecerá na tela do usuário.

Java

Para mostrar os valores de cada posição do vetor em Java teremos a seguinte regra sintática:

System.out.println (<nome do vetor> [<posição>]);

Por exemplo,

System.out.println(notas [0]);

Neste exemplo, o conteúdo da posição 0 do vetor notas será mostrado ao usuário, ou seja, ovalor 9.5 aparecerá na tela do usuário.

Copyright Faculdade IBTA

161

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 168: Apostila Algoritmos

Note que a mensagem dentro do comando System.out.println pode vir concatenada com outrasStrings. Por exemplo:

System.out.println(“A nota é: ” + notas[0]);

Neste exemplo, a mensagem A nota é 9.5 aparecerá na tela do usuário.

10.6. Exemplos de Vetores em Pseudocódigo

1. Desenvolva um algoritmo que receba 25 valores numéricos inteiros e mostre esses números.

Algoritmo Mostrar

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

Vet [25] , i numérico_inteiro;

// processamento de dados

para i de 0 até 24 passo + 1 faça

// mensagem ao usuário

escrever ("Digite um valor inteiro");

// entrada de dados

ler (Vet[i]);

// saída de resultados

escrever (Vet[i]);

fimpara;

fim_algoritmo.

2. Desenvolva um algoritmo que receba 100 valores numéricos inteiros e mostre a soma desses100 números.

Algoritmo Somar

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

VetSoma [100] , i , soma � 0 numérico_inteiro;

// processamento de dados

para i de 0 até 99 passo + 1 faça

// mensagem ao usuário

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

162

Page 169: Apostila Algoritmos

escrever ("Digite um valor inteiro");

// entrada de dados

ler (VetSoma[i]);

soma � soma + VetSoma[i];

fimpara;

// saída de resultados

escrever ("A soma dos 100 valores digitados é: " , soma);

fim_algoritmo.

3. Desenvolva um algoritmo que receba 50 notas bimestrais, calcule e mostre a média aritméticadessas 50 notas.

Algoritmo MediaAritmetica

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

i numérico_inteiro;

Notas [50] , media, soma � 0 numérico_real;

// processamento de dados

para i de 0 até 49 passo + 1 faça

// mensagem ao usuário

escrever ("Digite uma nota");

// entrada de dados

ler (Notas[i]);

soma � soma + Notas[i];

fimpara;

// processamento de dados

media � soma/50;

// saída de resultados

escrever ("A média das 50 notas digitadas é: " , media);

fim_algoritmo.

4. Desenvolva um algoritmo modularizado que receba 200 valores numéricos reais, e mostraesses valores e a soma dos números pares.

Algoritmo SomaPares

início_algoritmo

Copyright Faculdade IBTA

163

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 170: Apostila Algoritmos

Declarar // declaração de variáveis e/ou constantes

Vet [200], soma � 0 numérico_real;

i numérico_inteiro;

// processamento de dados

para i de 0 até 199 passo + 1 faça

// mensagem ao usuário

escrever (“Digite um número”);

// entrada de dados

ler (Vet[i]);

se ((Vet[i] mod 2) = 0 )

então

soma � soma + Vet[i];

fimse;

// saída de resultados

escrever (“O número digitado é ” , Vet[i]);

fimpara;

// saída de resultados

escrever (“A soma dos números pares é: ” , soma);

fim_algoritmo.

10.7. Exemplos de Vetores em Java

1. Desenvolva um algoritmo que receba 25 valores numéricos inteiros e mostre esses números.

class Mostrar

{public static void main(String args [ ]){

// declaração de variáveis e/ou constantes

int Vet [ ] , i;

Vet = new int [25];

// processamento de dados

for ( i = 0 ; i < 25 ; i++ ){

// mensagem ao usuário e entrada de dadosVet[i] = Integer.parseInt(JOptionPane.showInputDialog

(“Digite um valor inteiro”));// saída de resultadosSystem.out.println (Vet[i]);

} // for

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

164

Page 171: Apostila Algoritmos

System.exit(0);

} // void main

} // classe Mostrar

2. Desenvolva um algoritmo que receba 100 valores numéricos inteiros e mostre a soma desses100 números.

class Somar

{public static void main(String args [ ]){

// declaração de variáveis e/ou constantes

int VetSoma [ ] , i , soma = 0;

VetSoma = new int [100];

// processamento de dados

for ( i = 0 ; i <= 99 ; i++ ){

// mensagem ao usuário e entrada de dadosVetSoma[i] = Integer.parseInt(JOptionPane.showInputDialog

(“Digite um valor inteiro”));soma = soma + VetSoma[i];

} // for// saída de resultadosSystem.out.println (“A soma dos 100 valores digitados é: ”

+ soma);System.exit(0);

} // void main

} // classe Somar

3. Desenvolva um algoritmo que receba 50 notas bimestrais, calcule e mostre a média aritméticadessas 50 notas.

class MediaAritmetica

{public static void main(String args [ ]){

// declaração de variáveis e/ou constantes

int i ;

double Notas[ ] , media , soma = 0;

Notas = new double [50];

// processamento de dados

for ( i = 0 ; i <= 49 ; i++ ){

// mensagem ao usuário e entrada de dadosNotas[i] = Double.parseDouble(JOptionPane.showInputDialog

(“Digite uma nota”));soma = soma + Notas[i];

} // for

Copyright Faculdade IBTA

165

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 172: Apostila Algoritmos

media = soma/50;// saída de resultadosSystem.out.println (“A média das 50 notas digitadas é: ”

+ media);System.exit(0);

} // void main

} // classe MediaAritmetica

4. Desenvolva um algoritmo modularizado que receba 200 valores numéricos reais e, mostreesses valores e a soma dos números pares.

class SomaPares

{public static double FuncSoma ( )

{// declaração de variáveis e/ou constantes

int i ;

double Vet[ ] , soma = 0;

Vet = new double [200];

// processamento de dados

for ( i = 0 ; i < 200 ; i++ ){

// mensagem ao usuário e entrada de dadosVet[i] = Double.parseDouble(JOptionPane.showInputDialog

(“Digite um número”));

if ((Vet[i] % 2) == 0)

{soma = soma + Vet[i];

} // if// saída de resultadosSystem.out.println(“O número digitado é” + Vet[i]);

} // for

return soma;

}

public static void main(String args [ ]){

// declaração de variáveis e/ou contantes

double s = 0;

// processamento de dadoss = FuncSoma( );// saída de resultadosSystem.out.println (“A soma dos números pares é: ” + s);System.exit(0);

} // void main

} // classe SomaPares

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

166

Page 173: Apostila Algoritmos

Exercícios de Vetores

Para todos os exercícios abaixo, construir um algoritmo modularizado usando vetor.

01. Desenvolva um algoritmo que receba e mostre 120 valores alfanuméricos.

02. Desenvolva um algoritmo que receba 20 valores numéricos inteiros num vetor A e 20 valoresnuméricos inteiros num vetor B. Construa um vetor C com 20 posições, onde cada posiçãopossua a soma dos elementos dos vetores A e B em suas respectivas posições. Mostrar oselementos dos três vetores.

03. Desenvolva um algoritmo que receba 50 valores numéricos reais num vetor X e 30 valoresnuméricos reais num vetor Y. Construa um vetor Z de 80 posições com a concatenação dosvetores X e Y, ou seja, os elementos das 50 primeiras posições são os mesmos elementos dovetor X e os elementos das 30 últimas posições são os mesmos do vetor Y. Mostre os elementosdos três vetores.

04. Desenvolva um algoritmo que receba 10 valores numéricos inteiros num vetor Num, calcule emostre os números primos e suas respectivas posições.

05. Desenvolva um algoritmo que receba 50 valores numéricos reais num vetor, calcule e armazene,num segundo vetor, os 50 valores do primeiro vetor multiplicados por 5. Mostre os valores dosdois vetores.

06. Desenvolva um algoritmo que receba 30 valores numéricos inteiros num vetor, calcule earmazene, num segundo vetor, o quadrado dos 30 valores do primeiro vetor. Mostre os valoresdos dois vetores.

07. Desenvolva um algoritmo que receba 45 valores numéricos inteiros num vetor, calcule earmazene, num segundo vetor, o fatorial de cada elemento do primeiro vetor. Mostre os doisvetores.

08. Desenvolva um algoritmo que receba 90 valores numéricos inteiros positivos num vetor, calcule earmazene, num segundo vetor, o negativo de cada elemento do primeiro vetor. Mostre os doisvetores.

09. Desenvolva um algoritmo que receba 85 valores numéricos reais num vetor, calcule e armazene,num segundo vetor, a metade de cada elemento do primeiro vetor. Mostre os dois vetores.

10. Desenvolva um algoritmo que calcule a tabuada de um número determinado pelo usuário earmazene, num vetor de 10 posições, o resultado da tabuada. Mostre os elementos do vetor.

11. Desenvolva um algoritmo que receba 15 valores referentes às temperaturas em graus Celsius earmazene num vetor de 15 posições. Calcule e armazene, num segundo vetor de 15 posições, osvalores de cada temperatura em graus Celsius convertidos para graus Fahrenheit. Calcule e

Copyright Faculdade IBTA

167

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 174: Apostila Algoritmos

armazene, num terceiro vetor de 15 posições, os valores de cada temperatura em graus Celsiusconvertidos para graus Kelvin. Mostre os elementos dos três vetores.

12. Desenvolva um algoritmo que receba 35 valores numéricos inteiros num vetor, calcule earmazene o triplo dos valores divisíveis por 3 num segundo vetor, armazenando inalterados osvalores que não são divisíveis por 3. Mostre os elementos dos dois vetores.

13. Desenvolva um algoritmo que receba 15 valores alfanuméricos num vetor e armazene invertidoesses elementos num segundo vetor de 15 posições. O primeiro elemento do primeiro vetor seráo último elemento do segundo vetor, o segundo elemento do primeiro vetor será o penúltimoelemento do segundo vetor e assim por diante. Mostre os elementos dos dois vetores.

14. Desenvolva um algoritmo que receba 50 valores numéricos inteiros e pares num vetor e receba 50valores numéricos inteiros e ímpares num segundo vetor de forma que cada elemento recebidoseja validado pelo programa e não pelo usuário. Armazene num terceiro vetor de 100 posições oresto da divisão de cada elemento do primeiro vetor por 3 e o quociente da divisão de cadaelemento do segundo vetor por 3. Os 50 primeiros elementos do terceiro vetor são referentes aoprimeiro vetor e os 50 últimos elementos do terceiro vetor são referentes ao segundo vetor.Mostre os elementos dos três vetores.

15. Desenvolva um algoritmo que receba 70 valores divisíveis por 2 e por 3 e armazene num vetor de70 posições. O algoritmo e não o usuário é quem deve validar se um valor é divisível por 2 e por 3.Caso o valor digitado satisfaça a condição, então ele será armazenado no vetor, caso contrário,outro valor será recebido até que os 70 valores preencham o vetor. Mostre os elementos do vetor.

16. Desenvolva um algoritmo que receba 65 valores divisíveis por 5 ou por 7 e armazene num vetorde 65 posições. O algoritmo e não o usuário é quem deve validar se um valor é divisível por 5 ou7. Caso o valor digitado satisfaça a condição, então ele será armazenado no vetor, caso contrário,outro valor será recebido até que os 65 valores preencham o vetor. Mostre os elementos do vetor.

17. Desenvolva um algoritmo que receba 40 valores numéricos inteiros, calcule e mostre os númerosprimos e suas respectivas posições.

18. Desenvolva um algoritmo que receba 55 valores numéricos reais num vetor, calcule e mostre amédia aritmética dos 55 valores.

19. Desenvolva um algoritmo que receba 10 valores numéricos inteiros num vetor, calcule e mostre amédia ponderada dos 10 valores, considerando o peso de cada posição, sua própria posição, ouseja, o peso do elemento da posição 1 é 1, o peso do elemento da posição 2 é 2 e assim pordiante.

20. Desenvolva um algoritmo que receba 50 valores alfanuméricos, verifique e mostre os elementosque começam com uma vogal. Para facilitar, classifique em ordem crescente esse vetor.

21. Desenvolva um algoritmo que receba 45 valores numéricos inteiros, calcule e mostre os númerospares, suas posições e a soma dos números pares e os números ímpares, suas posições e aquantidade de números ímpares.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

168

Page 175: Apostila Algoritmos

22. Desenvolva um algoritmo que receba 65 valores resultantes dos números sorteados em um dadojogado 65 vezes. Mostre os números sorteados e a freqüência com que apareceram.

23. Desenvolva um algoritmo que receba 100 valores alfanuméricos entre vogais, calcule e mostrequantas vezes cada vogal aparece e sua porcentagem.

24. Desenvolva um algoritmo que receba 35 valores numéricos reais e armazene cada elemento deforma ordenada. O primeiro valor digitado será armazenado na primeira posição do vetor, osegundo valor digitado será armazenado na segunda posição do vetor, se for maior que oprimeiro elemento. Se for menor que o primeiro elemento, desloque esse valor para a segundaposição e armazene o segundo valor digitado na primeira posição. Continue essa regra até quetodos os 35 valores sejam digitados e armazenados em ordem crescente no vetor de 35 posições.Mostre os elementos desse vetor.

25. Desenvolva um algoritmo que receba 15 valores numéricos inteiros num vetor X, receba 15valores numéricos inteiros num vetor Y e concatene alternadamente os elementos dos vetores X eY num terceiro vetor Z de 30 posições. Os elementos das posições ímpares do vetor Z são osmesmos do vetor X e os elementos das posições pares do vetor Z são os mesmos do vetor Y.Mostrar os elementos dos três vetores.

26. Desenvolva um algoritmo que receba 30 valores numéricos reais num vetor A, receba 30 valoresnuméricos reais num vetor B e concatene os elementos dos vetores A e B num terceiro vetor C de60 posições. Os primeiros 30 elementos do vetor C são os mesmos do vetor A e os 30 últimoselementos do vetor C são os mesmos do vetor B. Mostre os elementos dos três vetores.

27. Desenvolva um algoritmo que receba 50 valores alfanuméricos num vetor, armazene de formainvertida os elementos deste vetor num segundo vetor de 50 posições, ou seja, o primeiroelemento do primeiro vetor estará na última posição do segundo vetor, o segundo elemento doprimeiro vetor estará na penúltima posição do segundo vetor e assim por diante. Mostre osvalores dos dois vetores.

28. Desenvolva um algoritmo que receba 75 valores alfanuméricos num vetor, armazene estesvalores num segundo vetor a partir do centro para as bordas e de modo alternado, ou seja, oprimeiro elemento do primeiro vetor estará na posição do meio do segundo vetor, o segundoelemento do primeiro vetor estará na posição à esquerda da posição do meio do segundo vetor, oterceiro elemento do primeiro vetor estará na posição à direita da posição do meio do segundovetor e assim por diante. Mostre os elementos dos dois vetores.

29. Desenvolva um algoritmo que receba 100 valores numéricos inteiros num vetor. Armazene osrestos das divisões dos elementos das posições pares por suas posições, num segundo vetor, eos quocientes das divisões dos elementos das posições ímpares por suas posições nestesegundo vetor. Mostre os elementos dos dois vetores.

30. Desenvolva um algoritmo que receba 35 valores numéricos reais num vetor e classifique emordem crescente os elementos desse vetor, utilizando a seguinte regra:

• selecione o menor elemento do vetor de 35 posições;

• troque esse elemento pelo primeiro elemento do vetor;

Copyright Faculdade IBTA

169

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 176: Apostila Algoritmos

• repita os dois primeiros itens, considerando agora os 34 elementos restantes do vetor, trocandoo menor elemento com o segundo elemento do vetor;

• repita os dois primeiros itens, considerando agora os 33 elementos restantes do vetor, trocandoo menor elemento com o terceiro elemento do vetor;

• continue até que se considere apenas o vetor com a última posição.

Mostre os elementos ordenados do vetor.

11. Estrutura de Dados Homogênea – Matrizes

Quando desenvolvemos um algoritmo ou programa estruturado, muitas vezes precisamos usarvárias informações de um mesmo tipo de dado e de informações diferentes, por exemplo, notasbimestrais, notas semestrais e média, todos do tipo numérico real. Podemos fazer isso criandodiversas variáveis, uma para cada informação, mas isso é inviável, pois é demasiado complexodesenvolvermos e manipularmos um algoritmo que utiliza diversas variáveis para váriasinformações de um mesmo tipo. Para solucionar esse problema, podemos utilizar matrizes paraarmazenar essas informações, isso é, uma estrutura de dados homogênea.

Uma estrutura de dados homogênea, seja ela um vetor ou uma matriz, pode ser vista comoqualquer outra variável, podendo ser manipulada dentro de uma estrutura de decisão (seja elasimples, composta ou encadeada), dentro de uma estrutura de múltipla escolha, dentro dasestruturas de repetição.

A seguir veremos como e quando trabalhar com uma matriz, bem como declarar e manipular umamatriz.

11.1. Definição de Matriz

Uma matriz é um conjunto de informações de um mesmo tipo de dados, podendo conterinformações diferentes. Note que matriz é um nome particular dado à matriz multidimensional,seja ela de dimensão dois ou mais. Por exemplo, uma matriz bidimensional pode conterinformações dispostas em duas coordenadas x e y, ou seja, linha e coluna; uma matriztridimensional pode conter informações dispostas em três coordenadas x, y e z, ou seja, linha,coluna e altura e assim por diante. Neste capítulo, nos preocuparemos em estudar as matrizesbidimensionais.

Para um exemplo de uma matriz bidimensional, considere dez fileiras de 5 carteiras de uma salade aula representando uma estrutura de dados, cada uma das fileiras e cada uma das carteirasrepresentando partições dessa estrutura, em outras palavras, as dez fileiras de 5 carteiras sãouma matriz bidimensional e cada carteira um elemento dessa matriz. Podemos representar,graficamente, essa matriz da seguinte forma:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

170

Page 177: Apostila Algoritmos

Mat 0 1 2 3 4

0 carteira 1 carteira 2 carteira 3 carteira 4 carteira 5

1 carteira 6 carteira 7 carteira 8 carteira 9 carteira 10

2 carteira 11 carteira 12 carteira 13 carteira 14 carteira 15

3 carteira 16 carteira 17 carteira 18 carteira 19 carteira 20

4 carteira 21 carteira 22 carteira 23 carteira 24 carteira 25

5 carteira 26 carteira 27 carteira 28 carteira 29 carteira 30

6 carteira 31 carteira 32 carteira 33 carteira 34 carteira 35

7 carteira 36 carteira 37 carteira 38 carteira 39 carteira 40

8 carteira 41 carteira 42 carteira 43 carteira 44 carteira 45

9 carteira 46 carteira 47 carteira 48 carteira 49 carteira 50

Neste exemplo, possuímos uma matriz chamada Mat, com dimensão, ou tamanho da matriz, iguala 10 por 5, ou seja, 10 linhas e 5 colunas, com cinqüenta posições: 0x0 , 0x1, 0x2, 0x3 , 0x4 , 1x0, 1x1, 1x2, 1x3 , 1x4 , 2x0 , 2x1, 2x2, 2x3 , 2x4 , 3x0 , 3x1, 3x2, 3x3 , 3x4 , 4x0 , 4x1, 4x2, 4x3 ,4x4 , 5x0 , 5x1, 5x2, 5x3 , 5x4 , 6x0 , 6x1, 6x2, 6x3 , 6x4 , 7x0 , 7x1, 7x2, 7x3 , 7x4 , 8x0 , 8x1,8x2, 8x3 , 8x4 , 9x0 , 9x1, 9x2, 9x3 e 9x4. Na posição 0x0 da matriz Mat, temos a carteira1, naposição 0x1 da matriz Mat, temos a carteira2, até que na posição 9x4 da matriz Mat, temos acarteira50.

11.2. Declaração de Matriz

Quando declaramos uma matriz, precisamos saber qual o tipo de dados das informações queserão armazenadas na matriz, quais as informações, o número de elementos dessa matriz, bemcomo, o número de linhas e colunas. O nome atribuído para a declaração da matriz segue asmesmas regras da declaração de qualquer identificador.

Pseudocódigo

A declaração de uma matriz em pseudocódigo terá a seguinte regra sintática:

Declarar

<nome da matriz> [<nro de linhas>] [<nro de colunas>] <tipo dos elementos matriz>;

Por exemplo,

Declarar

Mat_exemplo [100][5] numérico_inteiro;

Neste exemplo, declaramos uma matriz chamada Mat_exemplo com 100 linhas e 5 colunastotalizando 500 elementos do tipo inteiro.

Copyright Faculdade IBTA

171

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 178: Apostila Algoritmos

Java

A declaração de uma matriz em Java terá a seguinte regra sintática:

<tipo elementos> <nome matriz> [ ][ ] = new <tipo elementos> [<nro lin>][<nro col>];

ou

<tipo elementos>[ ][ ] <nome matriz> = new <tipo elementos> [<nro lin>][<nro col>];

ou

<tipo elementos>[ ] <nome matriz> [ ] = new <tipo elementos> [<nro lin>][<nro col>];

Por exemplo,

int Mat_exemplo [ ][ ] = new int [100][5];

ou

int [ ][ ] Mat_exemplo = new int [100][5];

ou

int [ ] Mat_exemplo [ ] = new int [100][5];

Neste exemplo, declaramos uma matriz chamada Mat_exemplo com 100 linhas e 5 colunastotalizando 500 elementos do tipo inteiro.

Podemos declarar uma matriz em Java e depois determinar seu tamanho, seguindo a seguinteregra sintática:

<tipo dos elementos> <nome da matriz> [ ][ ];

<nome da matriz> = new <tipo dos elementos> [<nro. de linhas>][<nro. de colunas>];

Por exemplo:

int Mat_exemplo [ ][ ];

Mat_exemplo = new int [100][5];

Neste exemplo, declaramos uma matriz chamada Mat_exemplo do tipo inteiro e depoisdeterminamos seu tamanho com 100 linhas e 5 colunas, totalizando 500 elementos do tipo inteiro.

11.3. Exemplo de Matriz

Vamos exemplificar, graficamente, uma matriz chamada notas, de 10 linhas e 5 colunas, ou seja,50 posições, contendo na primeira coluna as notas do primeiro bimestre de 10 alunos, nasegunda coluna as notas do segundo bimestre de 10 alunos, na terceira coluna as notas doterceiro bimestre de 10 alunos, na quarta coluna as notas do quarto bimestre de 10 alunos e naquinta coluna as médias finais dos 10 alunos. Como estamos considerando notas, entãodeterminamos que essas informações são do tipo numérico_real.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

172

Page 179: Apostila Algoritmos

Figura 21.

- notas é o nome da matriz;

- a matriz notas possui 10 linhas e 5 colunas, totalizando 50 informações, por isso, tem tamanho10x5, ou seja, 50 posições: de 0x0 até 9x4;

- a posição 0x0 da matriz, notas[0], possui a nota 9.0;

- a posição 0x1 da matriz, notas[1], possui a nota 8.0;

- a posição 0x2 da matriz, notas[2], possui a nota 8.5;

- a posição 0x3 da matriz, notas[3], possui a nota 9.0;

- a posição 0x4 da matriz, notas[4], possui a nota 8.5;

- a posição 1x0 da matriz, notas[0], possui a nota 5.0;

- a posição 1x1 da matriz, notas[1], possui a nota 6.0;

- a posição 1x2 da matriz, notas[2], possui a nota 7.0;

- a posição 1x3 da matriz, notas[3], possui a nota 8.0;

- a posição 1x4 da matriz, notas[4], possui a nota 6.6;

- a posição 2x0 da matriz, notas[0], possui a nota 7.5;

- a posição 2x1 da matriz, notas[1], possui a nota 7.5;

- a posição 2x2 da matriz, notas[2], possui a nota 7.5;

- a posição 2x3 da matriz, notas[3], possui a nota 7.5;

- a posição 2x4 da matriz, notas[4], possui a nota 7.5;

- a posição 3x0 da matriz, notas[0], possui a nota 5.0;

- a posição 3x1 da matriz, notas[1], possui a nota 9.0;

- a posição 3x2 da matriz, notas[2], possui a nota 3.0;

- a posição 3x3 da matriz, notas[3], possui a nota 7.0;

Copyright Faculdade IBTA

173

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Notas 1º Bim 2º Bim 3º Bim 4º Bim

0 1 2 3 4

Aluno 1 0 9.0 8.0 8.5 9.0 8.5

Aluno 2 1 5.0 6.0 7.0 8.0 6.5

Aluno 3 2 7.5 7.5 7.5 7.5 7.5

Aluno 4 3 5.0 9.0 3.0 7.0 6.0

Aluno 5 4 8.0 6.0 6.0 7.0 7.0

Aluno 6 5 9.0 8.0 9.0 10.0 9.0

Aluno 7 6 8.0 8.0 8.0 8.0 8.0

Aluno 8 7 8.5 6.0 7.5 6.0 7.0

Aluno 9 8 9.5 8.5 8.5 9.5 9.0

Aluno 10 9 5.0 6.5 7.0 7.5 6.5

Posições

MédiaFinal

Page 180: Apostila Algoritmos

- a posição 3x4 da matriz, notas[4], possui a nota 6.0;

- a posição 4x0 da matriz, notas[0], possui a nota 8.0;

- a posição 4x1 da matriz, notas[1], possui a nota 6.0;

- a posição 4x2 da matriz, notas[2], possui a nota 6.0;

- a posição 4x3 da matriz, notas[3], possui a nota 7.0;

- a posição 4x4 da matriz, notas[4], possui a nota 7.0;

- a posição 5x0 da matriz, notas[0], possui a nota 9.0;

- a posição 5x1 da matriz, notas[1], possui a nota 8.0;

- a posição 5x2 da matriz, notas[2], possui a nota 9.0;

- a posição 5x3 da matriz, notas[3], possui a nota 10.0;

- a posição 5x4 da matriz, notas[4], possui a nota 9.0;

- a posição 6x0 da matriz, notas[0], possui a nota 8.0;

- a posição 6x1 da matriz, notas[1], possui a nota 8.0;

- a posição 6x2 da matriz, notas[2], possui a nota 8.0;

- a posição 6x3 da matriz, notas[3], possui a nota 8.0;

- a posição 6x4 da matriz, notas[4], possui a nota 8.0;

- a posição 7x0 da matriz, notas[0], possui a nota 8.5;

- a posição 7x1 da matriz, notas[1], possui a nota 6.0;

- a posição 7x2 da matriz, notas[2], possui a nota 7.5;

- a posição 7x3 da matriz, notas[3], possui a nota 6.0;

- a posição 7x4 da matriz, notas[4], possui a nota 7.0;

- a posição 8x0 da matriz, notas[0], possui a nota 9.5;

- a posição 8x1 da matriz, notas[1], possui a nota 8.5;

- a posição 8x2 da matriz, notas[2], possui a nota 8.5;

- a posição 8x3 da matriz, notas[3], possui a nota 9.5;

- a posição 8x4 da matriz, notas[4], possui a nota 9.0;

- a posição 9x0 da matriz, notas[0], possui a nota 5.0;

- a posição 9x1 da matriz, notas[1], possui a nota 6.5;

- a posição 9x2 da matriz, notas[2], possui a nota 7.0;

- a posição 9x3 da matriz, notas[3], possui a nota 7.5;

- a posição 9x4 da matriz, notas[4], possui a nota 6.5.

11.4. Atribuindo Valores à Matriz

Quando atribuímos valores à matriz, precisamos saber qual o tipo de dados das informações queserão armazenadas na matriz e o número de linhas e colunas dessa matriz, ou seja, o número de

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

174

Page 181: Apostila Algoritmos

elementos dessa matriz. Os valores são atribuídos a cada posição da matriz e a forma deatribuição é a mesma de qualquer variável ou constante.

Pseudocódigo

A atribuição de valores para cada posição da matriz em pseudocódigo terá a seguinte regrasintática:

<nome da matriz> [<nro. da linha>] [<nro. da coluna>] � <valor>;

Por exemplo,

notas [0][0] � 9.0;

Neste exemplo, a posição 0x0 da matriz notas recebe o valor 9.0.

Podemos também atribuir valores no momento da declaração da matriz, conforme a seguinteregra sintática:

Declarar

<nome da matriz> [<nro linhas>][<nro colunas>] � {{<vlr11> , <vlr12> , ... , <vlr1n>} ,

{<vlr21> , <vlr22> , ... , <vlr2n>} , ... , {<vlrm1> , <vlrm2> , ... , <vlrmn>}} <tipo de dados da

matriz>;

Por exemplo,

Declarar

notas [2][3] � {{ 9.0 , 10.0 , 8.5} , { 5.5 , 5.0 , 7.5}} numérico_real;

Neste exemplo, declaramos uma matriz chamada notas de tamanho 2x3, ou seja, de 6 posições,de forma que a posição 0x0 da matriz possua o valor 9.0, a posição 0x1 da matriz possua o valor10.0, a posição 0x2 da matriz possua o valor 8.5, a posição 1x0 da matriz possua o valor 5.5, aposição 1x1 da matriz possua o valor 5.0 e a posição 1x2 da matriz possua o valor 7.5.

Java

A atribuição de valores para cada posição da matriz em Java terá a seguinte regra sintática:

<nome da matriz> [<nro. da linha>] [<nro. da coluna>] = <valor>;

Por exemplo,

notas [0][0] = 9.0;

Neste exemplo, a posição 0x0 da matriz notas recebe o valor 9.0.

Podemos também atribuir valores no momento da declaração da matriz, conforme a seguinteregra sintática:

<tipo dos dados> <nome da matriz> [ ][ ] = {{<vlr11> , <vlr12> , ... , <vlr1n>} , {<vlr21> ,

<vlr22> , ... , <vlr2n>} , ... {<vlrm1> , <vlrm2> , ... , <vlrmn>}} <tipo dos dados da matriz>;

Copyright Faculdade IBTA

175

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 182: Apostila Algoritmos

Por exemplo,

double notas [ ][ ] = {{ 9.0 , 10.0 , 8.5} , { 5.5 , 5.0 , 7.5}};

Neste exemplo, declaramos uma matriz chamada notas de tamanho 2x3, ou seja, de 6 posições,de forma que a posição 0x0 da matriz possua o valor 9.0, a posição 0x1 da matriz possua o valor10.0, a posição 0x2 da matriz possua o valor 8.5, a posição 1x0 da matriz possua o valor 5.5, aposição 1x1 da matriz possua o valor 5.0 e a posição 1x2 da matriz possua o valor 7.5.

11.5. Mostrando os Elementos de uma Matriz

Quando mostramos valores da matriz, precisamos saber qual o tipo de dados das informaçõesque foram armazenadas na matriz e o número de elementos dessa matriz. Os valores sãomostrados para cada posição da matriz e a forma de mostrar os elementos na tela é a mesma dequalquer variável ou constante.

Pseudocódigo

Para mostrar os valores de cada posição da matriz em pseudocódigo teremos a seguinte regrasintática:

escrever (<nome da matriz>[<nro. da linha>][<nro. da coluna>]);

Por exemplo,

escrever (notas [0][0]);

Neste exemplo, o conteúdo da posição 0x0 da matriz notas será mostrado ao usuário, ou seja, ovalor 9.0 aparecerá na tela do usuário.

Note que a mensagem dentro do comando escrever pode vir concatenada com outros valoresalfanuméricos. Por exemplo:

escrever (“A nota é: ” , notas[0][0]);

Neste exemplo, a mensagem A nota é 9.0 aparecerá na tela do usuário.

Java

Para mostrar os valores de cada posição da matriz em Java, teremos a seguinte regra sintática:

System.out.println (<nome da matriz> [<nro. da linha>][<nro. da coluna>]);

Por exemplo,

System.out.println(notas [0][0]);

Neste exemplo, o conteúdo da posição 0x0 da matriz notas será mostrado ao usuário, ou seja, ovalor 9.0 aparecerá na tela do usuário.

Note que a mensagem dentro do comando System.out.println pode vir concatenada com outrasStrings. Por exemplo:

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

176

Page 183: Apostila Algoritmos

System.out.println("A nota é: " + notas[0][0]);

Neste exemplo, a mensagem A nota é 9.0 aparecerá na tela do usuário.

11.6. Exemplos de Matrizes em Pseudocódigo

1. Desenvolva um algoritmo que receba 25 valores numéricos inteiros numa matriz 5x5 e mostreesses números.

Algoritmo Mostrar

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

Mat [5][5] , i , j numérico_inteiro;

// processamento de dados

para i de 0 até 4 passo + 1 faça

para j de 0 até 4 passo + 1 faça

// mensagem ao usuário

escrever ("Digite um valor inteiro");

// entrada de dados

ler (Mat[i][j]);

// saída de resultados

escrever (Mat[i][j]);

fimpara;

fimpara;

fim_algoritmo.

2. Desenvolva um algoritmo que receba 120 valores numéricos inteiros em uma matriz 10x12 emostre a soma desses 120 números.

Algoritmo Somar

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

MatSoma [10][12] , a , b , soma � 0 numérico_inteiro;

// processamento de dados

para a de 0 até 9 passo + 1 faça

Copyright Faculdade IBTA

177

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 184: Apostila Algoritmos

para b de 0 até 11 passo + 1 faça

// mensagem ao usuário

escrever ("Digite um valor inteiro");

// entrada de dados

ler (MatSoma[a][b]);

soma � soma + MatSoma[a][b];

fimpara;

fimpara;

// saída de resultados

escrever ("A soma dos 120 valores digitados é: " , soma);

fim_algoritmo.

3. Desenvolva um algoritmo que receba 50 notas bimestrais de 10 alunos de 5 turmas, calcule emostre a média aritmética dessas 50 notas.

Algoritmo MediaAritmetica

início_algoritmo

// declaração de variáveis e/ou constantes

Declarar

i , j numérico_inteiro;

Notas [10][5] , media, soma � 0 numérico_real;

// processamento de dados

para i de 0 até 9 passo + 1 faça

para j de 0 até 4 passo + 1 faça

// mensagem ao usuário

escrever ("Digite uma nota");

// entrada de dados

ler (Notas[i][j]);

soma � soma + Notas[i][j];

fimpara;

fimpara;

// processamento de dados

media � soma/50;

// saída de resultados

escrever ("A média das 50 notas digitadas é: " , media);

fim_algoritmo.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

178

Page 185: Apostila Algoritmos

4. Desenvolva um algoritmo modularizado que receba 200 valores numéricos reais numa matriz20 x 10, mostre esses valores e a soma dos números pares.

numérico_real FuncSoma ( )

início

Declarar // declaração de variáveis e/ou constantes

i , j numérico_inteiro;

MatNum [20][10] , soma � 0 numérico_real;

// processamento de dados

para i de 0 até 19 passo + 1 faça

para j de 0 até 9 passo + 1 faça

// mensagem ao usuário

escrever (“Digite um número”);

ler (MatNum[i][j]); // entrada de dados

se ((MatNum[i][j] mod 2) = 0 )

então

soma � soma + MatNum[i][j];

fimse;

escrever (“O número digitado é ” , MatNum[i][j]);

fimpara;

fimpara;

// saída de resultados

retornar soma;

fimmódulo.

Algoritmo SomaPares

início_algoritmo

Declarar // declaração de variáveis e/ou constantes

s � 0 numérico_real;

// processamento de dados

s � FuncSoma ( );

// saída de resultados

escrever (“A soma dos números pares é: ” , s);

fim_algoritmo.

Copyright Faculdade IBTA

179

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 186: Apostila Algoritmos

11.7. Exemplos de Matrizes em Java

1. Desenvolva um algoritmo que receba 25 valores numéricos inteiros numa matriz 5x5 e mostreesses números.

class Mostrar

{public static void main(String args [ ]){

// declaração de variáveis e/ou constantes

int Mat [ ][ ] , i , j ;

Mat = new int [5][5];

// processamento de dados

for ( i = 0 ; i < 5 ; i++ ){

for ( j = 0 ; j < 5 ; j++){

// mensagem ao usuário e entrada de dadosMat[i][j] = Integer.parseInt(JOptionPane.showInputDialog

(“Digite um valor inteiro”));// saída de resultadosSystem.out.println (Mat[i][j]);

} // for usando a variável j

} // for usando a variável iSystem.exit(0);

} // void main

} // classe Mostrar

2. Desenvolva um algoritmo que receba 120 valores numéricos inteiros numa matriz 10x12 emostre a soma desses 120 números.

class Somar

{public static void main(String args [ ]){

// declaração de variáveis e/ou constantes

int MatS [ ][ ] , a , b , soma = 0;

MatS = new int [10][12];

// processamento de dados

for ( a = 0 ; a <= 9 ; a++ ){

for ( b = 0 ; b <= 11 ; b++ ){

// mensagem ao usuário e entrada de dadosMatS[a][b]= Integer.parseInt(JOptionPane.showInputDialog

(“Digite um valor inteiro”));soma = soma + MatS[a][b];

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

180

Page 187: Apostila Algoritmos

} // for usando a variável b

} // for usando a variável a

// saída de resultadosSystem.out.println (“A soma dos 120 valores digitados é: ”

+ soma);System.exit(0);

} // void main

} // classe Somar

3. Desenvolva um algoritmo que receba 50 notas bimestrais de 10 alunos de 5 turmas, calcule emostre a média aritmética dessas 50 notas.

class MediaAritmetica

{public static void main(String args [ ]){

// declaração de variáveis e/ou constantes

int i , j ;

double Notas[ ][ ] , media , soma = 0;

Notas = new double [10][5];

// processamento de dados

for ( i = 0 ; i <= 9 ; i++ ){

for ( j = 0 ; j <= 4 ; j++ ){

// mensagem ao usuário e entrada de dadosNotas[i][j] = Double.parseDouble(

JOptionPane.showInputDialog (“Digite uma nota”));soma = soma + Notas[i][j];

} // for usando variável j

} // for usando variável imedia = soma/50;// saída de resultadosSystem.out.println (“A média das 50 notas digitadas é: ”

+ media);System.exit(0);

} // void main

} // classe MediaAritmetica

4. Desenvolva um algoritmo que receba 200 valores numéricos reais numa matriz 20x10, mostreesses valores e a soma dos números pares.

class SomaPares

{public static void main(String args [ ]){

// declaração de variáveis e/ou constantes

int i , j ;

Copyright Faculdade IBTA

181

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 188: Apostila Algoritmos

double MatNum[ ][ ] , soma = 0;

MatNum = new double [20][10];

// processamento de dados

for ( i = 0 ; i < 20 ; i++ ){

for ( j = 0 ; j < 10 ; j++ ){

// mensagem ao usuário e entrada de dadosMatNum[i][j] = Double.parseDouble(

JOptionPane.showInputDialog (“Digite um número”));

if ((MatNum[i][j] % 2) == 0)

{soma = soma + MatNum[i][j];

} // if// saída de resultadosSystem.out.println(“O número digitado é” +

MatNum[i][j]);

} // for usando a variável j

} // for usando a variável i// saída de resultadosSystem.out.println (“A soma dos números pares é: ” + soma);System.exit(0);

} // void main

} // classe SomaPares

Exercícios de Matrizes

Para todos os exercícios abaixo, construir um algoritmo modularizado usando matriz.

01. Desenvolva um algoritmo que receba e mostre 120 valores alfanuméricos numa matriz 10x12.

02. Desenvolva um algoritmo que receba 20 valores numéricos inteiros numa matriz A de dimensões10x2 e 20 valores numéricos inteiros numa matriz B de dimensões 10x2. Construa uma matriz Ccom dimensões 10x2, onde cada posição possua a soma dos elementos das matrizes A e B emsuas respectivas posições. Mostre os elementos das três matrizes.

03. Desenvolva um algoritmo que receba 50 valores numéricos reais numa matriz X de dimensões5x10 e 30 valores numéricos reais numa matriz Y de dimensões 3x10. Construa uma matriz Z dedimensões 8x10 com a concatenação das matrizes X e Y, ou seja, os elementos das 5 primeiraslinhas são os mesmos elementos da matriz X e os elementos das três últimas linhas são osmesmos da matriz Y. Mostre os elementos das três matrizes.

04. Desenvolva um algoritmo que receba 10 valores numéricos inteiros numa matriz Num dedimensões 5x2, calcule e mostre os números primos e suas respectivas posições.

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

182

Page 189: Apostila Algoritmos

05. Desenvolva um algoritmo que receba 50 valores numéricos reais numa matriz 10x5, calcule earmazene numa segunda matriz os 50 valores da primeira matriz multiplicados por 7. Mostre osvalores das duas matrizes.

06. Desenvolva um algoritmo que receba 35 valores numéricos inteiros numa matriz de dimensões7x5, calcule e armazene numa segunda matriz o quadrado dos 35 valores da primeira matriz.Mostre os valores das duas matrizes.

07. Desenvolva um algoritmo que receba 45 valores numéricos inteiros numa matriz de dimensões5x9, calcule e armazene numa segunda matriz o fatorial de cada elemento da primeira matriz.Mostre as duas matrizes.

08. Desenvolva um algoritmo que receba 90 valores numéricos inteiros positivos numa matriz dedimensões 10x9, calcule e armazene numa segunda matriz o negativo de cada elemento daprimeira matriz. Mostre as duas matrizes.

09. Desenvolva um algoritmo que receba 75 valores numéricos reais numa matriz de dimensões15x5, calcule e armazene numa segunda matriz a metade de cada elemento da primeira matriz.Mostre as duas matrizes.

10. Desenvolva um algoritmo que calcule a tabuada dos números de 1 a 10 e armazene numa matrizde dimensões 10x10 o resultado da tabuada. Mostre os elementos da matriz. Na primeira colunada matriz, armazene a tabuada da número 1, na segunda coluna da matriz, armazene a tabuadado número 2 e assim por diante, até a última coluna da matriz, armazene a tabuada do número10.

11. Desenvolva um algoritmo que receba 15 valores referentes a temperaturas em graus Celsius earmazene na primeira linha de uma matriz de dimensões 3x15. Calcule e armazene na segundalinha dessa matriz os valores de cada temperatura em graus Celsius convertidos para grausFahrenheit. Calcule e armazene na terceira linha dessa matriz cada temperatura em graus Celsiusconvertidos para graus Kelvin. Mostre os elementos da matriz.

12. Desenvolva um algoritmo que receba 49 valores numéricos inteiros numa matriz de dimensões7x7, calcule e armazene o triplo dos valores divisíveis por 3 numa segunda matriz, armazenandoinalterados os valores que não forem divisíveis por 3. Mostre os elementos das duas matrizes.

13. Desenvolva um algoritmo que receba 15 valores alfanuméricos numa matriz de dimensões 3x5 earmazene invertido esses elementos numa segunda matriz de dimensões 3x5. O primeiroelemento da primeira matriz será o último elemento da segunda matriz, o segundo elemento daprimeira matriz será o penúltimo elemento da segunda matriz e assim por diante. Mostre oselementos das duas matrizes.

14. Desenvolva um algoritmo que receba 25 valores numéricos inteiros e pares numa matriz dedimensões 5x5 e receba 25 valores numéricos inteiros e ímpares numa segunda matriz dedimensões 5x5 de forma que cada elemento recebido seja validado pelo programa e não pelousuário. Armazene numa terceira matriz de 50 posições de dimensões 10x5 o resto da divisão decada elemento da primeira matriz por 3 e o quociente da divisão de cada elemento da segundamatriz por 3. Os elementos das 5 primeiras linhas da terceira matriz são referentes à primeira

Copyright Faculdade IBTA

183

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 190: Apostila Algoritmos

matriz e os elementos das 5 últimas linhas da terceira matriz são referentes à segunda matriz.Mostre os elementos das três matrizes.

15. Desenvolva um algoritmo que receba 70 valores divisíveis por 2 e por 3 e armazene numa matrizde dimensões 7x10. O algoritmo e não o usuário é quem deve validar, se um valor é divisível por2 e por 3. Caso o valor digitado satisfaça a condição, então ele será armazenado na matriz, casocontrário, outro valor será recebido até que os 70 valores preencham a matriz. Mostre oselementos da matriz.

16. Desenvolva um algoritmo que receba 81 valores divisíveis por 5 ou por 7 e armazene numa matrizde dimensões 9x9. O algoritmo e não o usuário é quem deve validar, se um valor é divisível por 5ou 7. Caso o valor digitado satisfaça a condição, então ele será armazenado na matriz, casocontrário, outra valor será recebido até que os 81 valores preencham a matriz. Mostre oselementos da matriz.

17. Desenvolva um algoritmo que receba 40 valores numéricos inteiros numa matriz de dimensões10x4, calcule e mostre os números primos e suas respectivas posições.

18. Desenvolva um algoritmo que receba 55 valores numéricos reais numa matriz de dimensões5x11, calcule e mostre a média aritmética dos 55 valores.

19. Desenvolva um algoritmo que receba 10 valores numéricos inteiros numa matriz de dimensões2x5, calcule e mostre a média ponderada dos 10 valores, considerando o peso de cada valor, onúmero correspondente da coluna em que se encontra mais um, ou seja, o peso do elemento daposição 0x0 é 1, o peso do elemento da posição 0x1 é 2 e assim por diante.

20. Desenvolva um algoritmo que receba 50 valores alfanuméricos numa matriz de dimensões 10x5,verifique e mostre os elementos que começam com uma vogal. Para facilitar, classifique emordem crescente essa matriz.

21. Desenvolva um algoritmo que receba 49 valores numéricos inteiros numa matriz de dimensões7x7, calcule e mostre os números pares, suas posições e a soma dos números pares, bem comoos números ímpares, suas posições e a quantidade de números ímpares.

22. Desenvolva um algoritmo que receba 65 valores resultantes dos números sorteados em um dadojogado 65 vezes. Esses valores devem ser armazenados numa matriz 13x5. Mostre os númerossorteados e a freqüência com que apareceram.

23. Desenvolva um algoritmo que receba 100 valores alfanuméricos entre vogais armazenadas numamatriz de dimensões 10x10, calcule e mostre quantas vezes cada vogal aparece e suaporcentagem.

24. Desenvolva um algoritmo que receba 35 valores numéricos reais e armazene cada elemento deforma ordenada, numa matriz de dimensões 7x5. O primeiro valor digitado será armazenado naprimeira posição da matriz, ou seja, a posição 0x0; o segundo valor digitado será armazenado nasegundo posição da matriz, ou seja, a posição 0x1, se for maior que o primeiro elemento; se formenor que o primeiro elemento, deslocar esse valor para a segunda posição e armazenar osegundo valor digitado na primeira posição. Continue essa regra até que todos os 35 valores

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

184

Page 191: Apostila Algoritmos

sejam digitados e armazenados em ordem crescente na matriz de 35 posições. Mostre oselementos dessa matriz.

25. Desenvolva um algoritmo que receba 15 valores numéricos inteiros numa matriz X de dimensões3x5, receba 15 valores numéricos inteiros numa matriz Y de dimensões 3x5 e concatenealternadamente os elementos das matrizes X e Y numa terceira matriz Z de dimensões 3x10. Oselementos das colunas pares da matriz Z são os mesmos da matriz X e os elementos das colunasímpares da matriz Z são os mesmos da matriz Y. Mostre os elementos das três matrizes.

26. Desenvolva um algoritmo que receba 30 valores numéricos reais numa matriz A de dimensões10x3, receba 30 valores numéricos reais numa matriz B de dimensões 10x3 e concatene oselementos das matrizes A e B numa terceira matriz C de dimensões 20x3. Os primeiros 30elementos da matriz C são os mesmos da matriz A e os 30 últimos elementos da matriz C são osmesmos da matriz B. Mostre os elementos das três matrizes.

27. Desenvolva um algoritmo que receba 64 valores alfanuméricos numa matriz de dimensões 8x8,armazene de forma invertida os elementos dessa matriz numa segunda matriz de dimensões 8x8,ou seja, o primeiro elemento da primeira matriz estará na última posição da segunda matriz, osegundo elemento da primeira matriz estará na penúltima posição da segunda matriz e assim pordiante. Mostre os valores das duas matrizes.

28. Desenvolva um algoritmo que receba 75 valores alfanuméricos numa matriz de dimensões 15x5,armazene esses valores numa segunda matriz de dimensões 15x5 a partir do centro para aprimeira e a última posições e de modo alternado, ou seja, o primeiro elemento da primeira matrizestará na posição do meio da segunda matriz, o segundo elemento da primeira matriz estará naposição à esquerda da posição do meio da segunda matriz, o terceiro elemento da primeira matrizestará na posição à direita da posição do meio da segunda matriz e assim por diante. Mostre oselementos das duas matrizes.

29. Desenvolva um algoritmo que receba 100 valores numéricos inteiros numa matriz de dimensões10x10. Armazene os restos das divisões dos elementos das posições pares pela soma da suaposição (linha + coluna) numa segunda matriz de dimensões 10x10 e os quocientes das divisõesdos elementos das posições ímpares pela soma da sua posição (linha + coluna) na segundamatriz. Mostre os elementos das duas matrizes.

30. Desenvolva um algoritmo que receba 35 valores numéricos reais numa matriz de dimensões 7x5e classifique em ordem crescente os elementos dessa matriz, utilizando a seguinte regra:

• selecione o menor elemento da matriz de 35 posições;

• troque esse elemento pelo primeiro elemento da matriz;

• repita os dois primeiros itens, considerando agora os 34 elementos restantes da matriz,trocando o menor elemento com o segundo elemento da matriz;

• repita os dois primeiros itens, considerando agora os 33 elementos restantes da matriz,trocando o menor elemento com o terceiro elemento da matriz;

• continue até que se considere apenas a matriz com a última posição.

Mostre os elementos ordenados da matriz.

Copyright Faculdade IBTA

185

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 192: Apostila Algoritmos

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

186

Page 193: Apostila Algoritmos

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

Copyright Faculdade IBTA

187

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 194: Apostila Algoritmos

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

188

Page 195: Apostila Algoritmos

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

Copyright Faculdade IBTA

189

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

Page 196: Apostila Algoritmos

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

Copyright Faculdade IBTA

IBTA 3208ADS / BD / RC / SIAlgoritmosSemestre I

190