Logic a Deprogram a Cao

72
Lógica de Programação e Algoritmos Sônia Virginia Alves França 2006

Transcript of Logic a Deprogram a Cao

Page 1: Logic a Deprogram a Cao

Lógica de Programação e Algoritmos

Sônia Virginia Alves França

2006

Page 2: Logic a Deprogram a Cao

Índice 1. Introdução........................................................................................................................................4

2. Lógica ..............................................................................................................................................4

2.1 Raciocínio Lógico .......................................................................................................................5

2.2 Automação ..................................................................................................................................5

Exercícios Propostos I.........................................................................................................................6

3. Linguagem.......................................................................................................................................8

4. Programação....................................................................................................................................8

5. Algoritmo .........................................................................................................................................9

5.1 Definição de Algoritmo............................................................................................................. 10

5.2 Linguagem de Descrição de Algoritmo (LDA)........................................................................ 11

6. Técnicas Básicas............................................................................................................................ 15

6.1 Tipos de dados primitivos ........................................................................................................ 15

6.2 Variáveis.................................................................................................................................... 16

6.2.1 Identificadores .................................................................................................................... 16

6.2.2 Declaração de Variáveis...................................................................................................... 17

6.3 Operações Básicas.................................................................................................................... 18

6.3.1 Atribuição............................................................................................................................ 18

Exercícios Propostos II ..................................................................................................................... 19

6.3.2 Operadores Aritméticos......................................................................................................20

6.3.3 Operadores Relacionais...................................................................................................... 21

Exercícios Propostos III ...................................................................................................................22

6.3.4 Operadores Lógicos............................................................................................................23

Exercícios Propostos IV....................................................................................................................25

6.4 Comandos de Entrada e Saída de Dados .................................................................................26

6.4.1 Entrada de Dados ...............................................................................................................26

6.4.2 Saída de Dados ...................................................................................................................27

Exercícios Propostos V .....................................................................................................................30

7. Comandos de Controle ..................................................................................................................33

7.1 Seqüência ..................................................................................................................................33

7.2 Seleção ......................................................................................................................................34

7.2.1 Comando Se Então Senão...................................................................................................34

7.2.2 Seleção de Múltipla Escolha...............................................................................................38

Exercícios Propostos VI ....................................................................................................................39

7.3 Comandos de Repetição...........................................................................................................43

7.3.1 Para .....................................................................................................................................44

2

Page 3: Logic a Deprogram a Cao

7.3.2 Enquanto ............................................................................................................................46

7.3.3 Repita.................................................................................................................................. 51

Exercícios Propostos VII ..................................................................................................................52

8.Tipos de Dados Homogêneos........................................................................................................58

8.1 Vetor ..........................................................................................................................................58

Exercícios Propostos VIII .................................................................................................................60

8.2 Matrizes ....................................................................................................................................64

Exercícios Propostos IX....................................................................................................................65

9. Tipos de Dados Heterogêneos......................................................................................................65

9.1 Registro .....................................................................................................................................66

9.2 Vetor de Registro ......................................................................................................................67

Exercícios Propostos X .....................................................................................................................68

10. Modularização..............................................................................................................................69

10.1 Escopo de Variáveis ................................................................................................................70

10.2 Parâmetros .............................................................................................................................. 71

Exercícios Propostos XI.................................................................................................................... 71

3

Page 4: Logic a Deprogram a Cao

1. Introdução

O objetivo principal da Lógica de Programação é demonstrar técnicas para resolução de problemas e conseqüentemente automatização de tarefas.

O aprendizado da Lógica é essencial para formação de um bom programador, servindo como base para o aprendizado de todas as linguagens de programação, estruturadas ou não.

De um modo geral esses conhecimentos serão de muita importância, pois ajudarão no cotidiano, desenvolvendo um raciocínio rápido.

2. Lógica

Pode-se dizer que a lógica é a arte de pensar corretamente, e visto que a forma mais complexa do pensamento é o raciocínio, a lógica estuda ou tem em vista a “correção do raciocínio”.

Segundo o dicionário Aurélio, lógica significa “coerência de raciocínio, de idéias. Modo de raciocinar peculiar a alguém, ou a um grupo. Seqüência coerente, regular e necessária de acontecimentos, de coisas.”

Exemplo:

• Todo mamífero é animal.

• Todo cavalo é mamífero.

• Portanto, todo cavalo é animal.

Existe Lógica no dia-a-dia???

Sempre que pensamos ou falamos a lógica nos acompanha. Portanto, sempre que quisermos pensar, falar ou escrever, temos que colocar ordem no pensamento.

Exemplos:

• A gaveta está fechada.

• A bala está na gaveta.

• Preciso primeiro abrir a gaveta para depois pegar a bala.

• Moramos em três pessoas.

• Nenhum de nós dois quebrou o vaso.

• Quem quebrou o vaso?

Vamos criar uma situação!!! Você está viajando e fura um pneu de seu carro. Encosta-o e para. Será que você é capaz de descrever todos os passos desde a parada do carro até o pneu trocado?

A lógica é a seqüência detalhada e clara do fato.

4

Page 5: Logic a Deprogram a Cao

2.1 Raciocínio Lógico

Resolvam a seguinte questão: Existe um rio a ser atravessado por três pessoas que pesam 50, 50 e 100 Kg. Para atravessar este rio, as três pessoas dispõem de uma canoa que leva no máximo 100 Kg por viagem. Esta canoa tem que ser conduzida, isto é, ela não anda sozinha. Como estas pessoas chegam no outro lado da margem?

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~ ~ ~

RIO

Margem A Margem B

50, 50, 100

100

50, 100

50

50, 50

50, 50

50

50, 100

100

100, 50, 50

Depois de resolver este problema ou alguém lhe mostrar a solução, você será capaz de resolver problemas semelhantes a este ou outros do gênero e até mais complexos.

Esta é uma forma de “despertar” o Raciocínio Lógico.

Assim, como você seguiu uma lógica para resolver o exemplo, terá que seguir a mesma seqüência nos problemas oferecidos, só que voltada para o computador, obedecendo a regras de uma determinada linguagem especial.

2.2 Automação

A automatização de tarefas é um aspecto marcante da sociedade moderna.

Computador: Hardware e Software (elementos que controlam a execução automática de uma dada tarefa).

Algoritmo: descrição da execução de uma tarefa.

Para que um computador resolva um problema é necessário que um ser humano construa um esquema para a solução do problema, onde a construção desse esquema normalmente requer as seguintes etapas:

1. Entendimento do problema;

2. Criação de uma seqüência de operações (ou ações) que, quando executadas, produzem a solução para o problema;

3. Execução desta seqüência de operações.

As etapas de entendimento do problema e criação de seqüência de ações para obter resultados desejados são tarefas realizadas por seres humanos.

A execução das operações pode ser desempenhada por computadores: rapidez e confiabilidade.

5

Page 6: Logic a Deprogram a Cao

Exercícios Propostos I

Aqui você encontra alguns passatempos, envolvendo raciocínio lógico e matemático.

1. Se um tijolo pesa um quilo mais meio tijolo, quanto pesa um tijolo e meio? 2. Três garotos querem atravessar um rio. O barco que possuem tem capacidade máxima de 150

quilos. Eles pesam 50, 75 e 120 quilos. Como podem atravessar, sem afundar o barco? 3. Carla, Selma e Mara estão sentadas lado a lado em um teatro. Carla fala sempre a verdade; Selma às

vezes fala a verdade; e Mara nunca fala a verdade. A que está sentada à esquerda diz: “Carla é quem está sentada no meio”. A que está sentada no meio diz: “Eu sou a Selma”. Finalmente, a que está sentada a direita diz: “A Mara é quem está sentada no meio”. Qual a posição de cada uma delas?

4. Uma garrafa e uma rolha custam R$ 11,00 quando vendidas juntas. Se vendidas separadamente, a garrafa custa R$ 10,00 a mais que a rolha. Quanto custa a rolha?

5. Os carros de Artur, Bernardo e César, não necessariamente nessa ordem, um Palio, um Gol e um Vectra. Um dos carros é cinza, um é verde, e o outro é azul. O carro de Artur é cinza; o carro de César é o Vectra; o carro de Bernardo não é verde e não é o Palio. Quais as cores do Palio, do Gol e do Vectra?

6. Certa noite Pedrinho resolveu ir ao cinema, mas descobriu que não tinha meias limpas para calçar. Foi então ao quarto do pai, que estava na escuridão. Ele sabia que lá existiam 10 pares de meias brancas e 10 pares de meias pretas, todos misturados. Quantas meias ele teve de retirar da gaveta para estar certo que possuía um par igual?

7. A banda U2 tem um concerto que começa daqui a 17 minutos e todos precisam cruzar a ponte para chegar lá. Todos os 4 participantes estão do mesmo lado da ponte. Você pode ajudá-los a passar de um lado para o outro. É noite. Só há uma lanterna. Qualquer pessoa que passe, uma ou duas, deve passar com a lanterna na mão. A lanterna deve ser levada de um lado para o outro e não ser jogada.

Cada membro da banda tem um tempo diferente para passar de um lado para o outro. O par deve andar no tempo do menos veloz:

o Bono: 1 minuto para passar

o Edge: 2 minutos para passar

o Adam: 5 minutos para passar

o Larry: 10 minutos para passar

Por exemplo: se o Bono e o Larry passarem juntos, vai demorar 10 minutos para eles chegarem ao outro lado. Se ou Larry retornar com a lanterna, 20 minutos terão passados e você falhou no teste.

6

Page 7: Logic a Deprogram a Cao

8. Dada a série de números : 1, 1, 2, 3, 5, 8, 13, qual é o próximo ? 9. Um pai preocupado com a saúde de seus filhos quer que eles comam maçãs, mas não sabe fazer a distribuição. Se der 5 maçãs para cada filho, vão lhe sobrar quatro, se der 6, vai faltar uma. Quantos filhos e quantas maçãs ele tem?

10. Daniela é mais jovem do que Adriano. Carlos é mais velho do que Daniela. Qual dessas conclusões é verdadeira?

• Adriano é mais velho do que Carlos. • Carlos é mais velho do que Adriano. • Daniela é a mais jovem dos três.

11. Distribua os números de 1 a 9 nos círculos abaixo, de modo que a soma das linhas seja sempre 10.

12. Oito pessoas de uma só família estão sentadas em volta de uma mesa redonda. Seu Daniel é o chefe da

família, é casado com dona Marina, ótima cozinheira, principalmente aos domingos, quando toda a família

vem almoçar. Eles têm 3 filhos : Claudinho, que é casado com Doroti; Luísa, que é solteira e estuda nos

Estados Unidos; e Júlio, que é viúvo. A filha de Claudinho e Doroti chama-se Sônia e sempre se senta

entre os dois. Os filhos de Júlio chamam-se Pedro e Paulo, sempre estão brigando, e a avó não permite que

se sentem juntos. Júlio sempre coloca os cotovelos na mesa e isso irrita Doroti, que sempre fica longe dele.

Júlio prefere sentar-se no lado esquerdo do pai. Dona Marina tem um carinho especial pelo neto Pedro e

está sentada ao lado dele, enquanto conversa animadamente com sua nora, que está à sua esquerda. Paulo

sempre chega depois que o almoço foi servido e nunca fica contente com o lugar que sobrou para ele. Em

que lugares estão sentadas todas as pessoas em volta da mesa ?

7

Page 8: Logic a Deprogram a Cao

3. Linguagem

Linguagem é vocabulário, palavreado, usados como meio de expressão e de comunicação entre as pessoas. Toda linguagem possui inúmeras regras. O computador tem suas linguagens.

O primeiro passo é aprender lógica, isto é, aprender a lógica computacional, depois adaptá-la numa linguagem que o computador entenda.

A linguagem de computador possui quatro partes:

1. Sintaxe (estrutura): é a parte da gramática que estuda a disposição das palavras na frase e a das frases no discurso;

2. Semântica (significado, sentido): estuda o significado das palavras ou frases; 3. Verbos (ação): palavra que designa ação, estado, qualidade ou existência; 4. Símbolos: são os sinais ou figuras usadas na escrita para que possamos compreender os

verbos, obedecendo a uma sintaxe e a semântica. Os símbolos têm suas funções de acordo com a linguagem usada.

Linguagem Natural

É o uso da palavra como meio de expressão e de comunicação entre pessoas, i. é, a língua que se usa para comunicação.

O computador entende várias linguagens como: Pascal, Assembler, C++, Java, Cobol, Delphi, Prolog, etc.

4. Programação

A programação, entendida como programação de computadores, é uma atividade voltada à solução de problemas.

Programação é a seqüência de planejamento, projeto, escrita, instalação e testes de instruções desempenhadas pelo computador.

É uma ciência. Envolve princípios, técnicas e formalismos que visam a produção de software bem estruturado e confiável.

O estudo de programação não se restringe ao estudo de linguagens de programação. O trabalho de programação pode se tornar mais fácil se o dividirmos sistematicamente em partes

menos complexas (esta técnica denomina-se "dividir para conquistar").

8

Page 9: Logic a Deprogram a Cao

Podemos, então, dividir a programação em duas fases distintas:

Problema

Solução comoum programa

de computador

Solução comoum programa

de computador

Solução na forma de Algoritmo

Solução na forma de Algoritmo

Fase de Resolução do Problema1

Fase de Implementação (ou codificação) doAlgoritmo em alguma ling. de Programação

2

