Anda di halaman 1dari 72

Lgica de Programao e Algoritmos Snia Virginia Alves Frana

2006

ndice
1. Introduo........................................................................................................................................4 2. Lgica ..............................................................................................................................................4 2.1 Raciocnio Lgico .......................................................................................................................5 2.2 Automao ..................................................................................................................................5 Exerccios Propostos I.........................................................................................................................6 3. Linguagem.......................................................................................................................................8 4. Programao....................................................................................................................................8 5. Algoritmo .........................................................................................................................................9 5.1 Definio de Algoritmo............................................................................................................. 10 5.2 Linguagem de Descrio de Algoritmo (LDA)........................................................................ 11 6. Tcnicas Bsicas............................................................................................................................ 15 6.1 Tipos de dados primitivos ........................................................................................................ 15 6.2 Variveis.................................................................................................................................... 16 6.2.1 Identificadores .................................................................................................................... 16 6.2.2 Declarao de Variveis...................................................................................................... 17 6.3 Operaes Bsicas.................................................................................................................... 18 6.3.1 Atribuio............................................................................................................................ 18 Exerccios Propostos II ..................................................................................................................... 19 6.3.2 Operadores Aritmticos......................................................................................................20 6.3.3 Operadores Relacionais...................................................................................................... 21 Exerccios Propostos III ...................................................................................................................22 6.3.4 Operadores Lgicos............................................................................................................23 Exerccios Propostos IV ....................................................................................................................25 6.4 Comandos de Entrada e Sada de Dados .................................................................................26 6.4.1 Entrada de Dados ...............................................................................................................26 6.4.2 Sada de Dados ...................................................................................................................27 Exerccios Propostos V .....................................................................................................................30 7. Comandos de Controle ..................................................................................................................33 7.1 Seqncia ..................................................................................................................................33 7.2 Seleo ......................................................................................................................................34 7.2.1 Comando Se Ento Seno...................................................................................................34 7.2.2 Seleo de Mltipla Escolha...............................................................................................38 Exerccios Propostos VI ....................................................................................................................39 7.3 Comandos de Repetio...........................................................................................................43 7.3.1 Para .....................................................................................................................................44
2

7.3.2 Enquanto ............................................................................................................................46 7.3.3 Repita.................................................................................................................................. 51 Exerccios Propostos VII ..................................................................................................................52 8.Tipos de Dados Homogneos........................................................................................................58 8.1 Vetor ..........................................................................................................................................58 Exerccios Propostos VIII .................................................................................................................60 8.2 Matrizes ....................................................................................................................................64 Exerccios Propostos IX....................................................................................................................65 9. Tipos de Dados Heterogneos......................................................................................................65 9.1 Registro .....................................................................................................................................66 9.2 Vetor de Registro ......................................................................................................................67 Exerccios Propostos X .....................................................................................................................68 10. Modularizao..............................................................................................................................69 10.1 Escopo de Variveis ................................................................................................................70 10.2 Parmetros .............................................................................................................................. 71 Exerccios Propostos XI.................................................................................................................... 71

1. Introduo
O objetivo principal da Lgica de Programao demonstrar tcnicas para resoluo de problemas e conseqentemente automatizao de tarefas. O aprendizado da Lgica essencial para formao de um bom programador, servindo como base para o aprendizado de todas as linguagens de programao, estruturadas ou no. De um modo geral esses conhecimentos sero de muita importncia, pois ajudaro no cotidiano, desenvolvendo um raciocnio rpido.

2. Lgica
Pode-se dizer que a lgica a arte de pensar corretamente, e visto que a forma mais complexa do pensamento o raciocnio, a lgica estuda ou tem em vista a correo do raciocnio. Segundo o dicionrio Aurlio, lgica significa coerncia de raciocnio, de idias. Modo de raciocinar peculiar a algum, ou a um grupo. Seqncia coerente, regular e necessria de acontecimentos, de coisas. Exemplo: Todo mamfero animal. Todo cavalo mamfero. Portanto, todo cavalo animal.

Existe Lgica no dia-a-dia??? Sempre que pensamos ou falamos a lgica 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 trs pessoas. Nenhum de ns dois quebrou o vaso. Quem quebrou o vaso?

Vamos criar uma situao!!! 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 lgica a seqncia detalhada e clara do fato.
4

2.1 Raciocnio Lgico


Resolvam a seguinte questo: Existe um rio a ser atravessado por trs pessoas que pesam 50, 50 e 100 Kg. Para atravessar este rio, as trs pessoas dispem de uma canoa que leva no mximo 100 Kg por viagem. Esta canoa tem que ser conduzida, isto , ela no anda sozinha. Como estas pessoas chegam no outro lado da margem?
Margem A 50, 50, 100 100 50, 100 50 50, 50 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~~ ~ ~ ~ ~ ~~~ ~ ~ ~~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
RIO

Margem B

50, 50 50 50, 100 100 100, 50, 50

Depois de resolver este problema ou algum lhe mostrar a soluo, voc ser capaz de resolver problemas semelhantes a este ou outros do gnero e at mais complexos. Esta uma forma de despertar o Raciocnio Lgico. Assim, como voc seguiu uma lgica para resolver o exemplo, ter que seguir a mesma seqncia nos problemas oferecidos, s que voltada para o computador, obedecendo a regras de uma determinada linguagem especial.

2.2 Automao
A automatizao de tarefas um aspecto marcante da sociedade moderna. Computador: Hardware e Software (elementos que controlam a execuo automtica de uma dada tarefa). Algoritmo: descrio da execuo de uma tarefa. Para que um computador resolva um problema necessrio que um ser humano construa um esquema para a soluo do problema, onde a construo desse esquema normalmente requer as seguintes etapas: 1. Entendimento do problema; 2. Criao de uma seqncia de operaes (ou aes) que, quando executadas, produzem a soluo para o problema; 3. Execuo desta seqncia de operaes. As etapas de entendimento do problema e criao de seqncia de aes para obter resultados desejados so tarefas realizadas por seres humanos. A execuo das operaes pode ser desempenhada por computadores: rapidez e confiabilidade.

Exerccios Propostos I
Aqui voc encontra alguns passatempos, envolvendo raciocnio lgico e matemtico. 1. Se um tijolo pesa um quilo mais meio tijolo, quanto pesa um tijolo e meio? 2. Trs garotos querem atravessar um rio. O barco que possuem tem capacidade mxima de 150 quilos. Eles pesam 50, 75 e 120 quilos. Como podem atravessar, sem afundar o barco? 3. Carla, Selma e Mara esto 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 posio 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 Csar, no 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 Csar o Vectra; o carro de Bernardo no verde e no o Palio. Quais as cores do Palio, do Gol e do Vectra? 6. Certa noite Pedrinho resolveu ir ao cinema, mas descobriu que no tinha meias limpas para calar. Foi ento ao quarto do pai, que estava na escurido. 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 possua um par igual? 7. A banda U2 tem um concerto que comea daqui a 17 minutos e todos precisam cruzar a ponte para chegar l. Todos os 4 participantes esto 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 mo. A lanterna deve ser levada de um lado para o outro e no 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 o o o

Bono: 1 minuto para passar Edge: 2 minutos para passar Adam: 5 minutos para passar 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 tero passados e voc falhou no teste.
6

8. Dada a srie de nmeros : 1, 1, 2, 3, 5, 8, 13, qual o prximo ? 9. Um pai preocupado com a sade de seus filhos quer que eles comam mas, mas no sabe fazer a distribuio. Se der 5 mas para cada filho, vo lhe sobrar quatro, se der 6, vai faltar uma. Quantos filhos e quantas mas ele tem? 10. Daniela mais jovem do que Adriano. Carlos mais velho do que Daniela. Qual dessas concluses verdadeira? Adriano mais velho do que Carlos. Carlos mais velho do que Adriano. Daniela a mais jovem dos trs.

11. Distribua os nmeros de 1 a 9 nos crculos abaixo, de modo que a soma das linhas seja sempre 10.

12. Oito pessoas de uma s famlia esto sentadas em volta de uma mesa redonda. Seu Daniel o chefe da famlia, casado com dona Marina, tima cozinheira, principalmente aos domingos, quando toda a famlia vem almoar. Eles tm 3 filhos : Claudinho, que casado com Doroti; Lusa, que solteira e estuda nos Estados Unidos; e Jlio, que vivo. A filha de Claudinho e Doroti chama-se Snia e sempre se senta entre os dois. Os filhos de Jlio chamam-se Pedro e Paulo, sempre esto brigando, e a av no permite que se sentem juntos. Jlio sempre coloca os cotovelos na mesa e isso irrita Doroti, que sempre fica longe dele. Jlio 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 almoo foi servido e nunca fica contente com o lugar que sobrou para ele. Em que lugares esto sentadas todas as pessoas em volta da mesa ?

3. Linguagem
Linguagem vocabulrio, palavreado, usados como meio de expresso e de comunicao entre as pessoas. Toda linguagem possui inmeras regras. O computador tem suas linguagens. O primeiro passo aprender lgica, isto , aprender a lgica computacional, depois adapt-la numa linguagem que o computador entenda. A linguagem de computador possui quatro partes: 1. Sintaxe (estrutura): a parte da gramtica que estuda a disposio das palavras na frase e a das frases no discurso; 2. Semntica (significado, sentido): estuda o significado das palavras ou frases; 3. Verbos (ao): palavra que designa ao, estado, qualidade ou existncia; 4. Smbolos: so os sinais ou figuras usadas na escrita para que possamos compreender os verbos, obedecendo a uma sintaxe e a semntica. Os smbolos tm suas funes de acordo com a linguagem usada. Linguagem Natural o uso da palavra como meio de expresso e de comunicao entre pessoas, i. , a lngua que se usa para comunicao. O computador entende vrias linguagens como: Pascal, Assembler, C++, Java, Cobol, Delphi, Prolog, etc.

4. Programao
A programao, entendida como programao de computadores, uma atividade voltada soluo de problemas. Programao a seqncia de planejamento, projeto, escrita, instalao e testes de instrues desempenhadas pelo computador. uma cincia. Envolve princpios, tcnicas e formalismos que visam a produo de software bem estruturado e confivel. O estudo de programao no se restringe ao estudo de linguagens de programao. O trabalho de programao pode se tornar mais fcil se o dividirmos sistematicamente em partes menos complexas (esta tcnica denomina-se "dividir para conquistar").

Podemos, ento, dividir a programao em duas fases distintas:

Problema

Fase de Resoluo do Problema

Soluona na Soluo formade de forma Algoritmo Algoritmo Soluocomo como Soluo um programa um programa decomputador computador de

Fase de Implementao (ou codificao) do Algoritmo em alguma ling. de Programao

Um programa estar confivel 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 no gerar nada se o computador detectar erros graves na seqncia de operaes.