Um programa estará confiável quando conseguir fazer com que o computador cumpra com o objetivo proposto.

Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou pode não gerar nada se o computador detectar erros graves na seqüência de operações.

5. Algoritmo

É uma seqüência finita de passos lógicos escritos numa linguagem natural.

O melhor exemplo de algoritmo é uma receita de bolo, porque ali são descritos todos os passos para a construção de um bolo numa seqüência lógica.

É descrever passo a passo um problema para que o computador possa resolver.

Descrever os passos de como se encontra a média de três números quaisquer:

- informar os valores

- somar estes números

- dividir por três

- apresentar o resultado

9

Page 10: Logic a Deprogram a Cao

AlgoritmoAlgoritmo

Programa ObjetoPrograma Objeto

CompilaçãoCompilação

Programa FontePrograma FonteTradução do algoritmo para uma linguagem que o computador entende.

Tirar os possíveis erros cometidos ao passar o algoritmo para uma determinada linguagem.

Linguagem de máquina propriamente dita.

Aprendendo a construir algoritmos, facilmente aprenderá outras linguagens, pois TODAS as linguagens se baseiam na LÓGICA que estamos aprendendo.

5.1 Definição de Algoritmo

O conceito central da programação e da Ciência da Computação é o conceito de algoritmos, isto é, programar é basicamente construir algoritmos.

É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa.

Definimos algoritmo como a seqüência de ações que devem ser determinadas para a obtenção da solução de um problema. São utilizados no dia-a-dia.

Propriedades dos Algoritmos:

• Ações simples e bem definidas (não ambíguas);

• Seqüência ordenada de ações;

• Seqüência finita de passos.

10

Page 11: Logic a Deprogram a Cao

A formulação de um algoritmo consiste em um texto contendo instruções, as quais devem ser executadas numa ordem prescrita. Essas instruções são executadas num certo tempo, onde são considerados os dados de um conjunto de valores iniciais, fazendo com que o algoritmo seja caracterizado como um evento dinâmico e transformador, pois ele requer uma entrada, efetua um processamento e gera uma saída, lembrando que a entrada e saída são definidas em termos de informações, pois um computador é um processador de informações.

Os passos de um algoritmo devem ser simples, sem ambigüidades, finitos e devem estar numa ordem bem definida.

O algoritmo pode ser usado como uma ferramenta genérica para representar a solução de tarefas independente do desejo de automatizá-las, mas em geral está associado ao processamento eletrônico de dados, onde representa o rascunho para programas.

Serve como modelo para programas, pois sua linguagem é intermediária à linguagem humana e às linguagens de programação, sendo então, uma boa ferramenta na validação da lógica de tarefas a serem automatizadas.

É a forma pela qual descrevemos soluções de problemas do nosso mundo, afim de, serem implementadas utilizando os recursos do mundo computacional. Como este possuí severas limitações em relação ao nosso mundo, exige que, sejam impostas algumas regras básicas na forma de solucionar os problemas, para que, possamos utilizar os recursos de hardware e software disponíveis. Pois, os algoritmos, apesar de servirem para representar a solução de qualquer problema, no caso do Processamento de Dados, eles devem seguir as regras básicas de programação para que sejam compatíveis com as linguagens de programação.

5.2 Linguagem de Descrição de Algoritmo (LDA)

A automação exige que o planejamento da resolução do problema seja feito previamente, antes de utilizar o computador ALGORITMOS.

Usar linguagem natural?

Algoritmos necessitam de linguagem clara e sem ambigüidade

Definir uma sintaxe e uma semântica

11

Page 12: Logic a Deprogram a Cao

Linguagens naturais são imprecisas.

Impasse:

• Precisamos de liberdade de expressão para formular o nosso raciocínio;

• Necessitamos de uma notação formal .

Complexidade dos programas: técnicas de desenvolvimento estruturado de algoritmos.

Objetivos:

• Facilitar o desenvolvimento dos algoritmos;

• Facilitar o seu entendimento pelos humanos;

• Antecipar a comprovação da sua correção;

• Facilitar a sua manutenção e sua modificação;

• Permitir o que seu desenvolvimento possa ser empreendido simultaneamente por uma equipe de pessoas.

Características:

• Ter fim;

• Não dar margem à dupla interpretação (não ambíguo);

• Capacidade de receber dado(s) de entrada do mundo exterior;

• Poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo;

• Ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito).

Ao desenvolver algoritmos deve-se buscar: simplicidade e clareza.

Número de comandos limitado restrição no raciocínio.

12

Page 13: Logic a Deprogram a Cao

Linguagem de algoritmos pode ser:

• Gráfica (fluxogramas e diagramas CHAPIN)

• Escrita (Portugol, português estruturado)

Linguagens Gráficas

Fluxogramas: permitem visualizar o fluxo dos comandos que constituem o algoritmo.

Início

Fim Fim

Ler N1, N2, N3

CalcularM = N1, N2, N3

3

M >= 7Imprimir“Aprovado”

Imprimir “Reprovado”

sim não

Diagramas de CHAPIN

Início

Leia N1, N2, N3

M >= 7N S

Escreva Resultado

Fim

Média N1 + N2 + N3/ 3

Resultado Reprovado Resultado Aprovado

13

Page 14: Logic a Deprogram a Cao

Desvantagem das linguagens gráficas:

1. Dificuldade de escrita, entendimento e alterações;

2. Tendência a não seguir as regras da programação estruturada;

3. Dificultar a tradução em programa (implementação).

4. Algoritmos extremamente complicados;

5. Perigosa manutenção e modificação.

Linguagem Escrita - Portugol

É uma notação para algoritmos, a ser utilizada na definição, na criação, no desenvolvimento e na documentação de um programa. Portugol NÃO é uma linguagem de programação. É uma pseudolinguagem de programação. Força a se pensar no problema e não na máquina que vai executar o algoritmo. As regras utilizadas no portugol têm como objetivo compatibilizá-lo com todas as linguagens de programação, facilitando assim a sua implementação.

Vantagens:

• Independência física da solução (solução lógica apenas);

• Usa o português como base;

• Pode-se definir quais e como os dados vão estar estruturados;

• Passagem quase imediata do algoritmo para uma linguagem de programação qualquer.

Desvantagens:

• Exige a definição de uma linguagem não real para trabalho;

• Não padronizado.

Estrutura de um Algoritmo (Portugol)

INICIO

“Comentário (opcional). informa o que o algoritmo faz”

“Declaração das variáveis. Devemos aqui, informar quais e os tipos das variáveis que serão utilizadas no algoritmo.”

“Corpo do algoritmo. Aqui será escrita a seqüência de comandos que devem ser executados para solucionar o referido problema”

FIM

14

Page 15: Logic a Deprogram a Cao

6. Técnicas Básicas

6.1 Tipos de dados primitivos

Dados são representados pelas informações a serem tratadas (processadas) por um computador.

Inteiro

Toda e qualquer informação numérica que pertença ao conjunto dos números inteiros relativos (negativa, nula ou positiva).

• José tem 4 irmãos.

• A temperatura desta noite será de – 2 graus.

Real

Toda e qualquer informação numérica que pertença ao conjunto de números reais (negativa, positiva ou nula).

• Maria tem 1,73 metros de altura.

• saldo bancário de João é R$ 121,78.

Caractere

Toda e qualquer informação composta por uma seqüência de caracteres alfa numéricos (a, b, c,...z, A, B, C,...Z, 0...9) e /ou especiais (ex; #?@!<?).

Uma cadeia de caractere deve ser indicada entre aspas ″.

• Constava na prova: ″Use somente caneta! ″.

• ″ Fone: 222-0001″

Lógico

Toda e qualquer informação que pode apenas assumir duas situações (biestável). Tipo lógico é formado pelo valor VERDADE(V) e pelo valor FALSO(F).

Obs: Este tipo geralmente é aplicado para testar alguma condição que se faça necessário. Também chamado de tipo booleano.

• José é mais alto que Pedro? (verdade/falso)

15

Page 16: Logic a Deprogram a Cao

6.2 Variáveis

Unidades básicas de armazenamento das informações em programação. As variáveis representam espaços onde podemos armazenar e manipular dados.

No nível de algoritmos esses espaços são virtuais, pois representam apenas a capacidade de armazenar dados.

Pode-se pensar que uma variável como o nome de um local onde se pode colocar qualquer valor do conjunto de valores possíveis do tipo básico associado.

As linguagens de programação trazem os mais diversos tipos de variáveis, existem tipos específicos para números, texto, imagem, som, etc. Mas, em algoritmo são utilizados os tipos básicos.

Definiremos os seguintes tipos pelo fato de serem largamente utilizados e implementados na maioria das linguagens de programação: inteiro, real, caractere, lógico.

6.2.1 Identificadores

Representam os nomes escolhidos para rotular as variáveis, constantes, procedimentos e funções. Regras :

1. primeiro caractere deve ser uma letra;

2. Os nomes devem ser formados por caracteres pertencentes ao seguinte conjunto : {a,b,c,..z, A,B,C,...Z, 0,1,2,...,9,_};

3. Não deve haver espaço em branco;

4. Não deve haver identificadores repetidos;

5. Não existe distinção de maiúsculas e minúsculas;

6. Os nomes escolhidos devem ser claros a fim de explicitar seu conteúdo, mas também não devem ser extensos para não dificultar a escrita.

Exemplos de Identificadores:

Identificadores permitidos:

A X5 NOTA

A32B MATRICULA F1G3H5

Identificadores não permitidos:

5B A:B NOTA [1]

E(13) X-Y B*D

16

Page 17: Logic a Deprogram a Cao

6.2.2 Declaração de Variáveis

No mundo real manipulamos objetos e no mundo da informática os objetos são os dados, desta forma, precisamos declarar as variáveis para informar quais objetos serão manipulados pelo algoritmo.

Em ambientes computacionais, as informações variáveis são guardadas em dispositivos eletrônicos chamados “memória”. Podemos imaginar essa memória como sendo um armário cheio de gavetas, no qual as gavetas seriam os locais físicos responsáveis por armazenar objetos; os objetos (que podem ser substituídos) seriam as informações e as gavetas as variáveis.

Visto que na memória (armário) existem inúmeras variáveis (gavetas), precisamos diferenciá-las, o que é feito por meio de identificadores (etiquetas).

Cada variável (gaveta), no entanto, pode guardar apenas uma informação (objeto) de cada vez, sendo sempre do mesmo tipo (material).

Portanto, precisamos definir nomes para determinadas gavetas especificando qual o material dos objetos que lá podem ser armazenados, ou seja, declarar as variáveis conforme as seguintes regras:

Tipo: Lista de Variáveis;

Tipo: Lista de Variáveis;

.

Tipo: Lista de Variáveis;

Lista de Variáveis representa um conjunto de identificadores separados por vírgulas, os quais serão utilizados para referenciar os valores armazenados e tipo representa o tipo da informação que será armazenada.

Quando uma variável é declarada a mesma possui um valor não definido, isso indica que não podemos prever qual o valor inicial de uma variável e quando precisamos contar com um valor inicial devemos atribuir esse valor.

Exemplos:

Inteiro: X, Num;

Caracter: Nome, Endereco, Data;

Real: Nota, Peso, Dolar;

Lógico: Resposta;

17

Page 18: Logic a Deprogram a Cao

Resposta é o nome de um local de memória que só pode conter valores do tipo lógico, ou seja, por convenção, verdadeiro ou falso.

X é o nome de um local de memória que só pode conter valores do tipo inteiro, qualquer um deles.

6.3 Operações Básicas

Para solucionar problemas necessitaremos colocar, consultar e alterar valores de variáveis, desta forma, devemos definir um conjunto de OPERADORES.

Os operadores são o meio pelo qual incrementamos, decrementamos, comparamos e avaliamos, dados dentro do computador. Temos quatro tipos de operadores:

• Operador de Atribuição

• Operadores Aritméticos

• Operadores Relacionais

• Operadores Lógicos

Deveremos resolver uma enorme diversidade de problemas utilizando apenas esse conjunto limitado e simples de operações, acarretando numa grande dificuldade na introdução a programação.

6.3.1 Atribuição

NomeDaVariavel ← Valor, Variável ou Expressão;

Esse operador coloca o Valor, Variável ou Expressão na variável. É importante que o tipo do Valor, Variável ou Expressão seja compatível com o tipo da variável.

Exemplos:

IDADE ← 7;

NUM ← X;

SOMA ← X + Y+ Z;

MEDIA ← SOMA/3 ;

NOME ← ″MARIA″;

18

Page 19: Logic a Deprogram a Cao

Exercícios Propostos II

1. Identifique os tipos abaixo:

1) 1000 2) ″0″ 3) ″-900″ 4) V

5) – 456 6) 34 7) ″casa8″ 8) 0

9) – 1,56 10) ″cinco″ 11) ″0,87″ 12) 45,8976

2. Quais os nomes válidos de identificadores?

1) ENDERECO 2) 21BRASIL 3) FONE$COM 4) NOME_USUARIO

5) USUARIO6 6) NOME*USUARIO 7) END*A-6 8) #MEDIA

Com as declarações abaixo:

Inteiro: NUM, X;

Real: SOMA;

Caracter: DIA;

Logico: TUDO;

3. Assinalar os comandos de atribuição inválidos:

( ) SOMA ← NUM + 2;

( ) TUDO ← SOMA

( ) X ← X + 1;

( ) NUM ← ″*ABC*″;

( ) DIA ← ″SEGUNDA″;