5. Algoritmo
uma seqncia finita de passos lgicos escritos numa linguagem natural. O melhor exemplo de algoritmo uma receita de bolo, porque ali so descritos todos os passos para a construo de um bolo numa seqncia lgica. descrever passo a passo um problema para que o computador possa resolver. Descrever os passos de como se encontra a mdia de trs nmeros quaisquer:

- informar os valores - somar estes nmeros - dividir por trs - apresentar o resultado

A lgoritmo Algoritmo

Programa ProgramaFonte Fonte

Traduo do algoritmo para uma linguagem que o computador entende.

Compilao Compilao

Tirar os possveis erros cometidos ao passar o algoritmo para uma determinada linguagem. Linguagem de mquina propriamente dita.

Programa ProgramaObjeto Objeto

Aprendendo a construir algoritmos, facilmente aprender outras linguagens, pois TODAS as linguagens se baseiam na LGICA que estamos aprendendo.

5.1 Definio de Algoritmo


O conceito central da programao e da Cincia da Computao o conceito de algoritmos, isto , programar basicamente construir algoritmos. a descrio, de forma lgica, dos passos a serem executados no cumprimento de determinada tarefa. Definimos algoritmo como a seqncia de aes que devem ser determinadas para a obteno da soluo de um problema. So utilizados no dia-a-dia. Propriedades dos Algoritmos: Aes simples e bem definidas (no ambguas); Seqncia ordenada de aes; Seqncia finita de passos.

10

A formulao de um algoritmo consiste em um texto contendo instrues, as quais devem ser executadas numa ordem prescrita. Essas instrues so executadas num certo tempo, onde so considerados os dados de um conjunto de valores iniciais, fazendo com que o algoritmo seja caracterizado como um evento dinmico e transformador, pois ele requer uma entrada, efetua um processamento e gera uma sada, lembrando que a entrada e sada so definidas em termos de informaes, pois um computador um processador de informaes. Os passos de um algoritmo devem ser simples, sem ambigidades, finitos e devem estar numa ordem bem definida. O algoritmo pode ser usado como uma ferramenta genrica para representar a soluo de tarefas independente do desejo de automatiz-las, mas em geral est associado ao processamento eletrnico de dados, onde representa o rascunho para programas. Serve como modelo para programas, pois sua linguagem intermediria linguagem humana e s linguagens de programao, sendo ento, uma boa ferramenta na validao da lgica de tarefas a serem automatizadas. a forma pela qual descrevemos solues de problemas do nosso mundo, afim de, serem implementadas utilizando os recursos do mundo computacional. Como este possu severas limitaes em relao ao nosso mundo, exige que, sejam impostas algumas regras bsicas na forma de solucionar os problemas, para que, possamos utilizar os recursos de hardware e software disponveis. Pois, os algoritmos, apesar de servirem para representar a soluo de qualquer problema, no caso do Processamento de Dados, eles devem seguir as regras bsicas de programao para que sejam compatveis com as linguagens de programao.

5.2 Linguagem de Descrio de Algoritmo (LDA)


A automao exige que o planejamento da resoluo do problema seja feito previamente, antes de utilizar o computador ALGORITMOS. Usar linguagem natural? Algoritmos necessitam de linguagem clara e sem ambigidade

Definir uma sintaxe e uma semntica


11

Linguagens naturais so imprecisas.

Impasse: Precisamos de liberdade de expresso para formular o nosso raciocnio; Necessitamos de uma notao formal .

Complexidade dos programas: tcnicas de desenvolvimento estruturado de algoritmos.

Objetivos: Facilitar o desenvolvimento dos algoritmos; Facilitar o seu entendimento pelos humanos; Antecipar a comprovao da sua correo; Facilitar a sua manuteno e sua modificao;

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

Caractersticas: Ter fim; No dar margem dupla interpretao (no ambguo); Capacidade de receber dado(s) de entrada do mundo exterior; Poder gerar informaes de sada para o mundo externo ao do ambiente do algoritmo; Ser efetivo (todas as etapas especificadas no algoritmo devem ser alcanveis em um tempo finito).

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

Nmero de comandos limitado

restrio no raciocnio.

12

Linguagem de algoritmos pode ser: Grfica (fluxogramas e diagramas CHAPIN) Escrita (Portugol, portugus estruturado)

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

Ler N1, N2, N3

Calcular M = N1, N2, N3 3

Imprimir Aprovado

sim

M >= 7

no

Imprimir Reprovado

Fim

Fim

Diagramas de CHAPIN

Incio Leia N1, N2, N3 Mdia N1 + N2 + N3/ 3 M >= 7 N Resultado Reprovado Resultado S Aprovado

Escreva Resultado Fim

13

Desvantagem das linguagens grficas: 1. Dificuldade de escrita, entendimento e alteraes; 2. Tendncia a no seguir as regras da programao estruturada; 3. Dificultar a traduo em programa (implementao). 4. Algoritmos extremamente complicados; 5. Perigosa manuteno e modificao. Linguagem Escrita - Portugol uma notao para algoritmos, a ser utilizada na definio, na criao, no desenvolvimento e na documentao de um programa. Portugol NO uma linguagem de programao. uma pseudolinguagem de programao. Fora a se pensar no problema e no na mquina que vai executar o algoritmo. As regras utilizadas no portugol tm como objetivo compatibiliz-lo com todas as linguagens de programao, facilitando assim a sua implementao. Vantagens: Independncia fsica da soluo (soluo lgica apenas); Usa o portugus como base; Pode-se definir quais e como os dados vo estar estruturados; Passagem quase imediata do algoritmo para uma linguagem de programao qualquer. Desvantagens: Exige a definio de uma linguagem no real para trabalho; No padronizado. Estrutura de um Algoritmo (Portugol)
INICIO

Comentrio (opcional). informa o que o algoritmo faz Declarao das variveis. Devemos aqui, informar quais e os tipos das variveis que sero utilizadas no algoritmo. Corpo do algoritmo. Aqui ser escrita a seqncia de comandos que devem ser executados para solucionar o referido problema
FIM

14

6. Tcnicas Bsicas
6.1 Tipos de dados primitivos
Dados so representados pelas informaes a serem tratadas (processadas) por um computador. Inteiro Toda e qualquer informao numrica que pertena ao conjunto dos nmeros inteiros relativos (negativa, nula ou positiva). Jos tem 4 irmos. A temperatura desta noite ser de 2 graus.

Real Toda e qualquer informao numrica que pertena ao conjunto de nmeros reais (negativa, positiva ou nula). Maria tem 1,73 metros de altura. saldo bancrio de Joo R$ 121,78.

Caractere Toda e qualquer informao composta por uma seqncia de caracteres alfa numricos (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

Lgico Toda e qualquer informao que pode apenas assumir duas situaes (biestvel). Tipo lgico formado pelo valor VERDADE(V) e pelo valor FALSO(F). Obs: Este tipo geralmente aplicado para testar alguma condio que se faa necessrio. Tambm chamado de tipo booleano. Jos mais alto que Pedro? (verdade/falso)

15

6.2 Variveis
Unidades bsicas de armazenamento das informaes em programao. As variveis representam espaos onde podemos armazenar e manipular dados. No nvel de algoritmos esses espaos so virtuais, pois representam apenas a capacidade de armazenar dados. Pode-se pensar que uma varivel como o nome de um local onde se pode colocar qualquer valor do conjunto de valores possveis do tipo bsico associado. As linguagens de programao trazem os mais diversos tipos de variveis, existem tipos especficos para nmeros, texto, imagem, som, etc. Mas, em algoritmo so utilizados os tipos bsicos. Definiremos os seguintes tipos pelo fato de serem largamente utilizados e implementados na maioria das linguagens de programao: inteiro, real, caractere, lgico.

6.2.1 Identificadores Representam os nomes escolhidos para rotular as variveis, constantes, procedimentos e funes. Regras : 1. 2. 3. 4. 5. 6. primeiro caractere deve ser uma letra; Os nomes devem ser formados por caracteres pertencentes ao seguinte conjunto : {a,b,c,..z, A,B,C,...Z, 0,1,2,...,9,_}; No deve haver espao em branco; No deve haver identificadores repetidos; No existe distino de maisculas e minsculas; Os nomes escolhidos devem ser claros a fim de explicitar seu contedo, mas tambm no devem ser extensos para no dificultar a escrita.

Exemplos de Identificadores: Identificadores permitidos: A A32B X5 MATRICULA NOTA F1G3H5

Identificadores no permitidos: 5B E(13) A:B X-Y NOTA [1] B*D

16

6.2.2 Declarao de Variveis No mundo real manipulamos objetos e no mundo da informtica os objetos so os dados, desta forma, precisamos declarar as variveis para informar quais objetos sero manipulados pelo algoritmo.

Em ambientes computacionais, as informaes variveis so guardadas em dispositivos eletrnicos chamados memria. Podemos imaginar essa memria como sendo um armrio cheio de gavetas, no qual as gavetas seriam os locais fsicos responsveis por armazenar objetos; os objetos (que podem ser substitudos) seriam as informaes e as gavetas as variveis. Visto que na memria (armrio) existem inmeras variveis (gavetas), precisamos diferenci-las, o que feito por meio de identificadores (etiquetas). Cada varivel (gaveta), no entanto, pode guardar apenas uma informao (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 variveis conforme as seguintes regras: Tipo: Lista de Variveis; Tipo: Lista de Variveis; . Tipo: Lista de Variveis; Lista de Variveis representa um conjunto de identificadores separados por vrgulas, os quais sero utilizados para referenciar os valores armazenados e tipo representa o tipo da informao que ser armazenada. Quando uma varivel declarada a mesma possui um valor no definido, isso indica que no podemos prever qual o valor inicial de uma varivel e quando precisamos contar com um valor inicial devemos atribuir esse valor. Exemplos: Inteiro: X, Num; Caracter: Nome, Endereco, Data; Real: Nota, Peso, Dolar; Lgico: Resposta;

17

Resposta o nome de um local de memria que s pode conter valores do tipo lgico, ou seja, por conveno, verdadeiro ou falso. X o nome de um local de memria que s pode conter valores do tipo inteiro, qualquer um deles.

6.3 Operaes Bsicas


Para solucionar problemas necessitaremos colocar, consultar e alterar valores de variveis, desta forma, devemos definir um conjunto de OPERADORES. Os operadores so o meio pelo qual incrementamos, decrementamos, comparamos e avaliamos, dados dentro do computador. Temos quatro tipos de operadores: Operador de Atribuio Operadores Aritmticos Operadores Relacionais Operadores Lgicos

Deveremos resolver uma enorme diversidade de problemas utilizando apenas esse conjunto limitado e simples de operaes, acarretando numa grande dificuldade na introduo a programao. 6.3.1 Atribuio NomeDaVariavel Valor, Varivel ou Expresso; Esse operador coloca o Valor, Varivel ou Expresso na varivel. importante que o tipo do Valor, Varivel ou Expresso seja compatvel com o tipo da varivel. Exemplos: IDADE 7; NUM X; SOMA X + Y+ Z; MEDIA SOMA/3 ; NOME MARIA;

18

Exerccios Propostos II
1. Identifique os tipos abaixo: 1) 1000 5) 456 9) 1,56 2) 0 6) 34 10) cinco 3) -900 7) casa8 11) 0,87 4) V 8) 0 12) 45,8976