( ) SOMA + 2 ← NUM + 10;

( ) NUM ← SOMA;

( ) SOMA ← NUM;

19

Page 20: Logic a Deprogram a Cao

6.3.2 Operadores Aritméticos

Esses operadores e funções serão utilizados em expressões para realizar operações aritméticas com

variáveis.

Operador/Função Descrição

+ Adição

- Subtração

* Multiplicação

/ Divisão

div Retorna o quociente da divisão inteira

mod Retorna o resto da divisão inteira

pot(a,b) Retorna o valor de a elevado a b. ab

rad(a) Retorna a raiz quadrada de a. Rad(a) = b a

sorteio(a) Retorna um número aleatório, em intervalo fechado, entre 1 e a.

sen(x) Retorna o seno de x

cos(x) Retorna o co-seno de x

modulo(x) Retorna o módulo ou valor absoluto de x.

inteiro(x) Retorna a parte inteira de x. Inteiro(3,56) = 3

Observação

Operadores e funções recebem argumentos (parâmetros) e retornam um resultado, o qual pode ser atribuído a uma variável ou utilizado numa expressão. Os operadores são representados por símbolos e as funções por palavras que tem uma funcionalidade pré-estabelecida.

Exemplo: Suponha que A = 6, B = 1 e C = 16 então:

A ← A + 1; => A = 7

B ← B * C; => B = 16

C ← C – A; => C = 9

A ← C mod A; => A = 2 (resto da divisão)

A ← C div A; => A = 1 (parte inteira da divisão)

A ← C/A => A = 1,22 (divisão fracionária)

20

Page 21: Logic a Deprogram a Cao

Prioridade de Operadores

Durante a execução de uma expressão que envolve vários operadores, é necessário à existência de

prioridades representando um padrão a ser seguido, pois, caso contrário poderemos obter valores que não representam o resultado esperado.

1º Operações embutidas em parênteses “mais internos”;

2º Funções (div, mod, pot e Funções Primitivas);

3º Multiplicação e/ou divisão;

4º Adição e/ou Subtração;

Exemplos:

A ← B + C * C; => A = 1 + 16 * 16 => A = 1 + 256 => A = 257

A ← (B + C) * C; => A = (1 + 16) * 16 => A = 17 * 16 => A = 272

6.3.3 Operadores Relacionais

São utilizados para relacionar variáveis ou expressões, resultando num valor lógico (Verdadeiro ou

Falso), isso vai permitir a avaliação dos valores de variáveis ou expressões permitindo a execução de comandos específicos para determinados valores de variáveis, pois a variáveis representam instâncias do problema.

Operador Descrição

= Igual

<> (≠ ) Diferente

< Menor

> Maior

<= (≤) Menor ou Igual

>= (≥) Maior ou Igual

Alerta: O resultado de uma operação usando operadores relacionais só pode dar um dos valores: VERDADE ou FALSO, jamais dará outro valor.

21

Page 22: Logic a Deprogram a Cao

Exemplo: Suponha que A = 1 e B = 6

A > B => falso

A >= B => falso

A < B => verdade

A <= B => verdade

A = B => falso

Exercícios Propostos III

1. Dados os valores abaixo:

MEDIA NOTA TOTAL Z K X I J A

0 2 10 0 7 4 80 -1 -4

Quais os valores resultantes depois da execução dos passos a seguir:

01) X ← TOTAL/NOTA;

02) X ← X - X+1;

03) X ← X+8;

04) X ← X+X;

05) NOTA ← X;

06) TOTAL ← NOTA + X + TOTAL;

07) MEDIA ← J + K;

08) A ← A+K+4;

09) MEDIA ← 3;

10) I ← A div MEDIA;

11) I ← A mod MEDIA;

12) Z ← A/MEDIA;

13) K ← 2 + X * X –2;

14) J ← A – 15;

15) TOTAL ← MEDIA – A * NOTA;

16) A ← MEDIA;

17) MEDIA ← NOTA;

18) NOTA ← A;

19) I ← 20;

20) K ← I mod X;

21) Z ← J / 5;

22) K ← mod (I,5);

23) MEDIA ← NOTA div A;

24) I ← 0;

25) I ← I+2*A;

26) J ← Modulo (J);

22

Page 23: Logic a Deprogram a Cao

2. Quais os valores das seguintes operações:

• 31/4 • 31 div 4 • 31 mod 4 • 17 div 3

3. Quais os valores resultantes de cada linha do quadro abaixo:

A B C D CARRO NOME A+B*C>D CARRO=″Gol″ NOME<>″Maria″

1 2 3 4 ″Fusca″ ″Jose″

4 3 2 12 ″Uno″ ″Maria″

1 -7 -1 3 ″Vectra″ ″Marcos″

3 3 3 20 ″Gol″ ″Maria″

5 -1 5 0 ″Vectra″ ″Maria″

6.3.4 Operadores Lógicos

São utilizados para avaliar expressões lógicas.

Uma expressão lógica representa a união de operações relacionais permitindo que o resultado de várias expressões relacionais sejam transformado em um único resultado lógico.

Os operadores lógicos são vários, no entanto todos derivam de três operadores primitivos:

Operadores Lógicos

OU

E

NÃO

23

Page 24: Logic a Deprogram a Cao

Esses operadores obedecem as seguintes tabelas:

CON1 CON2 OU CON1 CON2 E CON1 NÃO

V V V V V V V F

V F V V F F F V

F V V F V F

F F F F F F

Os resultados das expressões seguem a seguintes regras:

1. operador e (conjunção) somente retornará o valor verdadeiro se todos as expressões relacionais também retornem valores verdadeiros, ou seja, basta que uma expressão relacional seja falsa para que o resultado geral da expressão também seja falso.

2. Já o operador ou (disjunção) somente retornará Falso caso todas as expressões relacionais também sejam Falsas, pois basta que uma expressão relacional seja Verdadeira para o resultado geral ser Verdadeiro.

3. E o operador de negação inverte o valor lógico de verdade para falso e de falso para verdade.

Quando ocorrer de numa mesma expressão lógica existir operadores de conjunção e disjunção, devemos resolvê-la da esquerda para a direita, respeitando o uso de parênteses e computar o resultado final

Expressões

As expressões podem ser de três tipos: Expressões aritméticas, relacionais e lógicas, isto é, usando os operadores descritos acima.

Ex.: suponha que X = 2; Y = 3; Z = 5.

Expressão aritmética: (X+2) mod Y => O resultado será um número, um valor.

Expressão Relacional: Y <= Z => O resultado será verdade ou falso.

Expressão Lógica : (Z<>X) E (Y=X) => O resultado será verdade ou falso.

24

Page 25: Logic a Deprogram a Cao

Prioridade de Operadores

1º Operações embutidas em parênteses “mais internos”;

2º Funções (Quociente, Resto, Potência e Funções Primitivas);

3º Multiplicação e/ou divisão;

4º Adição e/ou Subtração;

5º Operadores Relacionais;

6º Operadores Lógicos.

Exercícios Propostos IV

1. De acordo com os valores abaixo, de resposta das expressões, VERDADE ou FALSO:

NOME APELIDO X AUX RESP K J

″ANA″ ″FLOR″ ″ANA″ 10 F 3 2

a) NOME=APELIDO

b) (NOME=X) E (NOME<>″ANA″)

c) (NOME='NOME') E (X = ″ANA″)

d) ((K>=J+1) OU (X=″ANA″)) E (RESP)

e) (NAO RESP) E (RESP)

f) (NAO RESP) E (NAO RESP)

g) (J<=AUX/K + K) E (RESP OU NOME=″ANA″) E (AUX<=K * 2)

h) RESP OU RESP OU NAO RESP OU RESP OU RESP

i) NAO RESP E NAO RESP E NAO RESP E RESP E NAO RESP

j) ((NAO RESP E RESP) OU (NAO RESP)) E (RESP E (NAO RESP))

25

Page 26: Logic a Deprogram a Cao

6.4 Comandos de Entrada e Saída de Dados

6.4.1 Entrada de Dados

A execução da instrução de leitura pressupõe que os dados serão fornecidos do meio externo (teclado), e serão armazenados na memória (gavetas).

Uma vez na memória, podemos manipular estes dados conforme nossa necessidade.

Forma geral

Leia (variável1, variável2 . . . VariávelN);

Ou

Leia (variável1);

Leia (variável2);

..

Leia (variávelN);

Esse comando representa que variável_1, variável_2,... receberão valores do meio externo. É esse comando que vai permitir que um algoritmo possa resolver o mesmo problema com valores diferentes, pois uma vez feito o algoritmo ou programa , o mesmo pode ser executado com valores diferentes, os quais serão informados pelo meio externo.

Exemplo: Leia (NOME_PESS);

onde, NOME_PESS é o nome da variável que guardará o conteúdo que for digitado no teclado.

Exemplo:

INICIO

caracter: nome_pess;

leia (nome_pess);

FIM.

OBS: Vamos supor foi digitado no teclado o nome ″Jose Alves″, isto equivale ao seguinte comando: NOME_PESS ← ″Jose Alves″;

É importante perceber a diferença entre os dois comandos. O comando Leia faz com que a variável NOME_PESS receba um conjunto de caracteres do meio externo (teclado), enquanto o comando de atribuição faz a variável NOME_PESS receber um conjunto de caracteres num determinado instante do algoritmo.

26

Page 27: Logic a Deprogram a Cao

6.4.2 Saída de Dados

A execução do comando Escreva pressupõe que as informações estejam armazenadas na memória (gavetas) e serão colocadas disponíveis no meio externo (vídeo).

Forma Geral

Escreva (expressão1, expressão2, . . . expressãoN);

Ou

Escreva (expressão1);

Escreva (expressão2);

.

Escreva (expressãoN);

Esse comando representa o envio do conteúdo de expressão_1, expressão_2,... para o meio externo. Observe que os parâmetros do comando de saída de dados são expressões, indicando que podemos utilizar variáveis ou expressões envolvendo variáveis, onde, neste caso, o valor enviado será o resultado da expressão.

Obs: Textos também podem ser impressos no vídeo desde que estes estejam entre aspas duplas. O que tiver entre aspas será impresso na íntegra.

INICIO

caracter: nome_pess;

inteiro: idade;

leia (nome_pess, idade);

escreva (″Nome do aluno: ″, nome_pess);

escreva (″Idade: ″, idade);

FIM.

27

Page 28: Logic a Deprogram a Cao

Exercícios Resolvidos

1) Faça um algoritmo para ler dois números, somar estes números e imprimi-los.

INICIO

inteiro: num1, num2, soma;

leia (num1, num2);

soma ← num1 + num2;

escreva (″A soma dos números é: ″,soma);

FIM.

2) Faça um algoritmo que leia três números, calcule sua média e a imprima.

Opção 1

INICIO

real: a, b, c, soma, media;

leia (a, b, c);

soma ← a + b + c;

media ← soma/3;

escreva (″A media dos três números = ″ , media);

FIM.

Opção 2:

INICIO

real: a, b, c, media;

leia (a, b, c);

media ← (a + b + c )/3;

escreva (″A media dos três números = ″ , media);

FIM.

28

Page 29: Logic a Deprogram a Cao

3) Faça um algoritmo para calcular a área de um triângulo retângulo.

Sabe-se que a área do triângulo segue a fórmula: Área = Base * Altura

2

INICIO

real: area ,base, alt;

leia (base, alt);

area ← (base * alt)/2;

escreva (″Área do triângulo = ″, area);

FIM.

4) Imagine uma república que tenha como base os seguintes imposto para seus contribuintes assalariados:

• Desconta-se inicialmente 10% do salário bruto do trabalhador como contribuição da previdência social.

• Após este desconto existe outro de 30% sobre o valor restante, a título de imposto de renda.

Crie um algoritmo para ler o salário bruto de um cidadão e imprima o seu salário líquido.

INICIO

real: salbrut, salliq, desc1, desc2, subtot;

leia (salbrut);

desc1 ← salbrut * 0.1;

subtot ← salbrut – desc1;

desc2 ← subtot * 0.3;

salliq ← subtot – desc2;

escreva (″Salário do líquido do cidadão =″,salliq);

FIM.

29

Page 30: Logic a Deprogram a Cao

Exercícios Propostos V

1. Faça um algoritmo que leia um número qualquer e imprima o seu cubo.

2. Faça um algoritmo que leia um número qualquer e imprima a sua raiz quadrada.

3. Faça um algoritmo que leia um valor em graus Fharenheit e imprima o seu equivalente em graus Celcius.

C = (F – 32)*5/9

4. Faça um algoritmo para ler uma temperatura em graus Celsius e imprime o valor correspondente em graus Fahrenheit.

5. Faça um algoritmo para calcular o volume de uma esfera de raio R, onde R é o valor lido.

34 3rV π

=

6. Faça um algoritmo que leia a velocidade de um automóvel em km/h e imprima em m/s. Nota: 1 m/s equivale a 3,6 km/h.

7. Faça um algoritmo para ler o raio de um círculo, calcular e escrever a sua área.

8. Faça um algoritmo que a partir de um valor fornecido em real informe ao usuário o valor equivalente em dólar americano e em euro. A cotação do dólar e do euro deve ser fornecida pelo usuário.

9. Faça um algoritmo para ler o salário mensal e o percentual de reajuste. Calcular e escrever o valor do novo salário.

10. Faça um algoritmo para ler o número de votos brancos, nulos e válidos. Calcular e escrever o percentual que cada um representa em relação ao total de eleitores.