2. Quais os nomes vlidos de identificadores? 1) ENDERECO 5) USUARIO6 2) 21BRASIL 6) NOME*USUARIO 3) FONE$COM 7) END*A-6 4) NOME_USUARIO 8) #MEDIA

Com as declaraes abaixo: Inteiro: NUM, X; Real: SOMA; Caracter: DIA; Logico: TUDO; 3. Assinalar os comandos de atribuio invlidos: ( ) SOMA NUM + 2; ( ) TUDO SOMA ( ) X X + 1; ( ) NUM *ABC*; ( ) DIA SEGUNDA; ( ) SOMA + 2 NUM + 10; ( ) NUM SOMA; ( ) SOMA NUM;

19

6.3.2 Operadores Aritmticos Esses operadores e funes sero utilizados em expresses para realizar operaes aritmticas com variveis. Operador/Funo + * / div mod pot(a,b) rad(a) sorteio(a) sen(x) cos(x) modulo(x) inteiro(x) Observao Operadores e funes recebem argumentos (parmetros) e retornam um resultado, o qual pode ser atribudo a uma varivel ou utilizado numa expresso. Os operadores so representados por smbolos e as funes por palavras que tem uma funcionalidade pr-estabelecida. Exemplo: Suponha que A = 6, B = 1 e C = 16 ento: A A + 1; => A = 7 B B * C; => B = 16 C C A; => C = 9 A C mod A; => A = 2 (resto da diviso) A C div A; => A = 1 (parte inteira da diviso) A C/A => A = 1,22 (diviso fracionria)
20

Descrio Adio Subtrao Multiplicao Diviso Retorna o quociente da diviso inteira Retorna o resto da diviso inteira Retorna o valor de a elevado a b. ab Retorna a raiz quadrada de a. Rad(a) =
b

Retorna um nmero aleatrio, em intervalo fechado, entre 1 e a. Retorna o seno de x Retorna o co-seno de x Retorna o mdulo ou valor absoluto de x. Retorna a parte inteira de x. Inteiro(3,56) = 3

Prioridade de Operadores Durante a execuo de uma expresso que envolve vrios operadores, necessrio existncia de prioridades representando um padro a ser seguido, pois, caso contrrio poderemos obter valores que no representam o resultado esperado.

1 2 3 4

Operaes embutidas em parnteses mais internos; Funes (div, mod, pot e Funes Primitivas); Multiplicao e/ou diviso; Adio e/ou Subtrao;

Exemplos: A B + C * C; => A = 1 + 16 * 16 => A = 1 + 256 A = (1 + 16) * 16 => A = 17 * 16 => A = 257 => A = 272

A (B + C) * C; =>

6.3.3 Operadores Relacionais So utilizados para relacionar variveis ou expresses, resultando num valor lgico (Verdadeiro ou Falso), isso vai permitir a avaliao dos valores de variveis ou expresses permitindo a execuo de comandos especficos para determinados valores de variveis, pois a variveis representam instncias do problema. Operador = <> ( ) < > <= () >= () Descrio Igual Diferente Menor Maior Menor ou Igual Maior ou Igual

Alerta: O resultado de uma operao usando operadores relacionais s pode dar um dos valores: VERDADE ou FALSO, jamais dar outro valor.

21

Exemplo: Suponha que A = 1 e B = 6 A>B A >= B A<B => falso => falso => verdade

A <= B => verdade A=B => falso

Exerccios Propostos III


1. Dados os valores abaixo:
MEDIA NOTA TOTAL Z K X I J A

10

80

-1

-4

Quais os valores resultantes depois da execuo 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

2. Quais os valores das seguintes operaes: 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 4 1 3 5

2 3 -7 3 -1

3 2 -1 3 5

4 12 3 20 0

Fusca Uno Vectra Gol Vectra

Jose Maria Marcos Maria Maria

6.3.4 Operadores Lgicos So utilizados para avaliar expresses lgicas. Uma expresso lgica representa a unio de operaes relacionais permitindo que o resultado de vrias expresses relacionais sejam transformado em um nico resultado lgico. Os operadores lgicos so vrios, no entanto todos derivam de trs operadores primitivos: Operadores Lgicos
OU E NO

23

Esses operadores obedecem as seguintes tabelas:


CON1 V V F F CON2 V F V F OU V V V F CON1 V V F F CON2 V F V F E V F F F CON1 V F NO F V

Os resultados das expresses seguem a seguintes regras: 1. operador e (conjuno) somente retornar o valor verdadeiro se todos as expresses relacionais tambm retornem valores verdadeiros, ou seja, basta que uma expresso relacional seja falsa para que o resultado geral da expresso tambm seja falso. 2. J o operador ou (disjuno) somente retornar Falso caso todas as expresses relacionais tambm sejam Falsas, pois basta que uma expresso relacional seja Verdadeira para o resultado geral ser Verdadeiro. 3. E o operador de negao inverte o valor lgico de verdade para falso e de falso para verdade. Quando ocorrer de numa mesma expresso lgica existir operadores de conjuno e disjuno, devemos resolv-la da esquerda para a direita, respeitando o uso de parnteses e computar o resultado final

Expresses As expresses podem ser de trs tipos: Expresses aritmticas, relacionais e lgicas, isto , usando os operadores descritos acima. Ex.: suponha que X = 2; Y = 3; Z = 5. Expresso aritmtica: (X+2) mod Y => O resultado ser um nmero, um valor. Expresso Relacional: Y <= Z => O resultado ser verdade ou falso.

Expresso Lgica : (Z<>X) E (Y=X) => O resultado ser verdade ou falso.

24

Prioridade de Operadores

1 2 3 4 5 6

Operaes embutidas em parnteses mais internos; Funes (Quociente, Resto, Potncia e Funes Primitivas); Multiplicao e/ou diviso; Adio e/ou Subtrao; Operadores Relacionais; Operadores Lgicos.

Exerccios Propostos IV
1. De acordo com os valores abaixo, de resposta das expresses, VERDADE ou FALSO: NOME ANA APELIDO FLOR X ANA AUX 10 RESP F K 3 J 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

6.4 Comandos de Entrada e Sada de Dados


6.4.1 Entrada de Dados A execuo da instruo de leitura pressupe que os dados sero fornecidos do meio externo (teclado), e sero armazenados na memria (gavetas). Uma vez na memria, podemos manipular estes dados conforme nossa necessidade.

Forma geral
Leia (varivel1, varivel2 . . . VarivelN); Ou Leia (varivel1); Leia (varivel2); .. Leia (varivelN);

Esse comando representa que varivel_1, varivel_2,... recebero 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 sero informados pelo meio externo. Exemplo: Leia (NOME_PESS); onde, NOME_PESS o nome da varivel que guardar o contedo 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 diferena entre os dois comandos. O comando Leia faz com que a varivel NOME_PESS receba um conjunto de caracteres do meio externo (teclado), enquanto o comando de atribuio faz a varivel NOME_PESS receber um conjunto de caracteres num determinado instante do algoritmo.
26

6.4.2 Sada de Dados A execuo do comando Escreva pressupe que as informaes estejam armazenadas na memria (gavetas) e sero colocadas disponveis no meio externo (vdeo).

Forma Geral
Escreva (expresso1, expresso2, . . . expressoN); Ou Escreva (expresso1); Escreva (expresso2); . Escreva (expressoN);

Esse comando representa o envio do contedo de expresso_1, expresso_2,... para o meio externo. Observe que os parmetros do comando de sada de dados so expresses, indicando que podemos utilizar variveis ou expresses envolvendo variveis, onde, neste caso, o valor enviado ser o resultado da expresso. Obs: Textos tambm podem ser impressos no vdeo 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

Exerccios Resolvidos 1) Faa um algoritmo para ler dois nmeros, somar estes nmeros e imprimi-los. INICIO inteiro: num1, num2, soma; leia (num1, num2); soma num1 + num2; escreva (A soma dos nmeros : ,soma); FIM. 2) Faa um algoritmo que leia trs nmeros, calcule sua mdia e a imprima. Opo 1 INICIO real: a, b, c, soma, media; leia (a, b, c); soma a + b + c; media soma/3; escreva (A media dos trs nmeros = , media); FIM. Opo 2: INICIO real: a, b, c, media; leia (a, b, c); media (a + b + c )/3; escreva (A media dos trs nmeros = , media); FIM.

28

3) Faa um algoritmo para calcular a rea de um tringulo retngulo.

Sabe-se que a rea do tringulo segue a frmula: rea = Base * Altura 2

INICIO real: area ,base, alt; leia (base, alt); area (base * alt)/2; escreva (rea do tringulo = , area); FIM.

4) Imagine uma repblica que tenha como base os seguintes imposto para seus contribuintes assalariados: Desconta-se inicialmente 10% do salrio bruto do trabalhador como contribuio da previdncia social. Aps este desconto existe outro de 30% sobre o valor restante, a ttulo de imposto de renda.

Crie um algoritmo para ler o salrio bruto de um cidado e imprima o seu salrio lquido.

INICIO real: salbrut, salliq, desc1, desc2, subtot; leia (salbrut); desc1 salbrut * 0.1; subtot salbrut desc1; desc2 subtot * 0.3; salliq subtot desc2; escreva (Salrio do lquido do cidado =,salliq); FIM.

29

Exerccios Propostos V
1. Faa um algoritmo que leia um nmero qualquer e imprima o seu cubo. 2. Faa um algoritmo que leia um nmero qualquer e imprima a sua raiz quadrada. 3. Faa um algoritmo que leia um valor em graus Fharenheit e imprima o seu equivalente em graus Celcius. C = (F 32)*5/9 4. Faa um algoritmo para ler uma temperatura em graus Celsius e imprime o valor correspondente em graus Fahrenheit. 5. Faa um algoritmo para calcular o volume de uma esfera de raio R, onde R o valor lido. 4r 3 V= 3 6. Faa um algoritmo que leia a velocidade de um automvel em km/h e imprima em m/s. Nota: 1 m/s equivale a 3,6 km/h. 7. Faa um algoritmo para ler o raio de um crculo, calcular e escrever a sua rea. 8. Faa um algoritmo que a partir de um valor fornecido em real informe ao usurio o valor equivalente em dlar americano e em euro. A cotao do dlar e do euro deve ser fornecida pelo usurio. 9. Faa um algoritmo para ler o salrio mensal e o percentual de reajuste. Calcular e escrever o valor do novo salrio. 10. Faa um algoritmo para ler o nmero de votos brancos, nulos e vlidos. Calcular e escrever o percentual que cada um representa em relao ao total de eleitores. 11. Suponha que voc foi ao supermercado e comprou: N latas de Nescau com custo unitrio Q L litros de leite com custo unitrio P B quilos de banana com custo unitrio T Faa um algoritmo que imprima: total gasto com cada produto e o total gasto no mercado.

30

12. Uma sorveteria produz 3 tipos de picols. O preo 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 relatrio: a) o total arrecadado com os picols do tipo 1, 2, 3. b) o total arrecadado pela sorveteria. 13. Faa um algoritmo que leia o nmero total de prestaes de um consrcio, o total de prestaes pagas e o valor atual da prestao. O algoritmo deve calcular e apresentar o saldo devedor atual e a quantidade de prestaes sem pagar. 14. Faa um algoritmo que leia a matrcula do vendedor, seu salrio fixo, o total de vendas por ele efetuada e o percentual que ganha sobre as vendas. Escreva o salrio total do vendedor. 15. Faa um algoritmo que l a matricula de um funcionrio, nmero de horas trabalhadas, valor da hora trabalhada, nmero de filhos com idade menor que 14 anos e calcule o salrio deste funcionrio. Para cada filho menor, ele tem um acrscimo de R$ 30,00 no salrio. 16. O governo acaba de liberar R$ 10.000.000 para construo de casas populares. Cada casa custa o equivalente a 150 salrios mnimos. Faca um algoritmo que leia o valor do salrio mnimo e calcule a quantidade de casas possveis de se construir. 17. Faa um algoritmo que leia um valor em Real (R$) e calcule o menor nmero possvel 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 relao de notas necessrias. Suponha que o sistema monetrio no 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, preo do litro de combustvel. Faa um algoritmo que imprima o seguinte Relatrio: A distancia percorrida foi : ...... Valor total CR$ : ...... Km por litro : ......

31

19. A turma C composta de 60 alunos, e a turma D de 20 alunos. Faa um algoritmo que leia o percentual de alunos reprovados na turma C, o percentual de aprovados na turma D, calcule e imprima: a) O nmero de alunos reprovados na turma C. b) O nmero de alunos reprovados na turma D. 20. Um motorista de txi deseja calcular o rendimento de seu carro na praa. Sabendo-se que o preo do combustvel de R$ 2.20, faa um algoritmo para ler: a marcao do odmetro (Km) no incio do dia, a marcao (Km) no final do dia, a quantidade de litros de combustvel gasto e o valor total (R$) recebido dos passageiros. Calcular e escrever: a mdia do consumo em km/l e o lucro (lquido) do dia. 21. Uma loja vende bicicletas com um acrscimo de 50 % sobre o seu preo de custo. Ela paga a cada vendedor 2 salrios mnimos mensais. Faa um algoritmo que leia o valor do salrio mnimo, o preo de custo de uma bicicleta, o nmero de bicicletas vendidas e a quantidade de funcionrios. Calcule e imprima o lucro (lquido) da loja. 22. A equipe Ferrari deseja calcular o nmero mnimo de litros que dever colocar no tanque de seu carro para que ele possa percorrer um determinado nmero de voltas at o primeiro reabastecimento. Faa um algoritmo que leia o comprimento da pista (em km), a quantidade de voltas a serem percorridas no grande prmio, o nmero de reabastecimentos desejados, e o consumo de combustvel do carro (em km/l). Calcular e escrever o nmero mnimo de litros necessrios para percorrer at o primeiro reabastecimento. 23. Faa um algoritmo que leia os preos de uma mercadoria em abril e maio. Tendo como base a variao dos preos desta mercadoria, calcule a taxa de inflao. 24. Faa um algoritmo que leia um valor inteiro positivo e menor que 1000, armazene numa varivel inteira e imprima a soma dos dgitos que formam o valor. Exemplo: 397 => soma=19 25. O custo ao consumidor de um carro novo a soma do custo de fbrica com a percentagem do distribuidor e dos impostos (aplicados ao custo de fbrica). Sabe-se que a percentagem do distribuidor de 28% e os impostos de 45%, escrever um algoritmo que leia o custo de fbrica de um carro e escreva o custo ao consumidor. 26. Dados os comprimentos dos catetos de um tringulo retngulo nas variveis LADO1 e LADO2, faa um algoritmo que calcule o valor da HIPOTENUSA. 27. Faa um algoritmo que leia o tempo de durao de um evento em uma fbrica expressa em segundos e mostre-o expresso em horas, minutos e segundos. 28. Faa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano, P(x1,y1) e
32

P(x2,y2), escreva a distncia entre eles. A frmula que efetua tal clculo :

29. Uma empresa de ferragens produz 3 tipos de peas mecnicas: 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: preo unitrio da porca, arruela, parafuso; quantidade de porcas, arruelas e parafusos solicitados pelo cliente. Dados de sada: total pago pelas porcas, arruelas e parafusos; total de desconto dado ao cliente; total a ser pago pelo cliente. 30. Faa 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 variveis A e B. Dica: operadores aritmticos resolvem este problema.

7. Comandos de Controle
Para representar a soluo de um problema devemos escrever o conjunto de passos a serem seguidos. De acordo com a Programao Estruturada os mecanismos utilizados para controle so: Seqncia, Seleo e Repetio.

7.1 Seqncia
Usada para executar comandos passo a passo, sabendo que todos eles sero executados na ordem de escrita sem nenhum desvio. Uma seqncia pode possuir um ou vrios comandos e esses comando so delimitados pelos identificadores incio e fim. Quando a seqncia possui apenas um nico comando, o uso dos identificadores incio e fim opcional. A utilizao de recuo para direita facilitando a visualizao dos comandos contidos na seqncia bastante importante.

33

Outro bom mtodo para facilitar essa identificao sublinhar os identificadores Incio e Fim e traar uma linha de um at o outro.

INICIO Comando_1; ... Comando_N; FIM

7.2 Seleo
Este o comando usado para fazer comparaes de tal forma que possamos simular uma deciso, no fluxo de nosso algoritmo. Usada para tomar decises, ou seja, desviar a execuo do algoritmo de acordo com uma condio, podendo ser simples ou composta. O comando de seleo utilizado quando h a necessidade de avaliar certas possibilidades dos valores de variveis e de acordo com o resultado dessa anlise executar um conjunto especfico de comandos. A grande maioria dos problemas necessitar de selees nas suas solues. 7.2.1 Comando Se Ento Seno Simples Se (Expresso Lgica) Ento Seqncia Fimse Composta Se (Expresso Lgica) Ento Sequncia_1 Seno Sequncia_2 Fimse

As expresses lgicas so do tipo: A>B, A<B, (A=B) ou (B=C), A<>B. Sendo que este resultado s poder ser: Verdadeiro ou Falso.

34

O comando de seleo simples funciona da seguinte maneira: 1 2 3 A expresso lgica resolvida; Se o resultado da expresso for verdadeiro, ento a Seqncia ser executada; Caso o resultado seja falso a Seqncia no ser executada

O comando de seleo composta funciona da seguinte maneira: 1 2 3 A expresso lgica resolvida; Se o resultado da expresso for verdadeiro, ento a Sequncia_1 ser executada; Caso o resultado seja falso a Sequncia_2 ser executada

OBS: Quando existir apenas uma ao para ser resolvida pela seleo, ento basta escrev-la. Quando precisarmos colocar vrias aes necessrio usar um bloco, delimitado por inicio e fim. Exemplo: Faa um algoritmo que leia dois nmeros quaisquer e imprima o maior deles. INICIO inteiro: num1, num2; leia (num1, num2); se (num1>num2) ento escreva (O maior nmero : ,num1); seno escreva (O maior nmero : ,num2); fimse; FIM.

Comandos de Seleo Aninhados O comando de seleo possui uma seqncia (caso seja simples) ou duas (caso seja composto). Uma seqncia um conjunto de comandos, e um ou mais desses comandos, contidos na seqncia, pode ser outro comando de seleo, os quais tambm podero possuir outros comandos de seleo e assim
35

por diante. Isto denominado de selees aninhadas, ou seja, uma sucesso de selees uma dentro da outra. O uso de selees aninhadas vai permitir a avaliao de diversas condies para os possveis valores de um dado conjunto de variveis e executar uma seqncia especfica para esses valores, dentro de um conjunto de possveis seqncias. Exemplo: Faa um algoritmo que leia dois nmeros quaisquer e imprima o maior deles. Informar caso eles sejam iguais. INICIO inteiro: num1, num2; leia (num1, num2); se (num1>num2) ento escreva (O maior nmero : , num1); seno se (num1<num2) ento escreva (O maior nmero : , num2); seno escreva (Os nmeros so iguais); fimse; fimse; FIM. Exemplo: Crie um algoritmo que leia do teclado um nmero 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) ento escreva (n, est na faixa 1); seno se (n <= 100) ento escreva (n, est na faixa 2); seno escreva (n, est na faixa 3); fimse; fimse; FIM.
36

Exemplo: Dados trs valores X, Y, Z, verificar se eles podem ser os comprimentos dos lados de um tringulo eqiltero, issceles ou escaleno. Se eles no formarem um tringulo, escrever uma mensagem. Obs: 1. O comprimento de cada lado de um tringulo menor do que a soma dos comprimentos dos outros dois lados. 2. Chama-se tringulo eqiltero ao tringulo que tem os comprimentos dos trs lados iguais. 3. Chama-se tringulo issceles o tringulo que tem os comprimentos de dois lados iguais. Portanto, todo tringulo eqiltero tambm issceles. 4. Chama-se de tringulo escaleno ao tringulo que tem os trs lados diferentes.

INICIO inteiro: x, y, z; leia (x, y, z); se (x < y + z) e (y < x + z) e (z < x + y) ento se (x = y) e (x = z) ento escreva (tringulo eqiltero); seno se (x = y) ou (x = z) ou (y = z) ento escreva (tringulo issceles); seno escreva (tringulo escaleno); fimse; fimse; seno escreva (no existe tringulo); fimse; FIM.

37

Exemplo: Fazer um algoritmo que leia trs valores inteiros, determinar e imprimir o menor deles. INICIO inteiro: a, b, c, menor; leia (a, b, c); se (a < b) e (a < c) ento menor a; seno se b < c ento menor b; seno menor c; fimse; fimse; escreva (O menor nmero : , menor); FIM.

7.2.2 Seleo de Mltipla Escolha O comando ESCOLHA uma aplicao especializada da estrutura SE ENTO SENO, que permite a seleo de um comando simples, a ser executado de um grupo de comandos. A varivel testada deve ser de um tipo escalar. O valor da varivel ser comparado com cada valor constante da lista de casos, para verificar a correspondncia. Se nenhuma correspondncia for encontrada, a condio ser indefinida, todos os comandos sero desconsiderados e a estrutura ESCOLHA finaliza.