11. Suponha que você foi ao supermercado e comprou:

N latas de Nescau com custo unitário Q L litros de leite com custo unitário P B quilos de banana com custo unitário T

Faça um algoritmo que imprima: total gasto com cada produto e o total gasto no mercado.

30

Page 31: Logic a Deprogram a Cao

12. Uma sorveteria produz 3 tipos de picolés. O preço de cada um deles é: 0.5, 0.6 e 0.1, respectivamente. Sendo informado ao algoritmo a quantidade vendida do tipo 1, do tipo 2 e do tipo 3, gere o seguinte relatório:

a) o total arrecadado com os picolés do tipo 1, 2, 3. b) o total arrecadado pela sorveteria.

13. Faça um algoritmo que leia o número total de prestações de um consórcio, o total de prestações pagas e o valor atual da prestação. O algoritmo deve calcular e apresentar o saldo devedor atual e a quantidade de prestações sem pagar.

14. Faça um algoritmo que leia a matrícula do vendedor, seu salário fixo, o total de vendas por ele efetuada e o percentual que ganha sobre as vendas. Escreva o salário total do vendedor.

15. Faça um algoritmo que lê a matricula de um funcionário, número de horas trabalhadas, valor da hora trabalhada, número de filhos com idade menor que 14 anos e calcule o salário deste funcionário. Para cada filho menor, ele tem um acréscimo de R$ 30,00 no salário.

16. O governo acaba de liberar R$ 10.000.000 para construção de casas populares. Cada casa custa o equivalente a 150 salários mínimos. Faca um algoritmo que leia o valor do salário mínimo e calcule a quantidade de casas possíveis de se construir.

17. Faça um algoritmo que leia um valor em Real (R$) e calcule o menor número possível de notas de 50,00, 10,00, 5,00 e 1,00 real em que o valor lido pode ser decomposto. Escrever o valor lido e a relação de notas necessárias. Suponha que o sistema monetário não utiliza centavos.

Exemplo: Valor: R$ 347,00

Notas de R$ 50,00: 6 Notas de R$ 10,00: 4 Notas de R$ 5,00: 1 Notas de R$ 1,00: 2

18. Dada as seguintes entradas: km inicial, km final, litros consumidos, preço do litro de combustível. Faça um algoritmo que imprima o seguinte Relatório:

A distancia percorrida foi : ...... Valor total CR$ : ...... Km por litro : ......

31

Page 32: Logic a Deprogram a Cao

19. A turma C é composta de 60 alunos, e a turma D de 20 alunos. Faça um algoritmo que leia o percentual de alunos reprovados na turma C, o percentual de aprovados na turma D, calcule e imprima:

a) O número de alunos reprovados na turma C. b) O número de alunos reprovados na turma D.

20. Um motorista de táxi deseja calcular o rendimento de seu carro na praça. Sabendo-se que o preço do combustível é de R$ 2.20, faça um algoritmo para ler: a marcação do odômetro (Km) no início do dia, a marcação (Km) no final do dia, a quantidade de litros de combustível gasto e o valor total (R$) recebido dos passageiros. Calcular e escrever: a média do consumo em km/l e o lucro (líquido) do dia.

21. Uma loja vende bicicletas com um acréscimo de 50 % sobre o seu preço de custo. Ela paga a cada vendedor 2 salários mínimos mensais. Faça um algoritmo que leia o valor do salário mínimo, o preço de custo de uma bicicleta, o número de bicicletas vendidas e a quantidade de funcionários. Calcule e imprima o lucro (líquido) da loja.

22. A equipe Ferrari deseja calcular o número mínimo de litros que deverá colocar no tanque de seu carro para que ele possa percorrer um determinado número de voltas até o primeiro reabastecimento. Faça um algoritmo que leia o comprimento da pista (em km), a quantidade de voltas a serem percorridas no grande prêmio, o número de reabastecimentos desejados, e o consumo de combustível do carro (em km/l). Calcular e escrever o número mínimo de litros necessários para percorrer até o primeiro reabastecimento.

23. Faça um algoritmo que leia os preços de uma mercadoria em abril e maio. Tendo como base a variação dos preços desta mercadoria, calcule a taxa de inflação.

24. Faça um algoritmo que leia um valor inteiro positivo e menor que 1000, armazene numa variável inteira e imprima a soma dos dígitos que formam o valor.

Exemplo: 397 => soma=19

25. O custo ao consumidor de um carro novo é a soma do custo de fábrica com a percentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). Sabe-se que a percentagem do distribuidor é de 28% e os impostos de 45%, escrever um algoritmo que leia o custo de fábrica de um carro e escreva o custo ao consumidor. 26. Dados os comprimentos dos catetos de um triângulo retângulo nas variáveis LADO1 e LADO2, faça um algoritmo que calcule o valor da HIPOTENUSA.

27. Faça um algoritmo que leia o tempo de duração de um evento em uma fábrica expressa em segundos e mostre-o expresso em horas, minutos e segundos.

28. Faça um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano, P(x1,y1) e

32

Page 33: Logic a Deprogram a Cao

P(x2,y2), escreva a distância entre eles. A fórmula que efetua tal cálculo é:

29. Uma empresa de ferragens produz 3 tipos de peças mecânicas: parafusos, porcas e arruelas. Sabe-se que é dado um desconto de: 10% por porca vendida, 20% por arruela vendida e 30% por parafuso vendido. Dados de entrada: preço unitário da porca, arruela, parafuso; quantidade de porcas, arruelas e parafusos solicitados pelo cliente. Dados de saída: total pago pelas porcas, arruelas e parafusos; total de desconto dado ao cliente; total a ser pago pelo cliente. 30. Faça um algoritmo que leia dois valores, A e B, e os imprima ao contrario, isto é, se em A for lido 7, e em B 11, quando você for escrever A, será impresso 11 e quando escrever B será impresso 7. Neste algoritmo você só pode usar as variáveis A e B. Dica: operadores aritméticos resolvem este problema.

7. Comandos de Controle Para representar a solução de um problema devemos escrever o conjunto de passos a serem

seguidos.

De acordo com a Programação Estruturada os mecanismos utilizados para controle são: Seqüência, Seleção e Repetição.

7.1 Seqüência

Usada para executar comandos passo a passo, sabendo que todos eles serão executados na ordem de escrita sem nenhum desvio.

Uma seqüência pode possuir um ou vários comandos e esses comando são delimitados pelos identificadores início e fim.

Quando a seqüência possui apenas um único comando, o uso dos identificadores início e fim é opcional.

A utilização de recuo para direita facilitando a visualização dos comandos contidos na seqüência é bastante importante.

33

Page 34: Logic a Deprogram a Cao

Outro bom método para facilitar essa identificação é sublinhar os identificadores Início e Fim e traçar uma linha de um até o outro.

INICIO Comando_1; ... Comando_N; FIM

7.2 Seleção

Este é o comando usado para fazer comparações de tal forma que possamos simular uma decisão, no fluxo de nosso algoritmo.

Usada para tomar decisões, ou seja, desviar a execução do algoritmo de acordo com uma condição, podendo ser simples ou composta.

O comando de seleção é utilizado quando há a necessidade de avaliar certas possibilidades dos valores de variáveis e de acordo com o resultado dessa análise executar um conjunto específico de comandos.

A grande maioria dos problemas necessitará de seleções nas suas soluções.

7.2.1 Comando Se Então Senão

Simples Composta

Se (Expressão Lógica) Então

Seqüência

Fimse

Se (Expressão Lógica) Então

Sequência_1

Senão

Sequência_2

Fimse

As expressões lógicas são do tipo: A>B, A<B, (A=B) ou (B=C), A<>B. Sendo que este resultado só poderá ser: Verdadeiro ou Falso.

34

Page 35: Logic a Deprogram a Cao

O comando de seleção simples funciona da seguinte maneira:

1º A expressão lógica é resolvida;

2º Se o resultado da expressão for verdadeiro, então a Seqüência será executada;

3º Caso o resultado seja falso a Seqüência não será executada

O comando de seleção composta funciona da seguinte maneira:

1º A expressão lógica é resolvida;

2º Se o resultado da expressão for verdadeiro, então a Sequência_1 será executada;

3º Caso o resultado seja falso a Sequência_2 será executada

OBS: Quando existir apenas uma ação para ser resolvida pela seleção, então basta escrevê-la. Quando precisarmos colocar várias ações é necessário usar um bloco, delimitado por inicio e fim.

Exemplo: Faça um algoritmo que leia dois números quaisquer e imprima o maior deles.

INICIO

inteiro: num1, num2;

leia (num1, num2);

se (num1>num2) então

escreva (″O maior número é: ″,num1);

senão

escreva (″O maior número é: ″,num2);

fimse;

FIM.

Comandos de Seleção Aninhados

O comando de seleção possui uma seqüência (caso seja simples) ou duas (caso seja composto).

Uma seqüência é um conjunto de comandos, e um ou mais desses comandos, contidos na seqüência, pode ser outro comando de seleção, os quais também poderão possuir outros comandos de seleção e assim

35

Page 36: Logic a Deprogram a Cao

por diante. Isto é denominado de seleções aninhadas, ou seja, uma sucessão de seleções uma dentro da outra.

O uso de seleções aninhadas vai permitir a avaliação de diversas condições para os possíveis valores de um dado conjunto de variáveis e executar uma seqüência específica para esses valores, dentro de um conjunto de possíveis seqüências.

Exemplo: Faça um algoritmo que leia dois números quaisquer e imprima o maior deles. Informar caso eles sejam iguais.

INICIO inteiro: num1, num2; leia (num1, num2); se (num1>num2) então

escreva (″O maior número é: ″, num1); senão

se (num1<num2) então escreva (″O maior número é: ″, num2);

senão escreva (″Os números são iguais″);

fimse; fimse;

FIM.

Exemplo: Crie um algoritmo que leia do teclado um número N qualquer e imprima:

Faixa1, Se N <= 10; Faixa2, Se N > 10 E N <= 100; Faixa3, Se N > 100

INICIO inteiro: n; leia (n); se (n <= 10) então

escreva (n,″ está na faixa 1″); senão

se (n <= 100) então escreva (n,″ está na faixa 2″);

senão escreva (n,″ está na faixa 3″);

fimse; fimse;

FIM.

36

Page 37: Logic a Deprogram a Cao

Exemplo: Dados três valores X, Y, Z, verificar se eles podem ser os comprimentos dos lados de um triângulo eqüilátero, isósceles ou escaleno. Se eles não formarem um triângulo, escrever uma mensagem.

Obs:

1. O comprimento de cada lado de um triângulo é menor do que a soma dos comprimentos dos outros dois lados.

2. Chama-se triângulo eqüilátero ao triângulo que tem os comprimentos dos três lados iguais.

3. Chama-se triângulo isósceles o triângulo que tem os comprimentos de dois lados iguais. Portanto, todo triângulo eqüilátero também é isósceles.

4. Chama-se de triângulo escaleno ao triângulo que tem os três lados diferentes.

INICIO inteiro: x, y, z; leia (x, y, z); se (x < y + z) e (y < x + z) e (z < x + y) então

se (x = y) e (x = z) então escreva (″triângulo eqüilátero″);

senão se (x = y) ou (x = z) ou (y = z) então

escreva (″triângulo isósceles″); senão

escreva (″triângulo escaleno″); fimse;

fimse; senão

escreva (″não existe triângulo″); fimse;

FIM.

37

Page 38: Logic a Deprogram a Cao

Exemplo: Fazer um algoritmo que leia três valores inteiros, determinar e imprimir o menor deles.

INICIO inteiro: a, b, c, menor; leia (a, b, c); se (a < b) e (a < c) então

menor ← a; senão

se b < c então menor ← b;

senão menor ← c;

fimse; fimse; escreva (″O menor número é: ″, menor);

FIM.

7.2.2 Seleção de Múltipla Escolha

O comando ESCOLHA é uma aplicação especializada da estrutura SE ENTÃO SENÃO, que permite a seleção de um comando simples, a ser executado de um grupo de comandos. A variável testada deve ser de um tipo escalar. O valor da variável será comparado com cada valor constante da lista de casos, para verificar a correspondência. Se nenhuma correspondência for encontrada, a condição será indefinida, todos os comandos serão desconsiderados e a estrutura ESCOLHA finaliza.

Forma geral

ESCOLHA variável

caso v1: comando(s);

_

caso vn: comando(s);

caso contrario: comando(s);

FIMESCOLHA;

38

Page 39: Logic a Deprogram a Cao

Exemplo: Algoritmo para ler dois números A e B e a operação aritmética que deseja fazer com os dois números (+, -, *, /).

INICIO

real: a, b; caracter: operador; leia (a,b, operador); escolha (operador)

caso ″+″ : escreva (″resultado de ″, a, ″+″, b,″=″, a+b); caso ″-″ : escreva (″resultado de ″, a, ″-″, b,″=″, a-b); caso ″*″ : escreva (″resultado de ″, a, ″*″, b,″=″, a*b);

caso ″/″ : escreva (″resultado de ″, a, ″/″, b,″=″, a/b); caso contrario: escreva (″opção indefinida″); fimescolha

FIM.

Exercícios Propostos VI

1. Calcule a média aritmética das 3 notas de um aluno e mostre, além do valor da média, uma mensagem de "Aprovado", caso a média seja igual ou superior a 7 ou a mensagem de "Reprovado", caso a média seja menor que 7.