Forma geral ESCOLHA varivel caso v1: comando(s); _ caso vn: comando(s); caso contrario: comando(s); FIMESCOLHA;

38

Exemplo: Algoritmo para ler dois nmeros A e B e a operao aritmtica que deseja fazer com os dois nmeros (+, -, *, /). 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 (opo indefinida); fimescolha FIM.

Exerccios Propostos VI
1. Calcule a mdia aritmtica das 3 notas de um aluno e mostre, alm do valor da mdia, uma mensagem de "Aprovado", caso a mdia seja igual ou superior a 7 ou a mensagem de "Reprovado", caso a mdia seja menor que 7. 2. Elaborar um algoritmo que l 2 valores A e B (inteiros) e informa se A divisvel por B ou no. 3. Faa um algoritmo que leia um nmero inteiro e mostre uma mensagem indicando se este nmero 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 frmulas: para homens: (72.7*altura)-58 para mulheres: (62.1*altura)-44.7 5. Faa um algoritmo que leia o nmero da conta bancria, o saldo, o tipo de operao (1-depsito/2retirada) e o valor da operao. O algoritmo deve calcular e mostrar o novo saldo. Mostrar uma mensagem caso o saldo fique negativo.

39

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 nmeros 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 Faa um algoritmo que leia um inteiro N e imprima a faixa qual ele pertence. 8. As mas custam R$ 0,30 cada uma, se forem compradas menos do que uma dzia, e R$ 0,25 se forem compradas pelo menos doze. Faa um algoritmo que leia o nmero de mas compradas, calcule e escreva o valor total da compra. 9. Faa um algoritmo que verifique a validade de uma senha fornecida pelo usurio. A senha vlida o numero 12345. Devem ser impressas as seguintes mensagens: ACESSO PERMITIDO caso a senha seja vlida. ACESSO NEGADO caso a senha seja invlida.

10. Um hotel cobra R$ 50,00 reais a diria e mais uma taxa de servios. A taxa de servios de: 2,50 por dia, se nmero de dirias <15 2,00 por dia, se nmero de dirias =15 1,50 por dia, se nmero de dirias >15 Faa 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 trs nmeros 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

13. Um banco conceder um crdito especial aos seus clientes, varivel com o saldo mdio no ltimo ano. Faa um algoritmo que leia o saldo mdio de um cliente e calcule o valor do crdito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo mdio e o valor do crdito.
Saldo mdio De 0 a 200 De 201 a 400 De 401 a 600 Acima de 601 Percentual nenhum crdito 20% do valor do saldo mdio 30% do valor do saldo mdio 40% do valor do saldo mdio

14. Um vendedor precisa de um algoritmo que calcule o preo total devido por um cliente. O algoritmo deve ler o cdigo de um produto e a quantidade comprada. Calcular o preo total, usando a tabela abaixo. Mostre uma mensagem no caso de cdigo invlido.
Cdigo 102 103 104 105 Preo unitrio R$ 5,30 R$ 6,00 R$ 3,20 R$ 2,50

15. Uma empresa conceder um aumento de salrio aos seus funcionrios, varivel de acordo com o cargo, conforme a tabela abaixo. Faa um algoritmo que leia o salrio e o cargo de um funcionrio(1-Gerente,2Engenheiro,3-Tcnico,4-Auxiliar) e calcule o novo salrio. Se o cargo do funcionrio for invlido dever imprimir uma mensagem de erro. Como resultado mostre o salrio antigo, o novo salrio e a diferena.
Cargo Gerente Engenheiro Tcnico Auxiliar Percentual 10% 20% 30% 40%

16. Escrever um algoritmo que l a matrcula do aluno e suas 3 notas. Calcular a mdia e verificar qual o seu conceito, conforme a tabela:
Mdia >= 9,0 >= 7,5 e < 9,0 >= 6,0 e < 7,5 >= 4,0 e < 6,0 < 4,0 Conceito A B C D E

41

O algoritmo deve escrever a matrcula do aluno, suas notas, a mdia, 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, so quaisquer valores reais e os escreva. A seguir: a) b) Se I = 1 escrever os trs valores A, B, C em ordem crescente. Se I = 2 escrever os trs valores A, B, C em ordem decrescente.

18. So dados um nmero 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 no pertence a nenhum dos dois. Em cada caso escrever uma mensagem conveniente. 19. Uma empresa decidiu dar uma gratificao de Natal a seus funcionrios, baseada no nmero de horas extras e no nmero de horas que o empregado faltou ao trabalho. O valor do prmio obtido pela consulta tabela abaixo, em que H o nmero de horas-extras subtrado de dois teros do nmero de horas-faltas.
H (horas) 40 a 100 20 a 39 10 a 19 0a9 Prmio (R$) 150,00 100,00 50,00 25,00

Dado o nmero de identificao do funcionrio, o nmero de horas-extras e o nmero de horas-faltas, calcule o valor do prmio do funcionrio. Escreva o nmero do funcionrio e o valor do prmio.

20. Escrever um algoritmo que l o nmero de um funcionrio, o nmero de horas trabalhadas, o valor que recebe por hora, o nmero de filhos com idade inferior a 14 anos, a idade, o tempo de servio do funcionrio e o valor do salrio famlia por filho. Calcular: salrio bruto, o desconto do INSS (8,5% do salrio bruto), salrio famlia, IR, Adicional. o IR (imposto de renda) calculado como segue: Se salrio bruto > 1500 ento IR = 15% do salrio bruto Se salrio bruto > 500 e salrio bruto <= 1500 ento IR = 8% do salrio bruto Se salrio bruto <= 500 ento IR = 0

o adicional calculado conforme o especificado: Se tempo de servio for at 5 anos o adicional igual a 2% do salrio bruto Se tempo de servio estiver entre 6 e 15 anos o adicional igual a 3.5% do salrio bruto. Se tempo de servio for maior que 15 anos ento adicional igual a 5.5% do salrio bruto.
42

Calcular o salrio lquido do funcionrio. Mostrar o nmero do funcionrio, salrio bruto, total dos descontos, adicional e salrio lquido. 21. Faa um algoritmo para ler a base e a altura de um retngulo, a base e a altura de um tringulo e o raio de uma circunferncia e mostrar qual a maior rea. 22. Escrever um algoritmo que l a hora de incio e hora de trmino de um jogo, ambas subdivididas em dois valores distintos: horas e minutos. Calcular e escrever a durao do jogo, tambm em horas e minutos, considerando que o tempo mximo de durao de um jogo de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte. 23. Faa um algoritmo para ler o peso de uma encomenda, tipo de entrega(1-sedex, 2-sedex 10) e regio 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 De 1 Kg a 5 Kg Acima de 5 Kg Para entrega por Sedex Para entrega por Sedex 10 Para entregar na regio Norte Para entregar na regio Nordeste Para entregar na regio Centro-Oeste Para entregar na regio Sudeste Para entregar na regio Sul R$ 5,00 R$ 10,00 R$ 15,00 + R$ 3,00 por Kg excedente Adicionar R$ 9,00 Adicionar R$ 11,00 Adicionar R$ 3,00 Adicionar R$ 2,00 Adicionar R$ 6,00 Adicionar R$ 5,00 Adicionar R$ 7,00

7.3 Comandos de Repetio


Existem situaes em que processar um valor uma nica vez no satisfaz o problema, temos que trabalhar com a mesma informao vrias 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, faa um algoritmo para saber o total arrecadado, no ltimo carnaval com latas de cerveja.

43

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 trs ltimos carnavais teramos: 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 selees serviam para tomar decises permitindo executar uma seqncia especfica. Os comandos de repetio servem para indicar que uma seqncia deve ser executada vrias vezes at que o resultado esperado seja obtido. As estruturas de repetio utilizadas so: PARA, ENQUANTO e REPITA. 7.3.1 Para O comando PARA o mais simples dos comandos de repetio, ele permite que um bloco de comando seja repetido um nmero de vezes especfico. Forma geral PARA varivel_controle de valor_inicial AT valor_final O PASSO valor_incremento FAA Bloco de comando; FIMPARA; Onde: varivel_controle a varivel que ser incrementada ou decrementada a partir de um valor inicial previamente estabelecido.
44

valor_inicial primeiro valor que a varivel_controle vai assumir. valor_final valor limite que varivel_controle poder assumir valor_incremento: define o acrscimo que a varivel de controle ir sofrer depois de m execuo da repetio. Opcional se o incremento for um (1).

Exemplo: Fazer um algoritmo para escrever de 1 at 10. INCIO inteiro: i; para i de 1 at 10 o passo 1 faa escreva( i); fimpara; FIM. INCIO inteiro: i; para i de 1 at 10 faa escreva( i); fimpara; FIM.

O valor da varivel_controle no deve ser modificado por outros comandos dentro do bloco de comandos. A estrutura PARA , tipicamente, utilizada onde o nmero de repeties do bloco de comando seja estabelecido antes do algoritmo iniciar a execuo do lao.

Exemplo: Calcule a mdia aritmtica de uma turma de 50 alunos. INICIO real: media_aluno, media_turma, cont; inteiro: j; cont 0; para j de 1 at 50 faa leia (media_aluno); cont cont + media_aluno; fimpara; media_turma cont / 50; escreva (mdia da turma =, media_turma); FIM.

45

Exemplo: Dado um nmero qualquer encontre o fatorial deste nmero. INCIO inteiro: numero, n, fat; leia (numero); fat 1; para n de 1 at numero faa fat fat * n; fimpara; escreva (o fatorial de, numero, =, fat); FIM.

7.3.2 Enquanto Comando que repete quantas vezes for necessrio um bloco de comandos dentro do seu algoritmo.

Forma geral ENQUANTO condio FAA comando1 . comandoN FIMENQUANTO; A estrutura de seleo ENQUANTO funciona da seguinte forma: testada a condio, e desta s pode resultar dois valores possveis: VERDADE ou FALSO. Se a condio 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 condio. Se a condio for VERDADE ele executa novamente o bloco de comando que est dentro do ENQUANTO, at encontrar o FIMENQUANTO. Retorna novamente para testar a condio. Se a condio for FALSA ele executar a prxima instruo depois do FIMENQUANTO.

46

Podemos concluir que, para sairmos do ENQUANTO, temos que tornar FALSO a condio. Temos 4 maneiras de usar o ENQUANTO que so: Usando um Contador Uma varivel que conte quantas vezes o bloco de comando foi executado, e esta varivel tambm far parte da condio. Assim, se quisermos executar o bloco trs vezes, vamos contar cada execuo do bloco e paramos quando esta varivel contadora chegar a trs. Usando um Contador Usando um FLAG Lendo o nmero de vezes a ser executado Usando um Tipo Lgico

Exemplo: Ler o saldo de quatro contas bancrias e escrever a sua situao: se est estourada (saldo menor que 0) ou normal. INCIO inteiro: contador; real: saldo; contador 0; enquanto (contador < 4) faa leia (saldo); se (saldo < 0) ento escreva (conta estourada); seno escreva (conta normal); fimse contador contador + 1; fimenquanto; FIM.

47

Exemplo: Algoritmo que ler o salrio dos empregados de uma empresa e calcula a mdia salarial desta empresa. Suponhamos que esta empresa possua apenas trs empregados.

INICIO real: soma_salario, salario, media; inteiro: contador; soma_salario 0; contador 0; enquanto (contador < 3) faa leia (salrio); soma_salario soma_salario + salrio; contador contador + 1; fimenquanto; media soma_salario/3; escreva (mdia dos salrios = , media); FIM. Usando FLAG Uma outra maneira de usar o ENQUANTO FAA seria usar um FLAG ou BANDEIRA. FLAG uma informao igual a que se est lendo, no entanto, no ser processada, apenas ter como objetivo tornar a condio do ENQUANTO FAA, FALSO. Em outras palavras, FLAG ser uma informao a ser lida que tornar a condio do ENQUANTO FAA FALSO. O FLAG deve ser um valor ABSURDO e que seja do mesmo tipo dos dados a serem lidos. Exemplo: Suponha que os salrios a serem lidos so: CR$ 1000, 3000, 2000. Assim, temos que ler, alm dos dados que sero processados, um dado absurdo que ter como funo parar de executar o ENQUANTO, isto , sair do lao e prosseguir o fluxo do programa (prxima linha aps o enquanto). Qual o melhor FLAG neste caso?

48

Exemplo: Algoritmo que ler o salrio dos empregados de uma empresa e calcula a mdia salarial desta empresa. INCIO real: soma_salario, salario, media; inteiro: cont; soma_salario 0; cont 0; leia (salrio); enquanto (salario <> -1) faa soma_salario soma_salario + salrio; cont cont + 1; leia salrio; fimenquanto; media soma_salario / cont; escreva (mdia dos salrios = , media); FIM. OBS: Note que quando usamos um contador j sabemos o nmero fixo de dados que ser digitado. Aqui no importa o nmero de dados que ser digitada, o algoritmo chega ao fim quando for digitado o FLAG -1. Este mtodo mais flexvel que o anterior, pois, no outro devemos saber previamente o nmero de dados de entrada, enquanto que este no importa. Se estivermos lendo vrias 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 no venha a ser o nome de uma pessoa, que seja um absurdo e que seja do mesmo tipo. Lendo o Nmero de Vezes a ser Executado Uma outra maneira de se resolver o algoritmo anterior ler a quantidade de dados que o usurio ir digitar. Muitas das vezes em que vai se entrar com os dados, j se sabe de antemo a quantidade. Assim, esta informao pode tambm ser um dado que o usurio do seu algoritmo pode nos fornecer. Este mtodo uma variao do primeiro, pois usa tambm um contador, a vantagem est em tornar o algoritmo mais flexvel. No primeiro mtodo, o usurio entraria com um nmero de dados j
49

previamente estabelecido, neste o usurio vai informar a quantidade de dados que ele digitar. Exemplo: Algoritmo que ler o salrio dos empregados de uma empresa e calcula a mdia salarial desta empresa. INCIO real: soma_salario, salario, media; inteiro: contador, n; soma_salario 0; contador 0; leia (n); enquanto (contador < n) faa leia (salrio); soma_salario soma_salario + salrio; contador contador + 1; fimenquanto; media soma_salario/n; escreva (mdia dos salrios = , media); FIM. Ocorrem duas mudanas do primeiro para este. Foi colocado um comando de leitura, o qual, o usurio digitar o nmero de dados que ser digitado. Assim, se o usurio tiver seis dados a serem digitados, ele digitar seis e o lao acontecer seis vezes. A segunda mudana ocorreu na condio do ENQUANTO, que antes era trs passou agora para o valor que o usurio digitar (N). Ento, a condio se tornar FALSO quando o contador chegar a N.

Usando um Tipo Lgico O uso do tipo lgico como teste da condio do ENQUANTO tem aplicaes especficas, no entanto isso no 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 condio? Existe um tipo que armazena somente VERDADE ou FALSO? Ento o que aconteceria se fosse declarado uma varivel do tipo lgico e lhe fosse atribuda um valor verdadeiro e colocasse essa varivel como condio?

50

INICIO lgico: teste; teste verdade; enquanto (teste) faa escreva (eterno); fimenquanto; FIM.

O que acontecer que o algoritmo entrar em lao e no sair mais. Para sair do lao temos que tornar a varivel teste FALSA, do contrrio ele ficar escrevendo ETERNO eternamente.

7.3.3 Repita uma estrutura de repetio que tem por funo repetir um determinado bloco de comandos at que a condio se torne verdadeira. Forma geral REPITA bloco de comandos; AT (condio); A diferena entre o REPITA e o ENQUANTO que ser executado a primeira vez o bloco de comandos sem verificar a condio. Assim, s depois do bloco ser executado uma vez que a condio vai ser testada. Note que, a condio deve se tornar VERDADE, isto , AT que a condio seja verdade. No ENQUANTO, a condio 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 ento vai testar a condio, se a condio for VERDADE ele continua o fluxo do programa normalmente. Caso a condio seja FALSA ele volta ao REPITA e executa novamente o bloco de comandos dentro do REPITA at chegar na condio, e repete o processo acima.
51

A estrutura REPITA usada para se fazer qualificao de entrada de dados via teclado, para garantir que os valores fiquem dentro de uma determinada faixa. Exemplo: Suponha que queremos forar o usurio a digitar um valor entre 6 e 16 e nenhum valor fora desta faixa seja aceita. Fazer um algoritmo para tal. INCIO inteiro: valor; repita leia (valor); at ((valor >= 6) e (valor <= 16)); escreva (valor lido = ,valor); FIM. Neste algoritmo enquanto no 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 construo de Menus, pois a primeira vez o bloco de comando deve ser executado sem que haja nenhum teste.

Exerccios Propostos VII


1. Uma empresa deseja aumentar seus preos em 20%. Faa um algoritmo que leia o cdigo e o preo de custo de cada produto e calcule o preo novo. Calcule tambm, a mdia dos preos com e sem aumento. Mostre o cdigo e o preo novo de cada produto e, no final, as mdias. A quantidade de produtos desconhecida. 2. Uma loja tem 150 clientes cadastrados e deseja mandar uma correspondncia a cada um deles anunciando um bnus especial. Escreva um algoritmo que leia o nome do cliente e o valor das suas compras no ano passado e calcule um bnus de 10% se o valor das compras for menor que R$ 5000 e de 15 %, caso contrrio. 3. Chico tem 1,50 metro e cresce 2 centmetros por ano, enquanto Z tem 1,10 metro e cresce 3 centmetros por ano. Construa um algoritmo que calcule e imprima quantos anos sero necessrios para que Z seja maior que Chico.

52

4. Escrever um algoritmo que leia 5 pares de valores, o primeiro valor a matrcula do aluno, e o segundo a sua altura em centmetros. Encontre o aluno mais alto e o mais baixo. Mostre a matrcula do aluno mais alto e do mais baixo, junto com suas alturas. 5. Escrever um algoritmo que leia um conjunto de 50 informaes 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 mdia da altura das mulheres c) a mdia da altura da turma. 6. Faa um algoritmo que mostre os conceitos finais dos alunos de uma classe de 25 alunos, considerando: a) os dados de cada aluno (matrcula e media final) sero fornecidos pelo usurio. b) a tabela de conceitos segue abaixo: Nota de 0,0 a 4,9 de 5,0 a 6,9 de 7,0 a 8,9 de 9,0 a 10,0 Conceito D C B A

7. Foi feita uma pesquisa entre os habitantes de uma regio. Foram coletados os dados de idade, sexo (M/F) e salrio. Faa um algoritmo que informe: a) a mdia de salrio do grupo; b) maior e menor idade do grupo; c) quantidade de mulheres com salrio 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, Distncia do centro em Km, Nmero de veranistas da ltima temporada, Cdigo do tipo de estrada de acesso: 0 - no asfaltada/1 - asfaltada Faa um algoritmo para descobrir: O nmero de praias que distam mais de 15 km do Centro; O nmero de veranistas que freqentam as praias cujo acesso no asfaltado; O percentual de veranistas que freqentaram as praias que distam menos 15 Km do Centro;
53

9 A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salrio e nmero de filhos. A prefeitura deseja saber: a) mdia do salrio da populao; b) mdia do nmero de filhos; c) maior e menor salrio; d) percentual de pessoas com salrio at R$ 500. A quantidade de pessoas entrevistadas desconhecida. 10. Elaborar um algoritmo para efetuar um diagnstico. Considere que teremos 50 entradas de dados, onde em cada entrada tem-se: Nome do paciente Cdigo para infeco dos pulmes: 0 Ausente/1 - Presente Cdigo para temperatura: 0 Normal/1 - Anormal Cdigo para corisa: 0 Ausente/1 - Presente Cdigo para espirro: 0 Ausente/1 - Presente Diagnostico: Se o paciente tiver infeco nos pulmes e temperatura anormal o diagnstico pneumonia. Se o paciente tiver apenas um sintoma, qualquer deles, o diagnstico gripe. Se o paciente tiver dois ou mais sintomas, que no sejam simultaneamente infeco nos pulmes e temperatura anormal, o diagnstico resfriado. Deseja-se um relatrio onde aparea o nome de cada paciente com o respectivo diagnstico. 11. Com o advento dos notebooks no mercado nacional, um fabricante deseja obter determinadas informaes dos seus possveis consumidores. Ser entrevistada uma quantidade indeterminada de empresas, lendo os seguintes dados: Nome da empresa Preferncia desejada (fabricante): 1. Toshiba/2. Compaq/3. IBM Possuem computadores de grande porte: 1. Sim/2. No Necessitam de notebooks: 1. Sim/2. No 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 preferncia pela Toshiba.
54

12. Foi feita uma estatstica nas 50 principais cidades brasileiras para coletar dados sobre acidentes de trnsito. Foram obtidos os seguintes dados: Cdigo da cidade Estado (RS, SC, PR, SP, RJ, ...) Nmero de veculos de passeio (em 2002) Nmero de acidentes de trnsito com vtimas (em 2002)