2. Elaborar um algoritmo que lê 2 valores A e B (inteiros) e informa se A é divisível por B ou não.

3. Faça um algoritmo que leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo.

4. Tendo como dados de entrada a altura e o sexo(1-feminino/2-masculino) de uma pessoa, construa um algoritmo que calcula e escreve seu peso ideal, utilizando as seguintes fórmulas:

para homens: (72.7*altura)-58 para mulheres: (62.1*altura)-44.7

5. Faça um algoritmo que leia o número da conta bancária, o saldo, o tipo de operação (1-depósito/2-retirada) e o valor da operação. O algoritmo deve calcular e mostrar o novo saldo. Mostrar uma mensagem caso o saldo fique negativo.

39

Page 40: Logic a Deprogram a Cao

6. Elabore um algoritmo que dada a idade de um nadador classifica-o em uma das seguintes categorias:

infantil A = 5 - 7 anos infantil B = 8-10 anos juvenil A = 11-13 anos juvenil B = 14-17 anos adulto = maiores de 18 anos

7. Considere definidas as seguintes faixas sobre os números inteiros: Faixa1 - até 100 Faixa2 - de 101 até 200 Faixa3 - de 201 até 300 Faixa4 - de 301 até 400 Faixa5 - de 401 até 500 Faixa6 - acima de 500

Faça um algoritmo que leia um inteiro N e imprima a faixa à qual ele pertence.

8. As maçãs custam R$ 0,30 cada uma, se forem compradas menos do que uma dúzia, e R$ 0,25 se forem compradas pelo menos doze. Faça um algoritmo que leia o número de maçãs compradas, calcule e escreva o valor total da compra.

9. Faça um algoritmo que verifique a validade de uma senha fornecida pelo usuário. A senha válida é o numero 12345. Devem ser impressas as seguintes mensagens:

• ACESSO PERMITIDO caso a senha seja válida. • ACESSO NEGADO caso a senha seja inválida.

10. Um hotel cobra R$ 50,00 reais a diária e mais uma taxa de serviços. A taxa de serviços é de:

2,50 por dia, se número de diárias <15 2,00 por dia, se número de diárias =15 1,50 por dia, se número de diárias >15

Faça um algoritmo que ler a quantidade de dias que o hospede ficou no hotel e imprime a taxa e total a pagar.

11. Elaborar um algoritmo que irá ler três números inteiros diferentes e informa qual é o maior valor.

12. Elaborar um algoritmo que irá ler quatro inteiros diferentes e informa qual é o menor valor.

40

Page 41: Logic a Deprogram a Cao

13. Um banco concederá um crédito especial aos seus clientes, variável com o saldo médio no último ano. Faça um algoritmo que leia o saldo médio de um cliente e calcule o valor do crédito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo médio e o valor do crédito.

Saldo médio Percentual

De 0 a 200 nenhum crédito

De 201 a 400 20% do valor do saldo médio

De 401 a 600 30% do valor do saldo médio

Acima de 601 40% do valor do saldo médio

14. Um vendedor precisa de um algoritmo que calcule o preço total devido por um cliente. O algoritmo deve ler o código de um produto e a quantidade comprada. Calcular o preço total, usando a tabela abaixo. Mostre uma mensagem no caso de código inválido.

Código Preço unitário

102 R$ 5,30

103 R$ 6,00

104 R$ 3,20

105 R$ 2,50

15. Uma empresa concederá um aumento de salário aos seus funcionários, variável de acordo com o cargo, conforme a tabela abaixo. Faça um algoritmo que leia o salário e o cargo de um funcionário(1-Gerente,2-Engenheiro,3-Técnico,4-Auxiliar) e calcule o novo salário. Se o cargo do funcionário for inválido deverá imprimir uma mensagem de erro. Como resultado mostre o salário antigo, o novo salário e a diferença.

Cargo Percentual

Gerente 10%

Engenheiro 20%

Técnico 30%

Auxiliar 40%

16. Escrever um algoritmo que lê a matrícula do aluno e suas 3 notas. Calcular a média e verificar qual o seu conceito, conforme a tabela:

Média Conceito>= 9,0 A >= 7,5 e < 9,0 B >= 6,0 e < 7,5 C >= 4,0 e < 6,0 D < 4,0 E

41

Page 42: Logic a Deprogram a Cao

O algoritmo deve escrever a matrícula do aluno, suas notas, a média, o conceito correspondente e a mensagem: APROVADO se o conceito for A,B ou C e REPROVADO se o conceito for D ou E.

17. Escrever um algoritmo que lê um conjunto de 4 valores I, A, B, C, onde I é um valor inteiro e positivo e A, B, C, são quaisquer valores reais e os escreva. A seguir:

a) Se I = 1 escrever os três valores A, B, C em ordem crescente. b) Se I = 2 escrever os três valores A, B, C em ordem decrescente.

18. São dados um número n e quatro outros a, b, c, d, correspondentes, respectivamente, às extremidades dos intervalos [a,b] e [c,d], sendo a < b, c < d e a < c. Determinar se n pertence somente ao intervalo [a,b] ou somente ao intervalo [c,d] ou, se n pertence a ambos ou se n não pertence a nenhum dos dois. Em cada caso escrever uma mensagem conveniente. 19. Uma empresa decidiu dar uma gratificação de Natal a seus funcionários, baseada no número de horas extras e no número de horas que o empregado faltou ao trabalho. O valor do prêmio é obtido pela consulta à tabela abaixo, em que H é o número de horas-extras subtraído de dois terços do número de horas-faltas.

H (horas) Prêmio (R$)

40 a 100 150,00

20 a 39 100,00

10 a 19 50,00

0 a 9 25,00

Dado o número de identificação do funcionário, o número de horas-extras e o número de horas-faltas, calcule o valor do prêmio do funcionário. Escreva o número do funcionário e o valor do prêmio.

20. Escrever um algoritmo que lê o número de um funcionário, o número de horas trabalhadas, o valor que recebe por hora, o número de filhos com idade inferior a 14 anos, a idade, o tempo de serviço do funcionário e o valor do salário família por filho. Calcular: salário bruto, o desconto do INSS (8,5% do salário bruto), salário família, IR, Adicional.

o IR (imposto de renda) é calculado como segue:

• Se salário bruto > 1500 então IR = 15% do salário bruto • Se salário bruto > 500 e salário bruto <= 1500 então IR = 8% do salário bruto • Se salário bruto <= 500 então IR = 0

o adicional é calculado conforme o especificado:

• Se tempo de serviço for até 5 anos o adicional é igual a 2% do salário bruto • Se tempo de serviço estiver entre 6 e 15 anos o adicional é igual a 3.5% do salário bruto. • Se tempo de serviço for maior que 15 anos então adicional é igual a 5.5% do salário bruto.

42

Page 43: Logic a Deprogram a Cao

Calcular o salário líquido do funcionário. Mostrar o número do funcionário, salário bruto, total dos descontos, adicional e salário líquido.

21. Faça um algoritmo para ler a base e a altura de um retângulo, a base e a altura de um triângulo e o raio de uma circunferência e mostrar qual a maior área. 22. Escrever um algoritmo que lê a hora de início e hora de término de um jogo, ambas subdivididas em dois valores distintos: horas e minutos. Calcular e escrever a duração do jogo, também em horas e minutos, considerando que o tempo máximo de duração de um jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte.

23. Faça um algoritmo para ler o peso de uma encomenda, tipo de entrega(1-sedex, 2-sedex 10) e região onde será entregue a encomenda(1- Norte, 2-Nordeste, 3-Centro-Oeste, 4-Sudeste, 5-Sul). Calcular o valor de postagem baseado nas tabelas abaixo:

Até 1 Kg R$ 5,00

De 1 Kg a 5 Kg R$ 10,00

Acima de 5 Kg R$ 15,00 + R$ 3,00 por Kg excedente

Para entrega por Sedex Adicionar R$ 9,00

Para entrega por Sedex 10 Adicionar R$ 11,00

Para entregar na região Norte Adicionar R$ 3,00

Para entregar na região Nordeste Adicionar R$ 2,00

Para entregar na região Centro-Oeste Adicionar R$ 6,00

Para entregar na região Sudeste Adicionar R$ 5,00

Para entregar na região Sul Adicionar R$ 7,00

7.3 Comandos de Repetição

Existem situações em que processar um valor uma única vez não satisfaz o problema, temos que trabalhar com a mesma informação várias vezes, no mesmo algoritmo.

Exemplo: Um clube tem anotado a quantidade de latas de cerveja vendidas no último carnaval. Sabendo que cada lata foi vendida a 1.40, faça um algoritmo para saber o total arrecadado, no último carnaval com latas de cerveja.

43

Page 44: Logic a Deprogram a Cao

INICIO inteiro: quant; real: valor_total; leia (quant); valor_total ← quant *1.40; escreva (valor_total);

FIM

Exemplo: Qual o valor arrecadado com latas de cerveja vendidas nos três últimos carnavais teríamos:

INICIO inteiro: quant1, quant2, quant3; real: valor_total; leia (quant1, quant2, quant3); valor_total ← (quant1 + quant2 + quant3) *1.40; escreva (″o total arrecadado nos últimos 3 anos =″, valor_total);

FIM.

As seleções serviam para tomar decisões permitindo executar uma seqüência específica.

Os comandos de repetição servem para indicar que uma seqüência deve ser executada várias vezes até que o resultado esperado seja obtido.

As estruturas de repetição utilizadas são: PARA, ENQUANTO e REPITA.

7.3.1 Para

O comando PARA é o mais simples dos comandos de repetição, ele permite que um bloco de comando seja repetido um número de vezes específico.

Forma geral

PARA variável_controle de valor_inicial ATÉ valor_final O PASSO valor_incremento FAÇA

Bloco de comando;

FIMPARA;

Onde:

• variável_controle é a variável que será incrementada ou decrementada a partir de um valor inicial previamente estabelecido.

44

Page 45: Logic a Deprogram a Cao

• valor_inicial primeiro valor que a variável_controle vai assumir.

• valor_final valor limite que variável_controle poderá assumir

• valor_incremento: define o acréscimo que a variável de controle irá sofrer depois de m execução da repetição. Opcional se o incremento for um (1).

Exemplo: Fazer um algoritmo para escrever de 1 até 10.

INÍCIO

inteiro: i; para i de 1 até 10 o passo 1 faça

escreva( i); fimpara;

FIM.

INÍCIO

inteiro: i; para i de 1 até 10 faça

escreva( i); fimpara;

FIM.

O valor da variável_controle não deve ser modificado por outros comandos dentro do bloco de comandos.

A estrutura PARA é, tipicamente, utilizada onde o número de repetições do bloco de comando seja estabelecido antes do algoritmo iniciar a execução do laço.

Exemplo: Calcule a média aritmética de uma turma de 50 alunos.

INICIO real: media_aluno, media_turma, cont; inteiro: j; cont ← 0; para j de 1 até 50 faça

leia (media_aluno); cont ← cont + media_aluno;

fimpara; media_turma ← cont / 50; escreva (″média da turma =″, media_turma);

FIM.

45

Page 46: Logic a Deprogram a Cao

Exemplo: Dado um número qualquer encontre o fatorial deste número.

INÍCIO

inteiro: numero, n, fat; leia (numero); fat ← 1; para n de 1 até numero faça

fat ← fat * n; fimpara; escreva (″o fatorial de″, numero, ″=″, fat);

FIM.

7.3.2 Enquanto

Comando que repete quantas vezes for necessário um bloco de comandos dentro do seu algoritmo.

Forma geral

ENQUANTO condição FAÇA comando1 . comandoN

FIMENQUANTO;

A estrutura de seleção ENQUANTO funciona da seguinte forma:

• É testada a condição, e desta só pode resultar dois valores possíveis: VERDADE ou FALSO.

• Se a condição for VERDADE o bloco de comando que está dentro do ENQUANTO é executado.

• Quando encontrado o FIMENQUANTO ele retorna para o ENQUANTO e testa novamente a condição.

• Se a condição for VERDADE ele executa novamente o bloco de comando que está dentro do ENQUANTO, até encontrar o FIMENQUANTO. Retorna novamente para testar a condição.

• Se a condição for FALSA ele executará a próxima instrução depois do FIMENQUANTO.

46

Page 47: Logic a Deprogram a Cao

Podemos concluir que, para sairmos do ENQUANTO, temos que tornar FALSO a condição.

Temos 4 maneiras de usar o ENQUANTO que são:

• Usando um Contador • Usando um FLAG • Lendo o número de vezes a ser executado • Usando um Tipo Lógico

Usando um Contador

Uma variável que conte quantas vezes o bloco de comando foi executado, e esta variável também fará parte da condição.

Assim, se quisermos executar o bloco três vezes, vamos contar cada execução do bloco e paramos quando esta variável contadora chegar a três.

Exemplo: Ler o saldo de quatro contas bancárias e escrever a sua situação: se está estourada (saldo menor que 0) ou normal.

INÍCIO inteiro: contador; real: saldo; contador ← 0; enquanto (contador < 4) faça

leia (saldo); se (saldo < 0) então

escreva (″conta estourada″); senão

escreva (″conta normal″); fimse contador ← contador + 1;

fimenquanto; FIM.

47

Page 48: Logic a Deprogram a Cao

Exemplo: Algoritmo que ler o salário dos empregados de uma empresa e calcula a média salarial desta empresa. Suponhamos que esta empresa possua apenas três empregados.