Deseja-se saber: a) qual o maior e o menor ndice de acidentes de trnsito e a que cidades pertencem; b) qual a mdia de veculos nas cidades brasileiras; c) qual a mdia de acidentes com vtimas entre as cidades do Estado de Pernambuco. 13. Foi feita uma pesquisa entre os 1000 habitantes de uma regio para coletar os seguintes dados: sexo (1feminino/ 2-masculino), idade e altura. Faa um algoritmo que leia as informaes coletadas e mostre as seguintes informaes: a) mdia da idade do grupo; b) mdia da altura das mulheres; c) mdia da idade dos homens; d) percentual de pessoas com idade entre 18 e 35 anos (inclusive). 14. Foi realizada uma pesquisa de algumas caractersticas fsicas da populao de uma certa regio. 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 indivduos 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 funcionrios, utilizando processamento eletrnico e voc foi contratado, ento faa um algoritmo que:

55

Leia um conjunto de informaes para cada candidato, contendo: nmero de inscrio do candidato, idade, sexo, experincia anterior(1-sim/2-nao) Calcule: Quantidade de candidatos Quantidade de candidatas Mdia de idade dos homens com experincia Percentagem dos homens com mais de 45 anos, entre os homens Quantidade de mulheres com idade inferior a 35 anos e com experincia Menor idade entre as mulheres que j tem experincia no servio

A quantidade de candidatos desconhecida. 16. Escrever um algoritmo que l 5 valores e conta quantos destes valores so negativos, escrevendo esta informao. 17. Construir um algoritmo que calcule a mdia aritmtica de vrios valores inteiros positivos. A quantidade de nmeros desconhecida. 18. Escreva um algoritmo que calcule a mdia dos nmeros digitados pelo usurio, apenas se eles forem pares. A quantidade de nmeros desconhecida. 19. Escrever um algoritmo que leia um nmero n que indica quantos valores devem ser lidos a seguir. Para cada nmero lido, mostre uma tabela contendo o valor lido e o fatorial deste valor. 20. Escrever um algoritmo que leia um nmero no determinado de valores e calcule a mdia aritmtica 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 nmeros desconhecida. 21. Escrever um algoritmo que l um conjunto no determinado de valores, um de cada vez, e escreve o valor lido, seu quadrado, seu cubo e sua raiz quadrada. A quantidade de nmeros desconhecida. 22. Escrever um algoritmo que l um nmero no 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 nmeros desconhecida. 23. Faa um algoritmo que leia uma quantidade no determinada de nmeros positivos. Calcule a
56

quantidade de nmeros pares e mpares, a mdia de valores pares e a mdia geral dos nmeros lidos. A quantidade de nmeros desconhecida. 24. Faa um algoritmo que leia vrios nmeros inteiros e calcule o somatrio dos nmeros negativos. A quantidade de nmeros desconhecida. 25. Faa um algoritmo que leia vrios nmeros inteiros e positivos e calcule o produto dos nmeros pares. A quantidade de nmeros desconhecida. 26. Faa um algoritmo que escreva todos os nmeros entre 1000 a 1999 que dividido por 11 do resto igual a 5. 27. Escrever um algoritmo que calcule e mostre a mdia aritmtica dos nmeros lidos entre 13 e 73. 28. Escrever um algoritmo que gera e escreve os nmeros mpares entre 100 e 200. 29. Faa um algoritmo para imprimir os nmeros pares de 1 a 100. 30. Escrever um algoritmo para ler dois nmeros e imprimir os mltiplos de 3 e os mltiplos de 5 contidos entre estes dois nmeros. 31. Escrever um algoritmo que leia uma quantidade desconhecida de nmeros e conte quantos deles esto 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 varivel N e, para cada um deles, calcule a tabuada de 1 at n. Mostre a tabuada na forma: 1xn=n 2 x n = 2n n x n = n2 34. Escrever um algoritmo que l um nmero no 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 esto no intervalo [10,20] e quantos deles esto fora do intervalo, escrevendo estas informaes.
57

36. Faa um algoritmo que leia dois nmeros inteiros positivos com 5 dgitos cada e gere um terceiro nmero inteiro com 10 dgitos, sendo que estes sejam os dgitos dos dois primeiros intercalados. Exemplo : Nmero_1 = 12345 Nmero_2 = 67890 Nmero_3 = 1627384950 37. Ler 50 notas e imprimir as trs maiores. 38. Construa um algoritmo que imprima a srie abaixo, onde o nmero de termos ser lido. Observe que a srie possui uma lgica na sua formao partindo dos trs termos iniciais (2 - 7 - 3) e atente para o controle do nmero de termos impressos. Srie = 2 - 7 - 3 - 3 - 14 - 5 - 4 - 21 - 7 - 5 - 28 - 9 - 6 - 35 - 11 - 7 - 42 - 13 - . . . 39. Faa um algoritmo para imprimir a srie 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 Homogneos


8.1 Vetor
Formado por um conjunto unidimensional de dados de mesmo tipo (Homogneo) e possuindo nmero fixo de elementos (Esttico). Na declarao dos vetores devemos informar o seu nome, seu tipo (inteiro, real, caracter, ...), e seu tamanho (nmero de elementos). Cada elemento do vetor identificado por um ndice (unidimensional), o qual indica a sua posio no vetor. Declarao: 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; Referncia : NomeDoVetor[ndice] Ex: NOME_ALUNO[3] Quando voc declara uma varivel com os tipos primitivos, alocado na memria, um espao com o nome que voc deu a esta varivel. Na varivel vetor, criado na memria tantos espaos quanto forem
58

o tamanho do Vetor, e cada um levar o mesmo nome, s que indexado. OBS: Os ndices sero sempre do tipo inteiro. Exemplo: Um dado lanado 10 vezes, e a cada lanamento anotado o resultado. Como entrada voc ter o resultado de cada um dos 10 lanamentos. O algoritmo deve encontrar a mdia dos lanamentos, e contar quantos lanamentos esto acima da mdia dos lanamentos. 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 faa leia (lanc[k]); soma_lanc soma_lanc + lanc[k]; fimpara; media soma_lanc/10; escreva (media); para k de 1 at 10 faa se (lanc[k] > media) ento acima_media acima_media+1; fimse; fimpara; escreva (lanamentos acima da mdia = ,acima_media); FIM Sempre que se for estipular um valor final para o vetor preciso colocar um valor que no cause um problema futuro. Deve-se tomar cuidado tambm em no exagerar, pois, como visto ocupa memria.

59

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; lgico: existe; leia(n); para i de 1 ate n faa leia (x[i]); fimpara; existe F; para j de 1 at n-1 faa para i de j+1 at n faa se (x[i] = x[j]) ento existe V; fimse; fimpara; fimpara; se (existe = V) ento escreva (h valor repetido); seno escreva (no h valor repetido); fimse; FIM.

Exerccios Propostos VIII


Faa um algoritmo para: 1. Ler e armazenar um conjunto de 5 nmeros inteiros. 2. Ler um conjunto de nmeros e imprimi-los na ordem inversa da leitura. A quantidade de nmeros tambm ser lida e ser no mximo 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 sero formados pela soma dos elementos de mesmos ndices dos dois vetores lidos.
60

4. Ler um vetor de nmeros e imprimir os nmeros das posies PARES e em seguida os nmeros das posies MPARES. 5. Ler dois vetores e caso tenham tamanhos iguais armazene seus elementos alternadamente em um terceiro vetor. 6. Ler um vetor de nmeros inteiros e imprimir as posies do maior e do menor elemento do vetor. Assuma que no 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 mdia das notas da turma. 8. Ler um vetor de nmeros e inverter a ordem dos elementos desse vetor no prprio vetor. 9. Ler um vetor de nmeros e em seguida ler um conjunto de nmeros(flag=0) e para cada numero lido imprimir o nmero de ocorrncias deste no vetor. 10. Ler um vetor de nmeros e ler um conjunto de nmeros (flag = 0) e para cada nmero lido imprimir se este existe ou no no vetor. 11. Ler dois vetores de nmeros e gerar um terceiro vetor formado pela INTERSECO dos dois vetores lidos. 12. Ler dois vetores de nmeros e gerar um terceiro vetor formado pela DIFERENA dos dois vetores lidos. 13. Ler dois vetores de nmeros e gerar um terceiro vetor formado pela UNIO 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 nmeros e imprimir os nmeros que se repetem nesse vetor. 16. Ler dois vetores ordenados (ordem crescente) de nmeros e gerar um terceiro vetor, tambm ordenado, com os elementos dos vetores lidos. 17. Faa um algoritmo para ler um conjunto N de nmeros e imprimir cada elemento do conjunto e quantas vezes este se repete. O valor de N ser lido. Ex: Nmeros Lidos Resultado 3-4 8-2 5-1 73 3 8 5 3 8 7 3 7 3 7

61

18. Faa um algoritmo para calcular o valor das mensalidades dos alunos. A escola possui 50 alunos e para cada um deles sero informados os seguintes dados: matricula, srie(1-4), se tem irmo na escola (1-sim, 2no). O valor da mensalidade ser calculado pelo programa e depende da srie do aluno e se tem irmo na escola. O aluno receber 20% de desconto na mensalidade se tiver irmo 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 farmcia usando vetores. Cada produto possui os seguintes dados: Cdigo, Tipo (1-Genrico, 2- No Genrico), Laboratrio(1-Bayer, 2- LAFAPE, 3Pfizer), Preo de Custo, Preo de Venda. O preo de venda calculado pelo programa e depende do tipo do produto e do laboratrio. O preo de venda ser o preo de custo acrescido do percentual de lucro de acordo com a tabela abaixo:
Bayer Genrico No Genrico 10% 20% LAFAPE Pfizer 15% 35% 20% 45%

A quantidade de produtos desconhecida. Usar enquanto com flag (cdigo =0). Imprimir todos os dados dos produtos da farmcia em forma de tabela. 20. A Secretaria de Educao quer um algoritmo para fazer um relatrio sobre as escolas da cidade de Recife. Para cada escola so informados os seguintes dados: cdigo da escola, total de alunos matriculados, total de professores, se possui laboratrio de informtica (1-sim ou 1-no), se possui laboratrio de cincias (1-sim ou 2-no). 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 so liberados: R$ 50 Para cada professor so liberados: R$ 400 Se a Escola no tem laboratrio de Informtica so liberados: R$ 10.000 Se a Escola no tem laboratrio de Cincias so liberados: R$ 7.000 Ex: uma escola com 200 alunos, com 15 professores e tem laboratrio de informtica, mas no tem laboratrio de cincias: Verba = 200 x 50 + 400 x 15 + 7000= 10000 + 6000 + 7000 = 23.000 Imprimir um relatrio contendo todos os dados das escolas e o valor que cada uma receber da secretria de educao. Tambm deve ser impresso o seguinte relatrio:
62

Quantidade Total de Alunos nas Escolas Quantidade de escolas sem laboratrios de Informtica Quantidade de escolas com os dois laboratrios (informtica E de cincias) Total de verba liberada pela secretaria