INICIO real: soma_salario, salario, media; inteiro: contador; soma_salario ← 0; contador ← 0; enquanto (contador < 3) faça

leia (salário); soma_salario ← soma_salario + salário;

contador ← contador + 1; fimenquanto; media ← soma_salario/3; escreva (″média dos salários = ″, media);

FIM.

Usando FLAG

Uma outra maneira de usar o ENQUANTO FAÇA seria usar um FLAG ou BANDEIRA.

FLAG é uma informação igual a que se está lendo, no entanto, não será processada, apenas terá como objetivo tornar a condição do ENQUANTO FAÇA, FALSO.

Em outras palavras, FLAG será uma informação a ser lida que tornará a condição do ENQUANTO FAÇA FALSO.

O FLAG deve ser um valor ABSURDO e que seja do mesmo tipo dos dados a serem lidos.

Exemplo: Suponha que os salários a serem lidos são: CR$ 1000, 3000, 2000. Assim, temos que ler, além dos dados que serão processados, um dado absurdo que terá como função parar de executar o ENQUANTO, isto é, sair do laço e prosseguir o fluxo do programa (próxima linha após o enquanto).

Qual o melhor FLAG neste caso?

48

Page 49: Logic a Deprogram a Cao

Exemplo: Algoritmo que ler o salário dos empregados de uma empresa e calcula a média salarial desta empresa.

INÍCIO real: soma_salario, salario, media; inteiro: cont; soma_salario ← 0; cont ← 0; leia (salário); enquanto (salario <> -1) faça

soma_salario ← soma_salario + salário; cont ← cont + 1; leia salário;

fimenquanto; media ← soma_salario / cont; escreva (″média dos salários = ″, media);

FIM.

OBS: Note que quando usamos um contador já sabemos o número fixo de dados que será digitado. Aqui não importa o número de dados que será digitada, o algoritmo chega ao fim quando for digitado o FLAG -1.

Este método é mais flexível que o anterior, pois, no outro devemos saber previamente o número de dados de entrada, enquanto que este não importa.

Se estivermos lendo várias idades, qual seria o melhor FLAG ?

Se estivermos lendo uma lista de nomes de pessoas, qual o melhor FLAG? ″fim″, ″flag″, ″xxx″ ou ″sair″

Deve ser qualquer conjunto de caractere que não venha a ser o nome de uma pessoa, que seja um absurdo e que seja do mesmo tipo.

Lendo o Número de Vezes a ser Executado

Uma outra maneira de se resolver o algoritmo anterior é ler a quantidade de dados que o usuário irá digitar. Muitas das vezes em que vai se entrar com os dados, já se sabe de antemão a quantidade. Assim, esta informação pode também ser um dado que o usuário do seu algoritmo pode nos fornecer.

Este método é uma variação do primeiro, pois usa também um contador, a vantagem está em tornar o algoritmo mais flexível. No primeiro método, o usuário entraria com um número de dados já

49

Page 50: Logic a Deprogram a Cao

previamente estabelecido, neste o usuário vai informar a quantidade de dados que ele digitará.

Exemplo: Algoritmo que ler o salário dos empregados de uma empresa e calcula a média salarial desta empresa.

INÍCIO real: soma_salario, salario, media; inteiro: contador, n; soma_salario ← 0; contador ← 0; leia (n); enquanto (contador < n) faça

leia (salário); soma_salario ← soma_salario + salário; contador ← contador + 1;

fimenquanto; media ← soma_salario/n; escreva (″média dos salários = ″, media);

FIM.

Ocorrem duas mudanças do primeiro para este. Foi colocado um comando de leitura, o qual, o usuário digitará o número de dados que será digitado. Assim, se o usuário tiver seis dados a serem digitados, ele digitará seis e o laço acontecerá seis vezes.

A segunda mudança ocorreu na condição do ENQUANTO, que antes era três passou agora para o valor que o usuário digitar (N). Então, a condição se tornará FALSO quando o contador chegar a N.

Usando um Tipo Lógico

O uso do tipo lógico como teste da condição do ENQUANTO tem aplicações específicas, no entanto isso não impede que ele seja usado a qualquer momento, só depende de quem for usar.

Qual a resposta que SEMPRE vai resultar do teste de uma condição? Existe um tipo que armazena somente VERDADE ou FALSO?

Então o que aconteceria se fosse declarado uma variável do tipo lógico e lhe fosse atribuída um valor verdadeiro e colocasse essa variável como condição?

50

Page 51: Logic a Deprogram a Cao

INICIO

lógico: teste; teste ← verdade; enquanto (teste) faça

escreva (″eterno″); fimenquanto;

FIM.

O que acontecerá é que o algoritmo entrará em laço e não sairá mais. Para sair do laço temos que tornar a variável teste FALSA, do contrário ele ficará escrevendo ETERNO eternamente.

7.3.3 Repita

É uma estrutura de repetição que tem por função repetir um determinado bloco de comandos até que a condição se torne verdadeira.

Forma geral

REPITA

bloco de comandos;

ATÉ (condição);

A diferença entre o REPITA e o ENQUANTO é que será executado a primeira vez o bloco de comandos sem verificar a condição. Assim, só depois do bloco ser executado uma vez é que a condição vai ser testada.

Note que, a condição deve se tornar VERDADE, isto é, ATÉ que a condição seja verdade. No ENQUANTO, a condição tinha que se tornar FALSO.

O funcionamento do REPITA é o seguinte: dado um fluxo de algoritmo ele vai executando linha a linha, quando encontra o REPITA ele segue em frente e executa o bloco de comandos dentro do REPITA, e então vai testar a condição, se a condição for VERDADE ele continua o fluxo do programa normalmente.

Caso a condição seja FALSA ele volta ao REPITA e executa novamente o bloco de comandos dentro do REPITA até chegar na condição, e repete o processo acima.

51

Page 52: Logic a Deprogram a Cao

A estrutura REPITA é usada para se fazer qualificação de entrada de dados via teclado, para garantir que os valores fiquem dentro de uma determinada faixa.

Exemplo: Suponha que queremos forçar o usuário a digitar um valor entre 6 e 16 e nenhum valor fora desta faixa seja aceita. Fazer um algoritmo para tal.

INÍCIO inteiro: valor; repita

leia (valor); até ((valor >= 6) e (valor <= 16)); escreva (″valor lido = ″,valor);

FIM.

Neste algoritmo enquanto não for digitado um valor que esteja entre 6 e 16 ele ficará pedindo para se digitar outro valor, continuando com algoritmo só depois de ser digitado um valor dentro da faixa especificada.

O comando REPITA é muito utilizado na construção de Menus, pois a primeira vez o bloco de comando deve ser executado sem que haja nenhum teste.

Exercícios Propostos VII

1. Uma empresa deseja aumentar seus preços em 20%. Faça um algoritmo que leia o código e o preço de custo de cada produto e calcule o preço novo. Calcule também, a média dos preços com e sem aumento. Mostre o código e o preço novo de cada produto e, no final, as médias. A quantidade de produtos é desconhecida. 2. Uma loja tem 150 clientes cadastrados e deseja mandar uma correspondência a cada um deles anunciando um bônus especial. Escreva um algoritmo que leia o nome do cliente e o valor das suas compras no ano passado e calcule um bônus de 10% se o valor das compras for menor que R$ 5000 e de 15 %, caso contrário. 3. Chico tem 1,50 metro e cresce 2 centímetros por ano, enquanto Zé tem 1,10 metro e cresce 3 centímetros por ano. Construa um algoritmo que calcule e imprima quantos anos serão necessários para que Zé seja maior que Chico.

52

Page 53: Logic a Deprogram a Cao

4. Escrever um algoritmo que leia 5 pares de valores, o primeiro valor é a matrícula do aluno, e o segundo a sua altura em centímetros. Encontre o aluno mais alto e o mais baixo. Mostre a matrícula do aluno mais alto e do mais baixo, junto com suas alturas.

5. Escrever um algoritmo que leia um conjunto de 50 informações contendo, cada uma delas, a altura e o sexo de uma pessoa (1- masculino/2- feminino), calcule e mostre o seguinte:

a) a maior e a menor altura da turma b) a média da altura das mulheres c) a média da altura da turma.

6. Faça um algoritmo que mostre os conceitos finais dos alunos de uma classe de 25 alunos, considerando:

a) os dados de cada aluno (matrícula e media final) serão fornecidos pelo usuário. b) a tabela de conceitos segue abaixo:

Nota Conceito de 0,0 a 4,9 D de 5,0 a 6,9 C de 7,0 a 8,9 B de 9,0 a 10,0 A

7. Foi feita uma pesquisa entre os habitantes de uma região. Foram coletados os dados de idade, sexo (M/F) e salário. Faça um algoritmo que informe:

a) a média de salário do grupo; b) maior e menor idade do grupo; c) quantidade de mulheres com salário até R$ 200.

A quantidade de pessoas pesquisadas é desconhecida.

8. O departamento de Turismo da Prefeitura de Aracaju tem anotado para suas 15 praias os seguintes dados: Nome da Praia, Distância do centro em Km, Número de veranistas da última temporada, Código do tipo de estrada de acesso: 0 - não asfaltada/1 - asfaltada Faça um algoritmo para descobrir:

• O número de praias que distam mais de 15 km do Centro; • O número de veranistas que freqüentam as praias cujo acesso não é asfaltado; • O percentual de veranistas que freqüentaram as praias que distam menos 15 Km do Centro;

53

Page 54: Logic a Deprogram a Cao

9 A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salário e número de filhos. A prefeitura deseja saber:

a) média do salário da população; b) média do número de filhos; c) maior e menor salário; d) percentual de pessoas com salário até R$ 500.

A quantidade de pessoas entrevistadas é desconhecida.

10. Elaborar um algoritmo para efetuar um diagnóstico. Considere que teremos 50 entradas de dados, onde em cada entrada tem-se: Nome do paciente

Código para infecção dos pulmões: 0 – Ausente/1 - Presente Código para temperatura: 0 – Normal/1 - Anormal Código para corisa: 0 – Ausente/1 - Presente Código para espirro: 0 – Ausente/1 - Presente

Diagnostico: • Se o paciente tiver infecção nos pulmões e temperatura anormal o diagnóstico é pneumonia. • Se o paciente tiver apenas um sintoma, qualquer deles, o diagnóstico é gripe. • Se o paciente tiver dois ou mais sintomas, que não sejam simultaneamente infecção nos pulmões e

temperatura anormal, o diagnóstico é resfriado. Deseja-se um relatório onde apareça o nome de cada paciente com o respectivo diagnóstico. 11. Com o advento dos notebooks no mercado nacional, um fabricante deseja obter determinadas informações dos seus possíveis consumidores. Será entrevistada uma quantidade indeterminada de empresas, lendo os seguintes dados:

Nome da empresa Preferência desejada (fabricante): 1. Toshiba/2. Compaq/3. IBM Possuem computadores de grande porte: 1. Sim/2. Não Necessitam de notebooks: 1. Sim/2. Não

Deseja-se saber: • A quantidade de empresas pesquisadas; • Quantas empresas possuem computadores de grande porte; • Percentual de empresa que necessitam de notebook; • Percentual de empresas que tem preferência pela Toshiba.

54

Page 55: Logic a Deprogram a Cao

12. Foi feita uma estatística nas 50 principais cidades brasileiras para coletar dados sobre acidentes de trânsito. Foram obtidos os seguintes dados:

• Código da cidade • Estado (RS, SC, PR, SP, RJ, ...) • Número de veículos de passeio (em 2002) • Número de acidentes de trânsito com vítimas (em 2002)

Deseja-se saber: a) qual o maior e o menor índice de acidentes de trânsito e a que cidades pertencem; b) qual a média de veículos nas cidades brasileiras; c) qual a média de acidentes com vítimas entre as cidades do Estado de Pernambuco.

13. Foi feita uma pesquisa entre os 1000 habitantes de uma região para coletar os seguintes dados: sexo (1-feminino/ 2-masculino), idade e altura. Faça um algoritmo que leia as informações coletadas e mostre as seguintes informações:

a) média da idade do grupo; b) média da altura das mulheres; c) média da idade dos homens; d) percentual de pessoas com idade entre 18 e 35 anos (inclusive).

14. Foi realizada uma pesquisa de algumas características físicas da população de uma certa região. Foram entrevistadas 500 pessoas e coletados os seguintes dados:

• Sexo: M (masculino) e F (feminino); • Cor dos olhos: A (azuis), V (verdes) e C (castanhos); • Cor dos cabelos: L (louros), C (castanhos) e P (pretos); • Idade

Deseja-se saber:

• a maior idade do grupo • a quantidade de indivíduos do sexo feminino, cuja idade está entre 18 e 35 anos e que tenham

olhos verdes e cabelos louros.

15. A Empresa Legal decidiu fazer um levantamento dos candidatos que se inscreveram para preenchimento de vaga no seu quadro de funcionários, utilizando processamento eletrônico e você foi contratado, então faça um algoritmo que:

55

Page 56: Logic a Deprogram a Cao

Leia um conjunto de informações para cada candidato, contendo: número de inscrição do candidato, idade, sexo, experiência anterior(1-sim/2-nao)

Calcule: • Quantidade de candidatos • Quantidade de candidatas • Média de idade dos homens com experiência • Percentagem dos homens com mais de 45 anos, entre os homens • Quantidade de mulheres com idade inferior a 35 anos e com experiência • Menor idade entre as mulheres que já tem experiência no serviço

A quantidade de candidatos é desconhecida.

16. Escrever um algoritmo que lê 5 valores e conta quantos destes valores são negativos, escrevendo esta informação.

17. Construir um algoritmo que calcule a média aritmética de vários valores inteiros positivos. A quantidade de números é desconhecida.

18. Escreva um algoritmo que calcule a média dos números digitados pelo usuário, apenas se eles forem pares. A quantidade de números é desconhecida.

19. Escrever um algoritmo que leia um número n que indica quantos valores devem ser lidos a seguir. Para cada número lido, mostre uma tabela contendo o valor lido e o fatorial deste valor.

20. Escrever um algoritmo que leia um número não determinado de valores e calcule a média aritmética dos valores lidos, a quantidade de valores positivos, a quantidade de valores negativos e o percentual de valores negativos e positivos. Mostre os resultados. A quantidade de números é desconhecida.

21. Escrever um algoritmo que lê um conjunto não determinado de valores, um de cada vez, e escreve o valor lido, seu quadrado, seu cubo e sua raiz quadrada. A quantidade de números é desconhecida.

22. Escrever um algoritmo que lê um número não determinado de valores para m, todos inteiros e positivos, um de cada vez. Se m for impar e menor do que 10 calcular e escrever o fatorial de m. Se m for impar e maior ou igual a 10 calcular e escrever a soma dos inteiros de 1 até m. A quantidade de números é desconhecida.

23. Faça um algoritmo que leia uma quantidade não determinada de números positivos. Calcule a

56

Page 57: Logic a Deprogram a Cao

quantidade de números pares e ímpares, a média de valores pares e a média geral dos números lidos. A quantidade de números é desconhecida.

24. Faça um algoritmo que leia vários números inteiros e calcule o somatório dos números negativos. A quantidade de números é desconhecida.

25. Faça um algoritmo que leia vários números inteiros e positivos e calcule o produto dos números pares. A quantidade de números é desconhecida.

26. Faça um algoritmo que escreva todos os números entre 1000 a 1999 que dividido por 11 dão resto igual a 5.

27. Escrever um algoritmo que calcule e mostre a média aritmética dos números lidos entre 13 e 73.

28. Escrever um algoritmo que gera e escreve os números ímpares entre 100 e 200.

29. Faça um algoritmo para imprimir os números pares de 1 a 100.

30. Escrever um algoritmo para ler dois números e imprimir os múltiplos de 3 e os múltiplos de 5 contidos entre estes dois números. 31. Escrever um algoritmo que leia uma quantidade desconhecida de números e conte quantos deles estão nos seguintes intervalos: [0.25], [26,50], [51,75] e [76,100]. 32. Escreva um algoritmo que leia 50 valores e encontre o maior e o menor deles. Mostre o resultado. 33. Escrever um algoritmo que leia 20 valores para uma variável N e, para cada um deles, calcule a tabuada de 1 até n. Mostre a tabuada na forma:

1 x n = n 2 x n = 2n n x n = n2

34. Escrever um algoritmo que lê um número não determinado de pares de valores M, N, todos inteiros e positivos, um par de cada vez, e calcula e escreve a soma dos n inteiros consecutivos a partir de M inclusive. Ex: M = 5 e N= 3 Soma = 5 + 6 + 7 35. Escrever um algoritmo que lê 10 valores, um de cada vez, e conta quantos deles estão no intervalo [10,20] e quantos deles estão fora do intervalo, escrevendo estas informações.

57

Page 58: Logic a Deprogram a Cao

36. Faça um algoritmo que leia dois números inteiros positivos com 5 dígitos cada e gere um terceiro número inteiro com 10 dígitos, sendo que estes sejam os dígitos dos dois primeiros intercalados.

Exemplo : Número_1 = 12345 Número_2 = 67890 Número_3 = 1627384950

37. Ler 50 notas e imprimir as três maiores. 38. Construa um algoritmo que imprima a série abaixo, onde o número de termos será lido. Observe que a série possui uma lógica na sua formação partindo dos três termos iniciais (2 - 7 - 3) e atente para o controle do número de termos impressos. Série = 2 - 7 - 3 - 3 - 14 - 5 - 4 - 21 - 7 - 5 - 28 - 9 - 6 - 35 - 11 - 7 - 42 - 13 - . . . 39. Faça um algoritmo para imprimir a série de Fibonacci = (0,1,1,2,3,5,8,13,21,34,…) enquanto o termo a ser impresso for menor que 5000. 8.Tipos de Dados Homogêneos

8.1 Vetor

Formado por um conjunto unidimensional de dados de mesmo tipo (Homogêneo) e possuindo número fixo de elementos (Estático).

Na declaração dos vetores devemos informar o seu nome, seu tipo (inteiro, real, caracter, ...), e seu tamanho (número de elementos). Cada elemento do vetor é identificado por um índice (unidimensional), o qual indica a sua posição no vetor.

Declaração: tipo nomedovetor = vetor [1.. numero de elementos] de tipo_do_vetor;

Ex: tipo NOME_TIPO_ALUNO = Vetor[1..100] de caracteres;

NOME_TIPO_ALUNO: NOME_ALUNO;

Referência : NomeDoVetor[índice]

Ex: NOME_ALUNO[3]

Quando você declara uma variável com os tipos primitivos, é alocado na memória, um espaço com o nome que você deu a esta variável. Na variável vetor, é criado na memória tantos espaços quanto forem

58

Page 59: Logic a Deprogram a Cao

o tamanho do Vetor, e cada um levará o mesmo nome, só que indexado. OBS: Os índices serão sempre do tipo inteiro.

Exemplo: Um dado é lançado 10 vezes, e a cada lançamento é anotado o resultado. Como entrada você terá o resultado de cada um dos 10 lançamentos. O algoritmo deve encontrar a média dos lançamentos, e contar quantos lançamentos estão acima da média dos lançamentos.

INICIO tipo Vlanc = vetor[1..10] de inteiro; Vlanc: lanc; inteiro: acima_media,soma_lanc,k; real: media; soma_lanc ← 0; acima_media ← 0; para k de 1 até 10 faça

leia (lanc[k]); soma_lanc ← soma_lanc + lanc[k];

fimpara; media ← soma_lanc/10; escreva (media); para k de 1 até 10 faça

se (lanc[k] > media) então acima_media ← acima_media+1;

fimse; fimpara; escreva (″lançamentos acima da média = ″,acima_media);

FIM

Sempre que se for estipular um valor final para o vetor é preciso colocar um valor que não cause um problema futuro. Deve-se tomar cuidado também em não exagerar, pois, como visto ocupa memória.

59

Page 60: Logic a Deprogram a Cao

Exemplo: Fazer um algoritmo que leia um conjunto de elementos e verificar se tem algum elemento repetido.

INICIO tipo vx = vetor[1..50] de inteiros; vx: x; inteiro: n, i, j; lógico: existe; leia(n); para i de 1 ate n faça

leia (x[i]); fimpara; existe ← F; para j de 1 até n-1 faça

para i de j+1 até n faça se (x[i] = x[j]) então

existe ← V; fimse;

fimpara; fimpara; se (existe = V) então escreva (″há valor repetido″); senão escreva (″não há valor repetido″); fimse;

FIM.

Exercícios Propostos VIII

Faça um algoritmo para:

1. Ler e armazenar um conjunto de 5 números inteiros.

2. Ler um conjunto de números e imprimi-los na ordem inversa da leitura. A quantidade de números também será lida e será no máximo 20.

3. Ler o tamanho e os elementos de dois vetores e em seguida, caso os vetores tenham o mesmo tamanho, gere e imprima um vetor SOMA, onde seus elementos serão formados pela soma dos elementos de mesmos índices dos dois vetores lidos.

60

Page 61: Logic a Deprogram a Cao

4. Ler um vetor de números e imprimir os números das posições PARES e em seguida os números das posições ÍMPARES.

5. Ler dois vetores e caso tenham tamanhos iguais armazene seus elementos alternadamente em um terceiro vetor.

6. Ler um vetor de números inteiros e imprimir as posições do maior e do menor elemento do vetor. Assuma que não existem elementos repetidos no vetor.

7. Ler um conjunto de matricula e notas dos alunos de uma turma e imprima a matricula dos alunos de tiveram nota acima da média das notas da turma.

8. Ler um vetor de números e inverter a ordem dos elementos desse vetor no próprio vetor.

9. Ler um vetor de números e em seguida ler um conjunto de números(flag=0) e para cada numero lido imprimir o número de ocorrências deste no vetor.

10. Ler um vetor de números e ler um conjunto de números (flag = 0) e para cada número lido imprimir se este existe ou não no vetor.

11. Ler dois vetores de números e gerar um terceiro vetor formado pela INTERSECÇÃO dos dois vetores lidos.

12. Ler dois vetores de números e gerar um terceiro vetor formado pela DIFERENÇA dos dois vetores lidos.

13. Ler dois vetores de números e gerar um terceiro vetor formado pela UNIÃO dos dois vetores lidos.

14. Ler um vetor e gerar um segundo vetor com os elementos do vetor lido menos os elementos repetidos. Ex : VetorLido = 5 1 2 7 5 3 7 5 9 3; VetorGerado = 5 1 2 7 3 9

15. Ler um vetor de números e imprimir os números que se repetem nesse vetor.

16. Ler dois vetores ordenados (ordem crescente) de números e gerar um terceiro vetor, também ordenado, com os elementos dos vetores lidos.

17. Faça um algoritmo para ler um conjunto N de números e imprimir cada elemento do conjunto e quantas vezes este se repete. O valor de N será lido. Ex:

Números Lidos 3 8 5 3 8 7 3 7 3 7

Resultado

3 - 4 8 - 2 5 - 1 7 – 3

61

Page 62: Logic a Deprogram a Cao

18. Faça um algoritmo para calcular o valor das mensalidades dos alunos. A escola possui 50 alunos e para cada um deles serão informados os seguintes dados: matricula, série(1-4), se tem irmão na escola (1-sim, 2-não). O valor da mensalidade será calculado pelo programa e depende da série do aluno e se tem irmão na escola. O aluno receberá 20% de desconto na mensalidade se tiver irmão na escola. Mensalidade: 1ª. Serie: R$110, 2ª. Serie: R$130, 3ª. Serie: R$160, 4ª. Serie: R$170. Armazenar os dados em vetores e imprimir os dados de todos os alunos em forma de tabela. 19. Fazer um algoritmo para cadastrar os produtos de uma farmácia usando vetores. Cada produto possui os seguintes dados: Código, Tipo (1-Genérico, 2- Não Genérico), Laboratório(1-Bayer, 2- LAFAPE, 3-Pfizer), Preço de Custo, Preço de Venda. O preço de venda é calculado pelo programa e depende do tipo do produto e do laboratório. O preço de venda será o preço de custo acrescido do percentual de lucro de acordo com a tabela abaixo:

Bayer LAFAPE Pfizer

Genérico 10% 15% 20%

Não Genérico 20% 35% 45%

A quantidade de produtos é desconhecida. Usar enquanto com flag (código =0). Imprimir todos os dados dos produtos da farmácia em forma de tabela. 20. A Secretaria de Educação quer um algoritmo para fazer um relatório sobre as escolas da cidade de Recife. Para cada escola são informados os seguintes dados: código da escola, total de alunos matriculados, total de professores, se possui laboratório de informática (1-sim ou 1-não), se possui laboratório de ciências (1-sim ou 2-não). A secretaria quer saber quanto deve ser liberado de verba para cada escola. O calculo será feito da seguinte forma:

• Para cada aluno da escola são liberados: R$ 50 • Para cada professor são liberados: R$ 400 • Se a Escola não tem laboratório de Informática são liberados: R$ 10.000 • Se a Escola não tem laboratório de Ciências são liberados: R$ 7.000

Ex: uma escola com 200 alunos, com 15 professores e tem laboratório de informática, mas não tem laboratório de ciências: Verba = 200 x 50 + 400 x 15 + 7000= 10000 + 6000 + 7000 = 23.000 Imprimir um relatório contendo todos os dados das escolas e o valor que cada uma receberá da secretária de educação. Também deve ser impresso o seguinte relatório:

62

Page 63: Logic a Deprogram a Cao

• Quantidade Total de Alunos nas Escolas • Quantidade de escolas sem laboratórios de Informática • Quantidade de escolas com os dois laboratórios (informática E de ciências) • Total de verba liberada pela secretaria

OBS: A quantidade de escola é desconhecida.

21. Fazer um algoritmo para a companhia de energia elétrica da cidade. Para cada consumidor são fornecidos os seguintes dados: matrícula do consumidor, tipo do consumidor (1-comercial, 2-industrial, 3-residencial), quantidade de KWh consumidos no mês. O algoritmo irá calcular o valor da conta. O algoritmo irá ler uma quantidade de consumidores e armazenará os dados dos consumidores em vetores. Imprimir um relatório contendo os dados do consumidor e o valor que o mesmo deve pagar e no final, imprimir o relatório estatístico:

• Total a ser arrecadado pela empresa de energia; • Media de consumo das industrias; • Total de consumo das residências; • Quantidade de estabelecimentos comerciais

OBS: Valor de 1 KWh • Residência: R$ 5,00 • Comércio: R$ 3,00 • Indústria: R$ 2,00