OBS: A quantidade de escola desconhecida. 21. Fazer um algoritmo para a companhia de energia eltrica da cidade. Para cada consumidor so fornecidos os seguintes dados: matrcula do consumidor, tipo do consumidor (1-comercial, 2-industrial, 3residencial), quantidade de KWh consumidos no ms. 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 relatrio contendo os dados do consumidor e o valor que o mesmo deve pagar e no final, imprimir o relatrio estatstico:

Total a ser arrecadado pela empresa de energia; Media de consumo das industrias; Total de consumo das residncias; Quantidade de estabelecimentos comerciais

OBS: Valor de 1 KWh Residncia: R$ 5,00 Comrcio: R$ 3,00 Indstria: R$ 2,00 22. Fazer um algoritmo para um hotel que possui vinte quarto, quinze tipo Standard e cinco tipo Luxo. Para cada hspede sero lidos os seguintes dados: Cdigo, Regio de Origem (1-Nordeste, 2-Sudeste, 3-Sul, 4-Outros), Motivo da Viagem (1-lazer, 2-trabalho, 3-outros), Sexo, Tipo de Quarto Desejado(1Standard, 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 relatrio com os dados de todos os hspedes, alm do relatrio estatstico. O clculo do valor a ser pago pelo hspede segue as regras abaixo: Se o quarto for do tipo 1, a diria custa R$ 100,00. Se o quarto for do tipo 2 a diria custa R$ 130,00. Relatrio Final: o Quantidade de homens em quarto de luxo o Percentual de homens que viajam a trabalho o Quantidade de mulheres provenientes da regio Sudeste o Total arrecadado pelo hotel
63

23. Faa um algoritmo para ler 10 nmeros inteiros, armazenando-os em um vetor. Imprimir os valores digitados e os seguintes resultados: o A soma dos elementos das posies pares o O produto dos elementos das posies impares o O quadrado do terceiro elemento o A diferena do sexto elemento pelo primeiro elemento o O maior valor do vetor

8.2 Matrizes
O raciocnio a mesmo de vetores, ao invs de trabalharmos com um ndice trabalharemos com dois. Declarao: 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;

Referncia : NomeDaMatriz[linha, coluna] Se quisermos atribuir o valor 9, na linha 1, coluna 2, ento: 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 faa para j de 1 at 4 faa leia (m[i, j]); fimpara; fimpara; soma 0; para i de 1 at 4 faa soma soma + m[2,i]; fimpara; escreva (soma =, soma); FIM.
64

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).

Exerccios Propostos IX
Faa um algoritmo para: 1. Ler uma matriz de ordem MxN, onde M e N sero informados pelo usurio 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 prpria 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 nmeros das linhas representam os nmeros dos alunos e cada coluna uma unidade. E imprima o nmero de cada aluno com sua respectiva mdia, a mdia geral de cada perodo e a mdia geral da turma. Ex:
1 2 3 . . . 60 1P 6,0 4,5 0,0 . . . 8,5 2P 7,0 9,5 0,0 . . . 6,0 3P 4,0 5,0 0,0 . . . 4,5

9. Tipos de Dados Heterogneos


J sabemos que um conjunto homogneo de dados composto por variveis do mesmo tipo primitivo; porm, se tivssemos um conjunto em que os elementos no so do mesmo tipo, teramos ento um conjunto heterogneo de dados.
65

9.1 Registro
Uma das principais estruturas de dados o registro. Para exemplificar, imagine uma passagem de nibus, que formada por um conjunto de informaes logicamente relacionadas, porm de tipos diferentes, tais como: nmero da passagem (inteiro), origem e destino (caracter), data (caracter), horrio (caracter), poltrona (inteiro), distncia (real), fumante (lgico), que so subdivises (elementos de conjunto) do registro, tambm chamadas de campos. Logo, um registro composto por campos que so partes que especificam cada uma das informaes. Nmero:___________ De:__________________________________ Data: ____ / _____ / ______ Poltrona:________________ Fumante:____________ Para:__________________________ Horrio: ______ : ______ Distncia:______________________

Declarao tipo identificador = registro tipo: campo1; tipo: campo2; ... tipo: campon; fimregistro; identificador : nomevariavel; Onde: Identificador : representa o nome associado ao tipo registro construdo. Campo1, campo2, campoN: so os nomes associados a cada campo do registro. Da mesma forma que na declarao de vetores e matrizes, primeiramente devemos criar um tipo, para ento declararmos as variveis desse tipo.

66

Exemplo: declarar um registro para uma passaguem e fazer a leitura dos campos. INICIO tipo regpassagem = registro inteiro: nmero, poltrona ; caracter: origem, destino, data, horrio; real: distncia; logico: fumante; fimregistro; regpassagem: passagem; leia(passagem.nmero, passagem.poltrona); leia(passagem.origem, passagem.destino); leia(passagem.data, passagem.horrio); leia(passagem.distncia, passagem.fumante); escreva(passagem.nmero, passagem.poltrona); escreva(passagem.origem, passagem.destino); escreva(passagem.data, passagem.horrio); escreva(passagem.distncia, passagem.fumante); FIM.

9.2 Vetor de Registro


Nas estruturas compostas heterogneas (vetores e matrizes) utilizamos tipos de dados primitivos como sendo os elementos dessas estruturas. Agora utilizaremos como componente dessa estrutura no apenas um tipo primitivo, mas sim os tipos construdos, neste caso os registros. Supondo que quisssemos manter um registro de informaes relativas a passagens rodovirias de todos lugares de um nibus, utilizaramos um registro diferente para cada poltrona, e para agrupar todos eles utilizaramos um conjunto desses registros. Como possumos 44 lugares num nibus, numerados seqencialmente de 1 at 44, podemos, para uni-los, criar um vetor no qual cada posio um elemento de tipo construdo registro (passagem). Como possumos um vetor composto por registros, no podemos declarar esse vetor sem antes ter declarado seus elementos; devemos ento declarar primeiro o tipo construdo registro e depois o vetor.

67

Exemplo: Declarar um vetor de registro e ler as informaes. INICIO tipo regpassagem = registro inteiro: nmero, poltrona ; caracter: origem, destino, data, horrio; real: distncia; logico: fumante; fimregistro; vetpassagem = vetor [1 .. 44] de regpassagem; vetpassagem: vp; inteiro i; para i de 1 ate 44 faca leia (vp[i].nmero); 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.

Exerccios Propostos X
1. Uma determinada biblioteca possui obras de cincias exatas, cincias humanas e cincias biomdicas, totalizando 1.500 volumes, sendo 500 volumes de cada rea. O proprietrio resolveu informatiz-la e para tal agrupou as informaes sobre cada livro do seguinte modo: Cdigo de Catalogao:_____________________________ Doado:__________ Nome da Obra:_____________________________________________________ Nome do Autor:_____________________________________________________ Editora:____________________________ No de pginas:___________________

68

a)Construir um algoritmo que declare tal estrutura e que reuna todas as informaes de todas as obras em trs volumes distintos para cada rea. b) Elabore um trecho de algoritmo que, utilizando como premissa o que foi feito no item a, faa uma consulta s informaes. O usurio fornecer cdigo da obra e sua rea: existindo tal livro, informa seus campos; do contrrio; envia mensagem de aviso. A consulta se repete at que o usurio introduza como cdigo finalizador o nmero -1. c) Idem ao item b, porm o usurio 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 mltipla escolha. Cada prova tem 10 questes e cada questo vale 1 ponto. O primeiro conjunto de dados a ser lido ser o gabarito para a correo da prova. Os outros dados sero os nmeros dos alunos e suas respectivas respostas. A turma possui 30 alunos. O algoritmo dever calcular e imprimir: a) para cada aluno, o seu nmero e nota; b) a porcentagem de aprovao, sabendo-se que a nota mnima de aprovao 7,0; c) a nota que teve maior freqencia absoluta, ou seja, a nota que apareceu maior nmero de vezes.

10. Modularizao
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 espao de memria, aumentando a complexidade do algoritmo, aumentando o tamanho do programa. Para evitar tudo isso, podemos modularizar o programa, isto , criar procedimentos e funes (mdulos) uma vez apenas, e cham-los repetidamente de vrias 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 vrios problemas menores, se necessrio, dividimos novamente em vrios outros problemas menores, resolvendo estes problemas estaremos conseqentemente resolvendo nosso problema inicial. Como exemplo, faremos um algoritmo que imprima o extenso do nmero 1 ou 2.

69

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

O que acontece neste algoritmo o seguinte, os blocos que comeam com a palavra mdulo, so mdulos que somente sero executados se chamados do principal ou outro mdulos do algoritmo. Sendo assim o primeiro comando a ser executado o comando leia, dentro da estrutura de repetio Repita, que ir conhecer o valor da varivel num, o valor da varivel ento testado, se for igual a 1 o mdulo mostra_um chamado, quando isto acontece os comandos que esto contidos dentro do mdulo sao executados. Quando a ultima linha do mdulo executada e encontra-se o comando fimmodulo, a execuo do algoritmo volta exatamente ao comando aps a chamada do mdulo, neste caso, aps a linha mostra_um ou mostra_dois, executado o teste da estrutura de repetio, se num for maior que 2 o algoritmo encerrado, caso contrrio, o algoritmo executado novamente a partir do comando leia.

10.1 Escopo de Variveis


Escopo de variveis seria o mesmo que domnio sobre variveis. Quando uma varivel declarada no incio do algoritmo, dizemos que ela global, isto , todos os mdulos do algoritmo reconhecem esta varivel. Quando uma varivel declarada dentro de um mdulo, dizemos que ela local, isto , somente
70

este mdulo reconhece a varivel. Variveis declaradas no cabealho do mdulo (parmetros), so variveis locais deste mdulo.

10.2 Parmetros
Agora imagine se pudssemos mandar mensagens aos mdulos, isto , se pudssemos passar parmetros aos mdulos, desta forma eles ganhariam muito mais poder e generalizao. Vamos usar o exemplo anterior e ver como podemos diminuir o nmero de mdulos. 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 legvel, conseguimos isto com a passagem de parmetros para o mdulo.

Exerccios Propostos XI
1. Faa um algoritmo para uma escola usando mdulos e vetor de registro. O algoritmo dever ter as seguintes funes:
modulo Principal Faculdade Santa Maria Opes: 1-Inserir novo aluno 2-Listagem de aluno 3-Relatrio estatstico 0-Sair Entre com a opo: modulo de Cadastro Faculdade Santa Maria Inserir Novo Aluno Matricula: Nota 1: Nota 2: Inserir outro(1-sim,2-no)? Modulo de Listagem Faculdade Santa Maria Listagem Geral Mat Nota 1 Nota 2 xxx xxxx xxxx Media xxx

tecle enter para voltar para o menu

71

modulo do Relatrio Estatstico Faculdade Santa Maria Relatrio Estatstico Total de Alunos: Media da Turma: Quantidade de Aprovados: Quantidade de Reprovados: tecle enter para voltar para o menu

72

Anda mungkin juga menyukai