22. Fazer um algoritmo para um hotel que possui vinte quarto, quinze tipo Standard e cinco tipo Luxo. Para cada hóspede serão lidos os seguintes dados: Código, Região de Origem (1-Nordeste, 2-Sudeste, 3-Sul, 4-Outros), Motivo da Viagem (1-lazer, 2-trabalho, 3-outros), Sexo, Tipo de Quarto Desejado(1-Standard, 2-Luxo) e Quantidade de dias. O programa irá calcular o valor pago pelo hospede. A quantidade de hospede é desconhecida. No final deve ser impresso o relatório com os dados de todos os hóspedes, além do relatório estatístico. O cálculo do valor a ser pago pelo hóspede segue as regras abaixo:

• Se o quarto for do tipo 1, a diária custa R$ 100,00. • Se o quarto for do tipo 2 a diária custa R$ 130,00.

• Relatório Final: o Quantidade de homens em quarto de luxo o Percentual de homens que viajam a trabalho o Quantidade de mulheres provenientes da região Sudeste o Total arrecadado pelo hotel

63

Page 64: Logic a Deprogram a Cao

23. Faça um algoritmo para ler 10 números inteiros, armazenando-os em um vetor. Imprimir os valores digitados e os seguintes resultados:

o A soma dos elementos das posições pares o O produto dos elementos das posições impares o O quadrado do terceiro elemento o A diferença do sexto elemento pelo primeiro elemento o O maior valor do vetor

8.2 Matrizes

O raciocínio é a mesmo de vetores, ao invés de trabalharmos com um índice trabalharemos com dois.

Declaração: tipo nome_tipo_matriz = matriz [1.. linhas, 1..colunas] de tipo_da_matriz;

Ex: tipo TM = matriz[1..3,1..2] de inteiros;

TM: M;

Referência : NomeDaMatriz[linha, coluna]

Se quisermos atribuir o valor 9, na linha 1, coluna 2, então: M[1,2] ← 9;

Exemplo: Crie um algoritmo que leia uma matriz 3x4 e imprima a soma dos elementos da linha 2.

INICIO tipo tm =matriz[1..3,1..4] de inteiros; tm: m; inteiro: i, j, soma; para i de 1 até 3 faça

para j de 1 até 4 faça leia (m[i, j]);

fimpara; fimpara; soma ← 0; para i de 1 até 4 faça

soma ← soma + m[2,i]; fimpara; escreva (″soma =″, soma);

FIM.

64

Page 65: Logic a Deprogram a Cao

Na leitura da matriz tivemos que colocar um PARA dentro do outro, pois temos dois índices, um para correr a linha (o de fora) e o outro para correr a coluna (o de dentro).

Exercícios Propostos IX

Faça um algoritmo para:

1. Ler uma matriz de ordem MxN, onde M e N serão informados pelo usuário e em seguida imprima esta matriz.

2. Ler uma matriz e caso seja uma matriz quadrada imprimir os elementos da diagonal principal.

3. Ler uma matriz e inverter as suas linhas. Ex a última será a primeira, a primeira a última e assim por diante.

4. Ler duas matrizes e caso tenham a mesma ordem gerar uma terceira formada pela soma das matrizes lidas.

5. Ler uma matriz e dividir cada elemento de uma linha pelo elemento da diagonal principal dessa linha.

6. Ler uma matriz e imprimir os elementos abaixo da diagonal principal.

7. Ler uma matriz e imprimir os elementos acima da diagonal principal e a própria diagonal principal.

8. Ler uma matriz e imprimir para cada linha a soma de seus elementos.

9. Ler 3 notas de um conjunto de 60 alunos de uma turma armazenado-os numa matriz, onde os números das linhas representam os números dos alunos e cada coluna uma unidade. E imprima o número de cada aluno com sua respectiva média, a média geral de cada período e a média geral da turma. Ex:

1°P 2°P 3°P 1 6,0 7,0 4,0 2 4,5 9,5 5,0 3 0,0 0,0 0,0 . . .

.

.

.

.

.

.

.

.

. 60 8,5 6,0 4,5

9. Tipos de Dados Heterogêneos

Já sabemos que um conjunto homogêneo de dados é composto por variáveis do mesmo tipo

primitivo; porém, se tivéssemos um conjunto em que os elementos não são do mesmo tipo, teríamos então

um conjunto heterogêneo de dados.

65

Page 66: Logic a Deprogram a Cao

9.1 Registro

Uma das principais estruturas de dados é o registro. Para exemplificar, imagine uma passagem de

ônibus, que é formada por um conjunto de informações logicamente relacionadas, porém de tipos

diferentes, tais como: número da passagem (inteiro), origem e destino (caracter), data (caracter), horário

(caracter), poltrona (inteiro), distância (real), fumante (lógico), que são subdivisões (elementos de conjunto)

do registro, também chamadas de campos. Logo, um registro é composto por campos que são partes que

especificam cada uma das informações.

Número:___________ Fumante:____________ De:__________________________________ Para:__________________________ Data: ____ / _____ / ______ Horário: ______ : ______ Poltrona:________________ Distância:______________________

Declaração

tipo identificador = registro

tipo: campo1;

tipo: campo2;

... tipo: campon;

fimregistro;

identificador : nomevariavel;

Onde:

Identificador : representa o nome associado ao tipo registro construído.

Campo1, campo2, campoN: são os nomes associados a cada campo do registro.

Da mesma forma que na declaração de vetores e matrizes, primeiramente devemos criar um tipo, para

então declararmos as variáveis desse tipo.

66

Page 67: Logic a Deprogram a Cao

Exemplo: declarar um registro para uma passaguem e fazer a leitura dos campos.

INICIO tipo regpassagem = registro inteiro: número, poltrona ; caracter: origem, destino, data, horário; real: distância; logico: fumante; fimregistro; regpassagem: passagem; leia(passagem.número, passagem.poltrona); leia(passagem.origem, passagem.destino); leia(passagem.data, passagem.horário); leia(passagem.distância, passagem.fumante); escreva(passagem.número, passagem.poltrona); escreva(passagem.origem, passagem.destino); escreva(passagem.data, passagem.horário); escreva(passagem.distância, passagem.fumante);

FIM.

9.2 Vetor de Registro

Nas estruturas compostas heterogêneas (vetores e matrizes) utilizamos tipos de dados primitivos

como sendo os elementos dessas estruturas. Agora utilizaremos como componente dessa estrutura não

apenas um tipo primitivo, mas sim os tipos construídos, neste caso os registros. Supondo que quiséssemos

manter um registro de informações relativas a passagens rodoviárias de todos lugares de um ônibus,

utilizaríamos um registro diferente para cada poltrona, e para agrupar todos eles utilizaríamos um conjunto

desses registros.

Como possuímos 44 lugares num ônibus, numerados seqüencialmente de 1 até 44, podemos, para

uni-los, criar um vetor no qual cada posição é um elemento de tipo construído registro (passagem).

Como possuímos um vetor composto por registros, não podemos declarar esse vetor sem antes ter

declarado seus elementos; devemos então declarar primeiro o tipo construído registro e depois o vetor.

67

Page 68: Logic a Deprogram a Cao

Exemplo: Declarar um vetor de registro e ler as informações.

INICIO tipo regpassagem = registro inteiro: número, poltrona ; caracter: origem, destino, data, horário; real: distância; logico: fumante; fimregistro;

vetpassagem = vetor [1 .. 44] de regpassagem; vetpassagem: vp; inteiro i; para i de 1 ate 44 faca leia (vp[i].número); leia (vp[i].poltrona); leia (vp[i].origem); leia (vp[i].destino); leia (vp[i].data); leia (vp[i].horario); leia (vp[i].distancia); leia (vp[i].fumante); fimpara; FIM.

Exercícios Propostos X

1. Uma determinada biblioteca possui obras de ciências exatas, ciências humanas e ciências biomédicas,

totalizando 1.500 volumes, sendo 500 volumes de cada área. O proprietário resolveu informatizá-la e para

tal agrupou as informações sobre cada livro do seguinte modo:

Código de Catalogação:_____________________________ Doado:__________

Nome da Obra:_____________________________________________________

Nome do Autor:_____________________________________________________

Editora:____________________________ No de páginas:___________________

68

Page 69: Logic a Deprogram a Cao

a)Construir um algoritmo que declare tal estrutura e que reuna todas as informações de todas as obras

em três volumes distintos para cada área.

b) Elabore um trecho de algoritmo que, utilizando como premissa o que foi feito no item a, faça uma

consulta às informações. O usuário fornecerá código da obra e sua área: existindo tal livro, informa

seus campos; do contrário; envia mensagem de aviso. A consulta se repete até que o usuário

introduza como código finalizador o número -1.

c) Idem ao item b, porém o usuário só informa o nome e a área do livro que deseja consultar.

d) Escreva um trecho de algoritmo que liste todas as obras de cada área que representam livros doados.

2. Fazer um algoritmo para corrigir provas de múltipla escolha. Cada prova tem 10 questões e cada questão

vale 1 ponto. O primeiro conjunto de dados a ser lido será o gabarito para a correção da prova. Os outros

dados serão os números dos alunos e suas respectivas respostas. A turma possui 30 alunos. O algoritmo

deverá calcular e imprimir:

a) para cada aluno, o seu número e nota;

b) a porcentagem de aprovação, sabendo-se que a nota mínima de aprovação é 7,0;

c) a nota que teve maior freqüencia absoluta, ou seja, a nota que apareceu maior número de vezes.

10. Modularização

Ao desenvolvermos um algoritmo, muitas vezes precisamos utilizar uma pequena rotina

repetidamente em mais de um local do mesmo algoritmo, quando fazemos isso, estamos ocupando mais

espaço de memória, aumentando a complexidade do algoritmo, aumentando o tamanho do programa. Para

evitar tudo isso, podemos modularizar o programa, isto é, criar procedimentos e funções (módulos) uma

vez apenas, e chamá-los repetidamente de várias partes do programa, por um nome que os identifica.

Aqui aplicamos efetivamente o termo “Dividir para Conquistar”, quando nos depararmos com um

problema, e formos resolvê-lo por meio de algoritmos, devemos dividi-lo em vários problemas menores, se

necessário, dividimos novamente em vários outros problemas menores, resolvendo estes problemas

estaremos conseqüentemente resolvendo nosso problema inicial. Como exemplo, faremos um algoritmo

que imprima o extenso do número 1 ou 2.

69

Page 70: Logic a Deprogram a Cao

INICIO inteiro: num; modulo mostre_um; escreva(″um″); fimmodulo; modulo mostre_dois; escreva(″dois″); fimmodulo; repita leia(num); se num = 1 então mostre_um; senao se num = 2 então mostre_dois; fimse; fimse; até num > = 2; FIM.

O que acontece neste algoritmo é o seguinte, os blocos que começam com a palavra módulo, são

módulos que somente serão executados se chamados do principal ou outro módulos do algoritmo. Sendo

assim o primeiro comando a ser executado é o comando leia, dentro da estrutura de repetição Repita, que

irá conhecer o valor da variável num, o valor da variável é então testado, se for igual a 1 o módulo

mostra_um é chamado, quando isto acontece os comandos que estão contidos dentro do módulo sao

executados. Quando a ultima linha do módulo é executada e encontra-se o comando fimmodulo, a

execução do algoritmo volta exatamente ao comando após a chamada do módulo, neste caso, após a linha

mostra_um ou mostra_dois, é executado o teste da estrutura de repetição, se num for maior que 2 o

algoritmo é encerrado, caso contrário, o algoritmo é executado novamente a partir do comando leia.

10.1 Escopo de Variáveis

Escopo de variáveis seria o mesmo que domínio sobre variáveis. Quando uma variável é declarada

no início do algoritmo, dizemos que ela é global, isto é, todos os módulos do algoritmo reconhecem esta

variável. Quando uma variável é declarada dentro de um módulo, dizemos que ela é local, isto é, somente

70

Page 71: Logic a Deprogram a Cao

este módulo reconhece a variável. Variáveis declaradas no cabeçalho do módulo (parâmetros), são variáveis

locais deste módulo.

10.2 Parâmetros

Agora imagine se pudéssemos mandar mensagens aos módulos, isto é, se pudéssemos passar

parâmetros aos módulos, desta forma eles ganhariam muito mais poder e generalização. Vamos usar o

exemplo anterior e ver como podemos diminuir o número de módulos.

INICIO inteiro: num; modulo mostre_num(inteiro: numero); escolha numero caso 1: escreva(″um″); caso 2: escreva(″dois″); fimescolha; fimmodulo; repita leia(num); mostre_num(num); até num > = 2; FIM.

Observe como nosso algoritmo ficou menor e mais legível, conseguimos isto com a passagem de parâmetros para o módulo.

Exercícios Propostos XI

1. Faça um algoritmo para uma escola usando módulos e vetor de registro. O algoritmo deverá ter as seguintes funções:

modulo Principal modulo de Cadastro Modulo de Listagem Faculdade Santa Maria Opções:

1-Inserir novo aluno 2-Listagem de aluno 3-Relatório estatístico 0-Sair

Entre com a opção:

Faculdade Santa Maria Inserir Novo Aluno Matricula: Nota 1: Nota 2: Inserir outro(1-sim,2-não)?

Faculdade Santa Maria Listagem Geral Mat Nota 1 Nota 2 Media xxx xxxx xxxx xxx tecle enter para voltar para o menu

71

Page 72: Logic a Deprogram a Cao

modulo do Relatório Estatístico Faculdade Santa Maria Relatório Estatístico Total de Alunos: Media da Turma: Quantidade de Aprovados: Quantidade de Reprovados: tecle enter para voltar para o menu

72