Sei sulla pagina 1di 58

APOSTILA DE LGICA DE PROGRAMAO I

ndice
ndice.............................................................................................................................2 Introduo......................................................................................................................4 Cronograma de aulas....................................................................................................5 Introduo ao Algoritmo................................................................................................6 Descrio Narrativa...................................................................................................6 Fluxograma Convencional.........................................................................................6 Pseudocdigo............................................................................................................7 Dados............................................................................................................................8 Numricos..................................................................................................................8 Dados Lgicos...........................................................................................................9 Dados literais ou caracter..........................................................................................9 Dados caracter.........................................................................................................10 Exerccios................................................................................................................10 Variveis......................................................................................................................12 Exerccios................................................................................................................13 Expresses..................................................................................................................14 Expresses aritmticas............................................................................................14 Expresses Lgicas.................................................................................................15 Expresses Literais..................................................................................................18 Exerccios................................................................................................................18 Estrutura de um algoritmo...........................................................................................21 Nome do algoritmo...................................................................................................21 Declarando variveis...............................................................................................21 Corpo do algoritmo..................................................................................................21 Instrues Primitivas...................................................................................................22 Instruo Primitiva de Atribuio.............................................................................22 Instruo Primitiva de Sada de Dados...................................................................22 Instruo Primitiva de Entrada de Dados................................................................24 Exerccios................................................................................................................25 Exemplos.....................................................................................................................26 Exerccios................................................................................................................29 Armazenado literais.....................................................................................................32 Exerccios................................................................................................................32 Estruturas de deciso..................................................................................................33 Estruturas de deciso do Tipo Se...........................................................................33 Exemplos.................................................................................................................34 Exerccios................................................................................................................36 Estruturas de deciso do Tipo Escolha...................................................................38 Exemplos.................................................................................................................40 Exerccios................................................................................................................40 Estruturas de Repetio..............................................................................................42 Laos Contados.......................................................................................................42 Exemplos.................................................................................................................43 Exerccios................................................................................................................45 Laos Condicionais..................................................................................................47 Enquanto..................................................................................................................47 Exemplos.................................................................................................................47 Exerccios................................................................................................................49
2

Repita.......................................................................................................................50 Exemplos.................................................................................................................50 Exerccios................................................................................................................51 Carto Bandeira..........................................................................................................52 Exerccios................................................................................................................53 Trabalhando com literais.............................................................................................55 Exemplos.................................................................................................................55 Exerccios................................................................................................................56 Apndice A..................................................................................................................57

Introduo

Cronograma de aulas

Introduo ao Algoritmo

Um algoritmo pode ser definido como sendo uma seqncia de passos, logicamente colocados, que resolvem um problema. Existem vrias formas de se representar um algoritmo:

Descrio Narrativa
Nesta forma de representao os algoritmos so expressos diretamente em linguagem natural. Como exemplo, tem-se o algoritmo seguinte: Receita de Bolo: Misture os Ingredientes Unte a forma com manteiga Despeje a mistura na forma Se houver coco ralado Ento despeje sobre a mistura Leve a forma ao forno Enquanto no corar Deixe a forma no forno Retire do forno Deixe esfriar

Fluxograma Convencional
uma representao grfica de algoritmos onde formas geomtricas diferentes implicam aes (instrues, comandos) distintos. Tal propriedade facilita o entendimento das idias contidas nos algoritmos e justifica sua popularidade. Esta forma aproximadamente intermediria a descrio narrativa e ao pseudocdigo, pois menos imprecisa que a primeira e, no entanto, no se

preocupa com detalhes de implementao do programa, como o tipo das variveis usadas. Ha vrios padres que definem as formas geomtricas das figuras que devem ser usadas para representar cada um dos diversos tipos de instrues; contudo, nenhum deles se sobressai com relao aos demais no que diz respeito aceitao por parte dos usurios. Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nvel fsico da implementao do algoritmo. Por exemplo, figuras geomtricas diferentes so adotadas para representar operaes de sada de dados realizadas em dispositivos distintos, como uma fita magntica ou um monitor de vdeo.

Pseudocdigo
Antes de utilizarmos uma linguagem de computador, necessrio organizar as aes a serem tomadas pela mquina de forma organizada e lgica, sem nos atermos s regras rgidas da Sintaxe de uma linguagem. Para isto utilizaremos uma forma de escrever tais aes, conhecida como algoritmo, ou pseudocdigo. Esta forma de representao de algoritmos rica em detalhes, como a definio dos tipos das variveis usadas no algoritmo e, por assemelhar-se bastante forma em que os programas so escritos, encontra muita aceitao. Na verdade, esta representao suficientemente geral para permitir que a traduo de um algoritmo nela representada para uma linguagem de programao especfica seja praticamente direta.

Dados
Semelhante ao que acontece em uma calculadora, por exemplo, um sistema de computador manipula informaes, como os nmeros que digitamos na calculadora. Em um sistema de computador estas informaes so classificadas em tipos dependendo da forma que so formadas, a essas informaes passaremos a cham-las de DADOS. Devemos fazer essa distino pelo motivo de a memria do computador trabalhar de forma diferente com dados diferentes. Os tipos de dados existentes so:

Numricos
Inteiros: So aos valores numricos (positivos ou negativos) que no possuem casas decimais. So dados do tipo inteiro: Idade de uma pessoa (no podemos dizer que algum tenha 20,3 anos); Dia (no existe o dia 15,2);

Exemplos: 24 0 -12 nmero inteiro positivo; nmero inteiro; nmero inteiro negativo;

Reais: So aos valores numricos (positivos ou negativos) que podero possuir casas decimais. So dados do tipo real: Peso de uma pessoa (algum pode ter tranqilamente ter 53,2 kg); Comprimento de um terreno (uma rea pode ter 74,2 m);

Exemplos: 24.01 144.0 -13.3 0.0 nmero real positivo com duas casas decimais; nmero real positivo com uma casa decimal; nmero real negativo com uma casa decimal; nmero real com uma casa decimal;

Como forma de melhor representarmos os nmeros reais, os trabalharemos sempre com as casas decimais, independente de ser um valor zero.
8

Por exemplo: 1,2 Valor real; 2,0 Valor real; 2 Valor inteiro;

Dados Lgicos
A existncia deste tipo de dado , de certo modo, um reflexo da maneira como os computadores funcionam. Muitas vezes, estes tipos de dados so chamados de booleanos. O tipo de dados lgico e usado para representar dois nicos valores lgicos possveis: verdadeiro e falso. E comum encontrar-se em outras referncias outros tipos de pares de valores lgicos como sim/no, 1/0, true/false. Nos algoritmos apresentados neste texto os valores lgicos sero

representados conforme abaixo, inclusive com os pontos: .V. .F. - valor lgico verdadeiro; - valor lgico falso;

Dados literais ou caracter


So caracterizadas como tipo literal s seqncias contendo letras, nmeros e smbolos especiais. Uma seqncia de caracteres deve ser indicada entre aspas duplas (). Este tipo de dado tambm pode ser conhecido como alfanumrico, string ou cadeia. Exemplos: "QUAL ?" "" "qUaL ?!$" "AbCdefC Hi" "1-2+3=" "0" - literal de comprimento 6; - literal de comprimento 1; - literal de comprimento 8; - literal de comprimento 10; - literal de comprimento 6; - literal de comprimento 1 ;

Note que, por exemplo, "1.2" representa um dado do tipo literal de comprimento 3, constitudo pelos caracteres "1","." e "2", diferindo de 1.2 que e um dado do tipo real.
9

Dados caracter
So dados semelhantes aos literais diferindo que este aceita apenas um nico caractere. Um dado do tipo caracter deve ser indicado entre aspas simples () Exemplo: Para representar o sexo de uma pessoa podemos utilizar apenas uma letra (M ou F);

Exerccios
1) Classifique os dados a seguir conforme o seu tipo. I - Inteiros R - Reais L - Literais B - Lgicos (ou Booleanos) N - Aqueles que a principio no podemos definir o tipo C - Caracter a) b) c) d) e) f) g) h) i) j) k) l) m) n) o) p) q) r) s) t) u) ( )0 ( )1 ( ) 0.0 ( ) -1 ( ) -32 ( ) "Fim de Questo" ( ) -0.001 ( ) +0.05 ( ) .V. ( ) 'a' ( ) abc ()V ( )+3257 ( )F ( ) '+3257. ( ).F ( ) +36 ( ) -0.0 ( ) 'V' ( ) '.F.' ( ).F.

2) Classifique os dados a seguir conforme o seu tipo.

I - Inteiros
10

R - Reais L - Literais B - Lgicos (ou Booleanos) C - Caracter a) b) c) d) e) f) g) ( ( ( ( ( ( ( ) Nome ) Idade ) Sexo ) Peso ) Data ) CPF ) Altura

11

Variveis
Vimos no capitulo anterior que em um algoritmo trabalhamos dados de vrios tipos, agora precisamos saber como iremos trabalhar com ela. Quando algum dado processado pelo computador ele ser armazenado na memria, mas no podemos colocar l de qualquer forma, pois corremos o perigo de quando precisar dela no a encontrar. Imaginamos uma grande estante com muitas gavetas onde guardamos nossas coisas. Quando precisarmos de algo ser complicado de acharmos, mas se de alguma forma identificarmos cada gaveta (com uma etiqueta, por exemplo) tudo fica mais fcil, pois poderemos ir direto no local correto sem precisar procurar por tudo. Com a memria funciona de forma semelhante, daremos nomes para reas onde iremos guardar as informaes e quando precisarmos saberemos onde ela se encontra. A essa rea da memria damos o nome de Varivel. Para utilizarmos essas variveis devemos definir que tipo de dado ser armazenado nela (inteiro, real, literal, caracter ou lgico), pois uma varivel do tipo inteiro no pode, por exemplo, armazenar um valor lgico. Devemos tambm dar um nome para essa varivel, nome esse que possui algumas regras para ser formado: a) Comear com uma letra; b) Os demais caracteres podem ser letras, nmeros ou _; c) No podemos colocar como nome variveis palavras utilizadas pelo algoritmo como comandos como escreva, leia, var, etc.. d) Procure dar nomes sugestivos para suas variveis, fica muito mais fcil saber o que guardamos na varivel chamada Idade, j em uma varivel chamada PARALELEPIPEDO fica complicado. Exemplos: Salrio 1ano Ano1 A casa Correto Errado (no comeou com uma letra) Correto Errado (contm o caractere branco)
12

Sal/hora Sal_hora _desconto

Errado (contm o caractere "/") Correto Errado (no comeou com uma letra)

Exerccios
1) Na lista a seguir, assinale com V os nomes de variveis vlidos e com I os invlidos. a) b) c) d) e) f) g) h) i) j) k) l) m) n) o) p) q) ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) ABC ) 123A )_ ) A123 ) ABCDE ) 3ABC ) _A ) Aa ) _1 ) _a123 ) Etc... )A ) Acd1 )1 ) A0123 ) B312 ) Variavel

13

Expresses
O conceito de expresso em termos computacionais esta intimamente ligado ao conceito de expresso (ou frmula) matemtica, onde um conjunto de variveis e constantes numricas relacionam-se, por meio de operadores, compondo uma formula que, uma vez avaliada, resulta num valor. Dependendo desse valor resultante, definimos 3 tipos de expresses: Aritmticas; Literais; Lgicas;

Expresses aritmticas
Expresses aritmticas so aquelas cujo resultado da avaliao do tipo numrico, seja inteiro ou real. Somente o uso de operadores aritmticos e variveis numricas permitido em expresses deste tipo. Os operadores aritmticos relacionados s operaes aritmticas bsicas esto sumarizados na tabela. Operador + * / + Div Resto Operao Adio Subtrao Multiplicao Diviso Manuteno de sinal Inverso de sinal Parte inteira da diviso Resto da diviso

As variveis usadas em expresses aritmticas podem somente ser do tipo inteiro ou real. Resultados de expresses aritmticas: + * + *

Inteiro Inteiro

Inteiro Real

= Inteiro = Real

14

Real Real Inteiro Inteiro Real Real Inteiro Inteiro

+ * + *

Inteiro Real

= Real = Real

Inteiro Real / Inteiro Real DIV Inteiro RESTO Inteiro

= Real = Inteiro = Inteiro

Repare pela tabela acima que sempre que tivermos um valor real na expresso, o resultado ser real, e em uma diviso o resultado sempre ser real.

Expresses Lgicas
Expresses lgicas so aquelas cujo resultado da avaliao e um valor lgico. (.V. ou .F.). Os operadores lgicos so mostrados na tabela. Operador .OU. .E. .NO Prioridade 3 2 1

Para exemplificar o uso de operadores lgicos, a tabela verdade a seguir apresenta duas variveis lgicas A e B. Uma vez que cada varivel lgica possui somente dois valores possveis, ento h exatamente quatro combinaes para estes valores, razo pela qual a tabela tem quatro linhas. As diversas colunas contm os resultados das operaes lgicas sobre as combinaes possveis dos valores das variveis A e B. A .F. .F. .V. .V. B .F. .V. .F. .V. .NO. A .NO.B A .OU. B .V. .V. .F. .V. .F. .V. .F. .V. .V. .F. .F. .V. A .E. B .F. .F. .F. .V.

- O operador lgico .NO. sempre inverte o valor de seu operando. Ex.: .NO..V. =.F. e .NO. .F. = .V.; - Para que a operao lgica .OU. tenha resultado verdadeiro basta que um de
15

seus operandos seja verdadeiro; Para melhor visualizar este efeito, podemos imaginar que as variveis lgicas A e B so como dois interruptores ligados em paralelo num circuito de acionamento de uma lmpada.

Neste exemplo, um interruptor fechado (e que, portanto, permite a passagem de corrente eltrica) representa uma varivel lgica cujo valor verdadeiro (.V.). Por outro lado, um interruptor aberto representa uma varivel lgica com valor falso (.F.). No circuito, para que a lmpada acenda basta que um dos interruptores esteja fechado. Analogamente, para que a operao lgica .OU. tenha resultado verdadeiro (.V.) basta que apenas um dos operandos possua valor lgico .V. Por outro lado, para que a operao lgica .OU. possua resultado .F. (para que a lmpada esteja apagada) e necessrio que os dois operandos possuam valor .F. (e necessrio que os dois interruptores estejam abertos). Para que a operao lgica .E. tenha resultado verdadeiro necessrio que seus dois operandos tenham valor lgico .V.. Em termos de um circuito eltrico, uma operao lgica .E. pode ser representada por dois interruptores ligados em srie.

Nota-se no circuito acima que a lmpada somente estar acessa quando os dois interruptores (A e B) estiverem fechados. Por outro lado, basta que um dos interruptores (A ou B) esteja aberto para que a lmpada no acenda. Da mesma forma, a operao lgica .E. s resulta em .V. quando A e B forem iguais a .V.,
16

ainda, para que a operao lgica .E. resulte em .F. basta que um de seus operadores seja .F.. Ha, ainda, outro tipo de operador que pode aparecer em operaes lgicas os operadores relacionais, mostrados na tabela. Operador = <> < <= > >= Estes operadores so somente Comparao Igual Diferente Menor Menor ou igual Maior Maior ou igual usados quando se deseja efetuar

comparaes. Comparaes s podem ser feitas entre objetos de mesma natureza, isto e, variveis do mesmo tipo de dado. O resultado de uma comparao sempre um valor lgico. O uso de operadores relacionais possibilita o aparecimento em expresses lgicas de variveis de outros tipos de dados que no o lgico. Exemplo: sejam A e B variveis lgicas, X e Y variveis reais, e R. S e T variveis literais, com os respectivos valores: A = .V. , B = .F., X = 2.5, Y = 5.0, R = "JOS", S = "JOO" e T = "JOOZINHO" A tabela seguinte contm algumas expresses lgicas contendo estas variveis. Expresso A .OU. B A .E. B . NO. A X=Y X = (Y/2) R=S S=T R<>S R>S S>T (( A .OU. B) .OU. (XY) .OU. (ST)) Resultado .V. .F. .F. .F. .V. .F. .F. .V. .V. .F. .V.
17

Um resultado interessante de ser observado e o da expresso S > T. ou seja, "JOO" > "JOOZINHO", cujo resultado falso. A primeira pergunta que surge deve ser com relao maneira como feita tal comparao. Para tal, deve-se recorrer tabela de cdigos ASCII. Tal tabela estabelece para cada caractere um cdigo diferente. De acordo com este cdigo e possvel comparar dois dados de tipo literal, comparando os caracteres dos mesmos da esquerda para a direita. Ao comparar os literais "JOS" e "JOO", verificamos que seus dois primeiros caracteres (J e o) so iguais, mas que "S" maior que "A", segundo a tabela ASCII. Portanto "JOS" e maior que "JOO". Estes tipos de comparao so muito teis na ordenao alfabtica de variveis literais. Outra forma imaginar as duas palavras em um dicionrio, a primeira viria primeiro que a segunda, ento a segunda maior.

Expresses Literais
Expresses literais so aquelas cujo resultado da avaliao um valor literal. Este tipo de expresso bem menos freqente que os anteriores. Os tipos de operadores existentes variam de uma linguagem de programao para outra, no havendo uma padronizao. Para que o assunto no passe em branco, considere-se como exemplo a operao de concatenao de strings: tome-se duas strings e acrescenta-se (concatena-se) a segunda delas ao final da primeira. Em algumas linguagens esta operao representada pelo smbolo (operador) (+). Por exemplo, a concatenao das strings "REFRIGERA" e "DOR" e representada por "REFRIGERA" + "DOR" e o resultado de sue avaliao e "REFRIGERADOR".

Exerccios
1) Dada a declarao de variveis VAR A, B, C X, Y, Z NOME, RUA L1, L2 : inteiro : real : literal : lgico

Classifique as expresses seguintes de acordo com o tipo de dado do resultado de sua avaliao:
18

I - Inteiros R - Reais L - Literais B - Lgicos (ou Booleanos) N - Aqueles que a principio no podemos definir o tipo a) ( ) A + B + C b) ( ) A + B + Z c) ( ) A > Y d) ( ) NOME > RUA e) ( ) NOME + RUA f) ( ) L1.OU. L2 g) ( ) A > B = L1 h) ( ) X + Y / Z i) ( ) (RUA <> NOME) .E. (. NO. (A = B)) j) ( ) A + B / C k) ( ) X + Z / A l) ( ) A + X / Z m) ( ) A + Z / A n) ( ) A > B 2) Para as mesmas variveis declaradas no exerccio anterior, s quais so dados os valores seguintes: A=1 B=2 C=3 L2 = .F. Determine o resultado da avaliao das expresses abaixo: a) A + C / B b) A + B / C c) C / B / A d) X * B e) NOME + RUA f) NOME = RUA
19

X = 2.0 Y = 10.0 Z = -1.0

NOME = X RUA = Y L1 = .V.

g) L1 .OU. L2 h) (L1 .E. (.NO. L2)) i) (L2 .E. (.NO. L1)) j) (L1 .E. (.NO. L2)) .OU. (L2 .E. (.NO. L1)) k) X > Y .E. C <= B l) (C - 3 * A) < (X + 2 * Z) 3) Indique o resultado das seguintes expresses: a) 5/2 b) 5 DIV 2 c) 5 RESTO 2 d) (200 DIV 10) RESTO 4 e) 5 > 7 f) (7<8) .OU. (9<8) g) (((10 DIV 2) RESTO 6)>5) .E. (3<(2 RESTO 2)) .E. (.NO.(2<3)) 4) Crie tabelas verdade para as expresses lgicas a seguir: a) (A .OU. B).E.(.NO. A) b) (A .OU. B).E.(.NO. (A .OU. B)) c) (A .E. (NO .B.))

20

Estrutura de um algoritmo
Como comentado anteriormente, na construo de um algoritmo devemos seguir regras, alm disso, devemos seguir a estrutura dele. Algoritmo <nomedoalgoritmo> Var <Variveis> inicio <comandos> fim.

Nome do algoritmo
Na estrutura acima temos na primeira linha o nome do algoritmo. Para darmos esse nome devemos utilizar as mesmas regras utilizadas para nomes de variveis.

Declarando variveis
Na declarao Var devemos declarar as variveis (aquelas reas de memria, lembram?). Para declararmos deveremos utilizar a seguinte sintaxe: Nome da varivel: Tipo Exemplos: var Nome: Literal Idade: inteiro Peso, altura: Real Rua: Literal Reparem que no terceiro exemplo foram declaradas duas variveis de uma nica vez, isso pode ser feito com vrias variveis desde que elas sejam do mesmo tipo.

Corpo do algoritmo
Entre os comando Inicio e Fim ser desenvolvido nosso algoritmo. Nele todo a seqncia lgica para a resoluo do problema.
21

Instrues Primitivas
Como o prprio nome diz, instrues primitivas so os comandos bsicos que efetuam tarefas essenciais para a operao dos computadores, como entrada e sada de dados (comunicao com o usurio e com os dispositivos perifricos), e movimentao dos mesmos na memria. Estes tipos de instruo esto presentes na absoluta maioria das linguagens de programao. De fato, um programa que no utilize nenhuma instruo primitiva - como as que sero definidas neste captulo - incapaz de se comunicar com o mundo exterior e, portanto no tem utilidade alguma.

Instruo Primitiva de Atribuio


A instruo primitiva de atribuio, ou simplesmente atribuio, a principal maneira de se armazenar uma informao numa varivel. Sua sintaxe : <nome_de_varivel> <expresso> Exemplo: ALGORITMO Teste Var Nmero: INTEIRO Incio Nmero 10 Fim. O Exemplo acima nos informa que: a) Foi definida uma varivel, a qual demos o Nome de Nmero, e informamos que esta varivel, ou posio de memria, s poder aceitar dados que sejam inteiros. b) Atribumos varivel Nmero o valor 10

Instruo Primitiva de Sada de Dados


O algoritmo anterior no prtico, pois, apesar do computador ter calculado um determinado valor ou armazenado o mesmo na varivel Nmero, este valor ficou retido na memria do computador e no foi mostrado ao usurio, o maior interessado no mesmo. As instrues primitivas de sada de dados so o meio pela qual
22

informaes contidas na memria dos computadores so colocadas nos dispositivos de sada, pare que o usurio posse apreci-las. Ha duas sintaxes possveis pare esta instruo: Escreva <lista_de_variveis> ou Escreva <literal> Algoritmo EXEMPLO Var Preo_unit Preo_tot : real Quant : inteiro Incio Preo_unit 5.0 Quant 10 Preo_tot Preo_unit * Quant Escreva Preo_tot Fim. Algoritmo EXEMPLO Var Preo_unit Preo_tot : real Quant : inteiro Incio Preo_unit 5.0 Quant 10 Preo_tot Preo_unit * Quant Escreva Resultado , Preo_tot Fim. Algoritmo EXEMPLO Var Preo_unit Preo_tot : real Quant : inteiro Incio Preo_unit 5.0 Quant 10 Preo_tot Preo_unit * Quant Escreva Resposta Escreva Preo_tot Fim. Daqui por diante, Escreva ser considerada uma palavra reservada no mais poder ser utilizada como nome de varivel, de modo que toda vez que for encontrada em algoritmos ser identificada como um comando de sada de dados. Uma lista_de_variveis um conjunto de nomes de variveis separados por
23

vrgulas. Um literal simplesmente um dado do tipo literal delimita por aspas, e aparecer exatamente como foi escrito.

Instruo Primitiva de Entrada de Dados


O algoritmo anterior ainda carece de uma melhoria essencial. Toda vez que ele executado, o mesmo valor calculado, j que os valores das variveis Preo_unit e Quant permanecem inalterados. Seria interessante que estes valores pudessem ser fornecidos ao computador pelo usurio do programa toda vez que o programa fosse executado, pare que o usurio tivesse um maior controle sobre o valor calculado. A instruo primitiva de entrada de dados foi criada para suprir esta necessidade. Sua sintaxe : Leia <lista_de_variveis> 1 2 3 4 5 6 7 8 9 10 11 12 Algoritmo EXEMPLO Var Preo_unit Preo_tot : real Quant : inteiro Incio Escreva Informe valor unitrio: Leia Preo_unit Escreva Quantidade: Leia Quant Preo_tot Preo_unit * Quant Escreva Preo_tot Fim. Neste exemplo as linhas foram numeradas para um melhor entendimento. A execuo do algoritmo acima inicializado pela declarao das variveis (linhas 2 4), onde elas sero criadas em memria. Depois disso que a execuo propriamente dita ir iniciar. Linha 6 - Uma mensagem enviada para o vdeo. Linha 7 Neste momento a execuo parada esperando uma resposta do usurio, j que o comando leia pede que seja digitado algo e pressionado enter a seguir o dado informado ser armazenado na varivel Preo_unit. Linha 10 Um calculo realizado e atribudo a varivel Preo_tot. Linha 11 mostrado o valor armazenado da Preo_tot. Um erro que muitos tem na construo de algoritmos associar os comandos Escreva e Leia, ou seja, acham que toda vez que tivermos um comando Escreva
24

temos que ter um Leia, e vice-versa. Cuidado ambos os comandos so independentes um do outro.

Exerccios
1) Faa um algoritmo/programa para atribuir a variveis as seguintes informaes: a) 12345.0 b) 123456 c) -1122 d) 10 e) .V. f) 12345605 2) No seguinte algoritmo existem erros, encontre e comente-os. Algoritmo teste var Maria: Literal Idade: Inteiro Letra: Literal Maria: Real Inicio Idade 23 Idade 678 Idade letra Letra ABC Letra A Letra 2 Fim. 3) Qual a diferena entre as seguintes atribuies? a) b) Letra Nome 'A' Joo Joo

Letra A Nome

25

Exemplos
Neste capitulo sero mostrados alguns exemplos para melhor continuidade do contedo. Antes de tentar resolver qualquer algoritmo voc deve: Ler o enunciado e tentar entende-lo; Procurar descobrir quais as informaes que o usurio possui e quais ele quer receber como resposta. Alm disso, no adianta saber todos os comandos do algoritmo ou de uma linguagem se no sabemos como usa-lo. a) Faa um algoritmo que leia o cdigo e o nome de uma pessoa Algoritmo um Var Cod: inteiro Nome: Literal Inicio Escreva Cdigo: Leia Cod Escreva Informe nome: Leia Nome Fim b) Faa um algoritmo que leia um numero e multiplique pelo numero seguinte a ele. Algoritmo dois Var N1, N2, N3: Real Inicio Escreva Informe Nmero Leia N1 N2N1+1 N3N2 * N1
26

Escreva Resultado: , N3 Fim O exemplo acima tambm pode ser resolvido da seguinte maneira. Algoritmo dois Var N1, N3: Real Inicio Escreva Informe Nmero Leia N1 N3(N1+1) * N1 Escreva Resultado: , N3 Fim Repare nos parnteses, caso eles no existissem a multiplicao seria feita primeiro, tornando a resposta incorreta. c) Um cliente comprou em uma loja dois produtos (A e B). O usurio dever entrar com o preo unitrio e quantidade dos produtos. Ao final, mostrar o valor a ser pago e o valor do desconto dado (17% de desconto). Algoritmo tres Var P1, P2, Q1, Q2, T1, T2: Real Inicio Escreva Primeiro preo: Leia P1 Escreva Segundo preo: Leia P2 Escreva Primeira qtde: Leia Q1 Escreva Segunda qtde: Leia Q2 T1 P1 * Q1 + P2 * Q2 T2 T1 * 0.17 Escreva Total: , T1
27

Escreva Total do desconto: , T2 Fim d) Faa um algoritmo para calcular a comisso do vendedor de dois produtos. O usurio entra com o preo unitrio, quantidade dos produtos e comisso. Ao final, mostrar o total das vendas e a comisso que o vendedor ganhou. Algoritmo quatro Var P1, P2, Q1, Q2, T1, T2, C: Real Inicio Escreva Primeiro preo: Leia P1 Escreva Segundo preo: Leia P2 Escreva Primeira qtde: Leia Q1 Escreva Segunda qtde: Leia Q2 Escreva Comisso: Leia C T1 P1 * Q1 + P2 * Q2 T2 T1 * (C/100) Escreva Total: , T1 Escreva Total da comisso: , T2 Fim Note que no podemos trabalhar diretamente com as percentagens em um algoritmo. Para realizarmos deveremos imaginar como faramos um calculo desse tipo caso no haja a tecla % na mesma. Exemplos: a) Temos um valor A e queremos adicionar 10%; X A * 1.1 b) Temos um valor A e queremos adicionar uma percentagem B; X A * (1+B/100) c) Temos um valor A e queremos retirar 10%;
28

X A * 0.9 d) Temos um valor A e queremos retirar uma percentagem B; X A * (1-B/100) Para entender esses exemplos apresentados poderemos utilizar uma regra de 3 da matemtica Para o exemplo A seria a seguinte: 100% 1 110% X 100 X=110 x=1.1 Para o exemplo C seria a seguinte: 100% 1 100% - B% X 100X = 100 B X=1-B/100

Exerccios
1) Faa um algoritmo/programa para ler as seguintes informaes de uma pessoa: Nome, Idade, Sexo, Peso, Telefone. 2) Faa um algoritmo/programa para fazer o clculo do quadrado de um nmero, ou seja, o produto de um nmero por si mesmo. 3) Escreva um algoritmo/programa para calcular a mdia entre dois nmeros quaisquer. 4) Escreva um algoritmo/programa pare calcular o valor de y na seguinte funo y= 3x + 2. 5) Faa um algoritmo/programa para ler a base e a altura de um tringulo. Em seguida, escreva a rea do mesmo. Obs.: rea = ( Base * Altura ) / 2 6) Dado um valor em graus Fahrenheit transforme-o para graus Celsius (lembrese que a frmula para transformar um valor dado em graus Celsius para graus Fahrenheit a seguinte): C= ( F 32) * 5 9

7) Dado um valor de hora, minuto e segundo, faa um algoritmo/programa que transforme em segundos todas estas informaes e mostre este resultado no vdeo.

29

8) Escreva um algoritmo/programa pare calcular o consumo mdio de um automvel (media em Km/l), dado que so conhecidos a distncia total percorrida e o volume de combustvel consumido pare percorr-la. 9) Dado nome e trs (3) notas de um aluno, onde as notas tm os respectivos pesos: 1, 2 e 3, faa um algoritmo/programa que mostre o nome e a mdia do aluno. Lembre-se que a frmula para calcular a mdia : Mdia =

( N1*1 + N 2 * 2 + N 3 * 3) (1 + 2 + 3)

10)Dado nome, as trs (3) notas de um aluno, e o peso de cada uma das notas, faa um algoritmo/programa que mostre o nome e a mdia do aluno. 11)Dado nome, preo de compra e o preo de venda de uma mercadoria, faa um algoritmo/programa que mostre o nome e o lucro obtido com a venda da mesma. 12)Dado nome do vendedor, quantidade de produtos que o mesmo vendeu durante o ms e o preo unitrio do produto, faa um algoritmo/programa que mostre nome do vendedor e o valor total obtido com as vendas. 13)Dado nome do vendedor, quantidade de produtos que o mesmo vendeu durante o ms, preo unitrio do produto e o percentual de comisso pago para o vendedor, faa um algoritmo/programa que mostre nome do vendedor, o total obtido com as vendas e o valor de comisso a ser pago. 14)Um caixa eletrnico possui apenas notas de 1, 10 e 100. Um cliente digita um determinado valor neste caixa eletrnico e espera receber uma determinada quantidade de notas. Faa o algoritmo/programa para calcular a quantidade de notas de cada um dos tipos acima citados que o cliente dever receber (voc poder facilmente resolver este exerccio se usar os operadores DIV e RESTO). Exemplo: Valor digitado: 348 Notas de 100 Notas de 10 Notas de 1 : : : 3 4 8

15)Ler as seguintes informaes de um funcionrio: Nome, idade cargo e o seu salrio bruto. Considere: a) O salrio bruto teve um reajuste de 38%. b) O Salrio total descontado em 15% E escrever os seguintes resultados: Escreva nome, idade e cargo. Escreva o salrio bruto. Escreva o salrio lquido. 16)Uma empresa tem para um determinado funcionrio uma ficha contendo o nome, nmero de horas trabalhadas e o n0 de dependentes de um funcionrio.
30

Considerando que: a) A empresa paga 12 reais por hora e 40 reais por dependentes. b) Sobre o salrio so feito descontos de 8,5% para o INSS e 5% para IR. Leia o Nome, nmero de horas trabalhadas e nmero de dependentes de um funcionrio. Aps a leitura, escreva o nome, salrio bruto, os valores descontados para cada tipo de imposto e finalmente qual o salrio lquido do funcionrio. 17)O preo de um automvel calculado pela soma do preo de fbrica com o preo dos impostos (45% do preo de fbrica) e a percentagem do revendedor (28% do preo de fbrica). Leia o nome do automvel e o preo de fbrica e escreva o nome do automvel e o preo final. 18)Pea para o usurio digitar: Nome, salrio bruto e o percentual de desconto de um funcionrio qualquer. Aps, imprima no vdeo o nome digitado, salrio bruto e o salrio lquido. 19)Pea para o usurio digitar: Nome, salrio bruto e o percentual de acrscimo de um funcionrio qualquer. Aps, imprima no vdeo o nome digitado, salrio bruto e o salrio lquido. 20)Pea para o usurio digitar: Nome, quantidade de horas trabalhadas, o valor pago pr hora de trabalho e o percentual de desconto de um funcionrio qualquer. Aps, imprima no vdeo o nome digitado, salrio bruto e o salrio lquido. 21)Em uma fbrica trabalham uma quantidade X de homens e uma quantidade Y de mulheres. Pea para o usurio digitar estas quantidades, e aps a entrada destes dados imprima: Total de pessoas que trabalham nesta fbrica, o percentual de homens e o percentual de mulheres com relao ao total de funcionrios.

31

Armazenado literais
Uma informao do tipo literal nada mais do que um conjunto de caracteres que podem ser letras, dgitos ou smbolos especiais. Exemplificando, a informao do tipo literal "BANANA" possui seis caracteres e, portanto, seis posies so utilizadas. Estes caracteres tero suas posies numeradas de forma continua e partir de 0. Posio 0 1 2 3 4 5 Informao B A N A N A

A figura mostra o caso em que se armazena a literal "BANANA". Tendo isso em mente, poderemos acessar quaisquer um dos elementos. Para isso utilizaremos: nome da varivel + [ +posio desejada + ] Algoritmo um Var P1: Literal P2: Inteiro Inicio Escreva Informe Palavra: Leia P1 Escreva Informe posio: Leia P2 Escreva Caracter: , P1[P2] Fim

Exerccios
1) Ler um LITERAL em forma de data. Exemplo: 26/09/95 e escrever o dia, ms e ano desta data todos em separados. 2) Faa um programa que solicite ao usurio a data do dia na forma DD/MM/AA. Imprima a data na tela no seguinte formato: AA/MM/DD.

32

Estruturas de deciso
Neste tipo de estrutura o fluxo de instrues a ser seguido escolhido em funo do resultado da avaliao de uma ou mais condies. Uma condio uma expresso lgica. A classificao das estruturas de deciso feita de acordo com o nmero de condies que devem ser testadas pare que se decide qual o caminho a ser seguido. Segundo esta classificao temos dois tipos de estruturas de deciso: Se Escolha

Estruturas de deciso do Tipo Se


Nesta estrutura uma nica condio (expresso lgica) avaliada. Se o resultado desta avaliao for verdadeiro (.V.), ento um determinado conjunto de instrues (comando composto) executado. Caso contrrio, ou seja, quando resultado da avaliao for falso (.F.), um comando diferente executado. A execuo do algoritmo prosseguir necessariamente por um deles. Esta escolha e feita em funo do resultado da expresso: um dos caminhos rotulado com (.V.) e ser seguido quando a condio for verdadeira o outro e rotulado com (.F.) e ser seguido quando a condio for falsa.

Se <Condio> Ento <Comando_Composto_1> Seno <Comando_Composto_1> Fimse A semntica desta construo a seguinte: a condio avaliada, se o resultado for verdadeiro, ento o comando_composto_1 executado. Ao trmino de sua execuo o fluxo do algoritmo prossegue pela instruo seguinte a construo, ou seja, o primeiro comando aps o Fimse. Nos casos em que a condio e avaliada como falsa, o comando_composto_2 executado e, ao
33

trmino do mesmo, o fluxo de execuo prossegue pela primeira instruo seguinte ao Fimse. H casos particulares e muito comuns desta construo, onde o comando_composto_2 e um conjunto vazio de instrues. Neste caso, a poro relativa ao Seno pode ser omitida, resumindo a sintaxe da construo forma mostrada a seguir.

Se <Condio> Ento <Comando_Composto_1> Fimse A semntica desta construo e a seguinte: no caso da condio seja verdadeira, o comando_composto_1 executado e, aps seu trmino, o fluxo de execuo prossegue pela prxima instruo aps o Fimse. Quando a condio e falso, o fluxo de execuo prossegue normalmente pela primeira instruo aps o Fimse.

Exemplos
a) Faa um algoritmo onde o usurio ir digitar a idade de uma pessoa, aps de uma mensagem informando se a mesma maior ou menor de idade. Algoritmo um Var Idade: inteiro Incio Escreva Informe idade: Leia Idade Se Idade >= 18 Ento Escreva "Maior de idade" Seno Escreva "Menor de idade" Fimse
34

Fim. b) Em uma loja de CDs, cada item possui um estoque e tambm um estoque mnimo (caso o estoque estiver abaixo dever ser reposto o estoque). Faa um algoritmo que leia o estoque e o estoque mnimo de um determinado CD aps mostre no vdeo se existe ou no a necessidade de reposio, no case de sim, dever avisar a quantidade necessria para regularizar o estoque. Algoritmo dois Var E1, E2, QN: Real Incio Escreva Estoque: Leia E1 Escreva Estoque mnimo: Leia E2 Se E1>= E2 Ento Escreva "No existe necessidade de reposio" Seno QNE1-E2 Escreva So necessrios ,QN, CDs para regularizar o estoque Fimse Fim. c) Uma papelaria faz cpias de documentos (xerox) pelos seguintes valores: a. De 1 a 10 cpias, R$ 0.10; b. De 11 a 50 cpias, R$ 0.08; c. De 51 a 100 cpias, R$ 0.06; d. Acima de 100 cpias, R$ 0.05; Sendo que o usurio informar a quantidade de cpias e o valor da encadernao (todas cpias iro ser encadernadas juntas), mostre no vdeo o valor a receber pela papelaria. Algoritmo Tres Var Qc: inteiro E, V :Real Incio Escreva Qtde de cpias: Leia QC Escreva Valor encadernao: Leia E Se QC <=10 Ento VQC * 0.1 + E Seno Se QC<= 50 Ento VQC * 0.08 + E Seno Se QC<= 100 Ento
35

VQC * 0.06 + E Seno VQC * 0.05 + E FimSe FimSe FimSe Escreva O valor a ser pago :,V Fim.

Exerccios
1) Dado o preo de uma mercadoria, d um desconto de 10% se este preo for superior a R$10,00. 2) Escreva um algoritmo/programa para determinar o maior entre dois nmeros reais dados. 3) Faa um algoritmo/programa que leia os valores A, B, C, e diga se a soma de A + B menor que C. 4) Faa um algoritmo/programa que leia dois valores inteiros A e B, e se os valores forem iguais dever se somar os dois, caso contrrio multiplique A por B. 5) Faa um algoritmo/programa que leia o nome e as trs notas de uma disciplina de um aluno e ao final escreva o nome do aluno, sua mdia e se ele foi aprovado a mdia 8. 6) Escreva um algoritmo/programa para determinar se uma pessoa maior ou menor de idade. 7) Dado a quantidade de homens e mulheres em uma fbrica, mostre no vdeo qual destes dois grupos possui a maior quantidade de representantes. Imagine que as quantidades sejam diferentes. 8) Dado o nome e a mdia de dois alunos, imprima no vdeo o nome e a mdia do aluno que possui a maior mdia (considere que as mdias sejam diferentes). 9) Dado um nmero qualquer, imprimir uma mensagem no vdeo informando se o mesmo positivo ou negativo. Imagine que o nmero seja diferente de zero. 10)Dado um nmero inteiro positivo, imprimir uma mensagem no vdeo informando se o mesmo par ou mpar (utilize o operador RESTO para resolver esta questo). 11)Uma empresa decide dar um aumento de 30% aos funcionrios cujo salrio inferior a 5.000. Escreva um algoritmo/programa que possa ser utilizado para efetuar o clculo do salrio reajustado de um funcionrio. 12)Faa um algoritmo/programa que leia 3 nmeros inteiros e escreva o menor deles. 13)Faa um algoritmo/programa que leia 3 nmeros inteiros e escreva o maior deles.
36

14)Dado nome e idade de uma pessoa, mostre no vdeo o seu nome e a seguinte mensagem: a. Criana, se a idade for at 12 anos. b. Adolescente se a idade estiver entre 12 e 20 anos c. Adulta se a idade for igual ou superior a 20 anos 15)Dado o nome e a mdia de trs alunos, imprima no vdeo o nome e a mdia do aluno que possui a maior mdia (considere que as mdias sejam diferentes). 16)Uma empresa decide dar um reajuste a seus funcionrios de acordo com os critrios seguintes, faa um algoritmo que leia o salrio e mostre a novo valor: a. 50% para aqueles que ganham menos de 3.000; b. 20% para aqueles que ganham entre 3.000 e 10.000; c. 15% para os demais. 17)Dados trs valores distintos, fazer um algoritmo/programa que, aps a leitura destes dados coloque-os na tela em ordem crescente. 18)Dados trs valores distintos, fazer um algoritmo/programa que, aps a leitura destes dados coloque-os na tela em ordem decrescente. 19)Dado o preo de uma mercadoria e a sua categoria (A ou B) d um desconto em seu preo de acordo com a seguinte regra: d. 5%: se for da categoria A e o preo for superior ou igual a $100,00 e. 8%: se for da categoria A e o preo for inferior a $100,00 f. 10%: se for da categoria B e o preo for superior ou igual a $50,00 g. 12%: se for da categoria B e o preo for inferior a $50,00 20)Dados trs valores X, Y, Z, verificar se eles podem ser os comprimentos dos lados de um tringulo, e se forem, verificar se um tringulo eqiltero, issceles ou escaleno. Se eles no formarem um tringulo, escrever uma mensagem. Antes da elaborao do algoritmo/programa, torna-se necessria reviso de algumas propriedades e definies. h. O comprimento de cada lado de um tringulo menor do que a soma dos comprimentos dos outros dois lados. i. Chama-se tringulo eqiltero aquele que tem os comprimentos dos trs lados iguais, j. Chama-se tringulo issceles aquele que tem os comprimentos de dois lados iguais. k. Chama-se tringulo escaleno aquele que tem os comprimentos dos trs lados diferentes. 21)Uma locadora de filmes possui trs categorias: A romance,
37

B Drama, C Terror, Cada uma destas categorias, tm uma determinada quantidade de filmes em catlogo. Sabe-se que a locadora adquiriu uma determinada quantidade de filmes, todos de uma mesma categoria. Para isto tem-se: A quantidade comprada e a categoria (A,B ou C) a qual estes filmes se enquadram. Mostre no vdeo as quantidades de filmes que ficaro em catlogo, de cada categoria, aps a compra ter sido feita. 22)Uma loja dividiu suas mercadorias dentro de categorias indicadas pr cores: Azul, Verde e Vermelho. As cores tm pr finalidade indicar um determinado desconto especial que o cliente ir pagar. Tais descontos so os seguintes: Azul, a mercadoria tem 50% de desconto sobre o preo de venda. Verde, a mercadoria tem 30% de desconto sobre o preo de venda. Vermelho, a mercadoria tem 20% de desconto sobre o preo de venda.

Para enquadrar uma mercadoria dentro de uma das categorias acima, a loja utiliza a seguinte frmula: X= PV PC *100 PC

Onde PC = Preo de compra e PV = preo de venda A relao de enquadramento dada pela seguinte regra: Grupo azul, se X for menor que 10. Grupo verde, se X for de 10 at 25. Grupo vermelho se X for maior que 25

Dado Nome da mercadoria, preo de compra e o preo de venda, imprima no vdeo o nome da mercadoria, grupo a qual ela pertence e o preo que o cliente dever pagar, j com o desconto. 23)Para cada funcionrio de uma loja sabe-se: nmero de horas trabalhadas, valor pago pela loja pr hora de trabalho, nome do funcionrio e o seu tempo de servio. A loja ir dar um abono para os funcionrios de acordo com o seguinte critrio: Abono de 5% se o tempo de servio for inferior a cinco anos. Abono de 10% se o tempo de servio for de 5 a 10 anos.

Abono de 15% se o tempo de servio for superior a 10 anos. Mostre no vdeo o nome de cada funcionrio, salrio bruto, tempo de servio e o salrio lquido (com o abono).

Estruturas de deciso do Tipo Escolha


Este tipo de estrutura uma generalizao da estrutura Se, onde somente uma condio era avaliada e dois caminhos podiam ser seguidos. Na estrutura de deciso do tipo Escolha pode haver uma ou mais condies a serem testadas e um
38

comando composto diferente associado a cada uma destas.

Escolha Caso <Condio_1> <Comando_composto_1> Caso <Condio_2> <Comando_composto_2> ... Caso <Condio_n> <Comando_composto_n> Seno <Comando_composto_s> Fimescolha Seu funcionamento o seguinte: ao entrar-se numa construo do tipo Escolha, a Condio_1 testada: se for verdadeira, o comando_composto_1 e
39

executado e, aps seu trmino, o fluxo de execuo prossegue pela primeira instruo aps o final da construo (Fimescolha); se a Condio 1 for falso, a condio_2 testada: se esta for verdadeira, o comando_composto_2 e executado e, ao seu trmino, a execuo prossegue normalmente pela instruo seguinte ao Fim escolha. O mesmo raciocnio e estendido a todas as condies da construo. No caso em que todas as condies so avaliadas como falsas, o Comando_composto_s (correspondente ao Seno da construo) e executado. O teste a ser realizado dever ser sempre de igualdade, utilizando apenas variveis do tipo Caracter ou Inteiro e em todos os testes a serem apenas uma varivel ser usada.

Exemplos
Algoritmo Exemplo2 Var Salrio, Sal_reaj: real Categoria: inteiro Incio Escreva Salrio Leia Salrio Escreva Categoria Leia Categoria Escolha Caso Categoria = 1 Sal_reaj 1.5 * Salrio Caso Categoria = 2 Sal_reaj 1.3 * Salrio Seno Sal_reaj 1.1 * Salrio Fimescolha Escreva Salrio Reajustado = ", Sal_reaj Fim. Um caso particular desta construo e aquele em que o comando_composto_s no contm nenhuma instruo. Isto ocorre nas situaes em que no se deseja efetuar nenhuma ao quando todas as condies testadas so falsas. Assim, pode-se dispensar o uso do Seno na construo como acontece tambm na construo Se.

Exerccios
1) Faa um algoritmo/programa que leia um nmero que represente um determinado ms do ano. Aps a leitura escreva por extenso qual o ms lido. Caso o nmero digitado no esteja na faixa de 1..12 escreva uma mensagem informando o usurio do erro da digitao. 2) Uma empresa ir dar um aumento de salrio aos seus funcionrios de acordo com a categoria de cada empregado. O aumento seguir a seguinte regra:
40

a) Funcionrios das categorias A ganharo 10% de aumento sobre o salrio. b) Funcionrios das categorias B ganharo 15% de aumento sobre o salrio. c) Funcionrios das categorias C ganharo 25% de aumento sobre o salrio d) Funcionrios das categorias D ganharo 35% de aumento sobre o salrio. e) Funcionrios das categorias demais ganharo 50% de aumento sobre o salrio. Faa um algoritmo/programa que escreva Nome, categoria e salrio reajustado de cada Empregado. 3) Faa um algoritmo/programa que leia 2 nmeros reais, e pea a operao a ser realizada com eles : 1-Soma, 2- Subtrao, 3- Multiplicao, 4- Diviso.

41

Estruturas de Repetio
So muito comuns as situaes em que se deseja repetir um determinado trecho de um programa um certo nmero de vezes. Por exemplo, pode-se citar o caso em que se deseja realizar um mesmo processamento para conjuntos de dados diferentes. Exemplo: processamento de folha de pagamentos de uma empresa, em que o mesmo clculo e efetuado pare cada um dos funcionrios. As estruturas de repetio so muitas vezes chamadas de Laos ou, tambm, de Loops. A classificao das estruturas de repetio e feita de acordo com o conhecimento prvio do nmero de vezes que o conjunto de comandos ser executado. Assim, os laos dividem-se em: laos contados, quando se conhece previamente quantas vezes o comando composto no interior da construo ser executado; laos condicionais, quando no se conhece de antemo o nmero de vezes que o conjunto de comandos no interior do lao ser repetido, pelo fato de o mesmo estar amarrado a uma condio sujeita a modificao pelas instrues do interior do lao.

Laos Contados
Os laos contados so teis quando se conhece previamente o nmero de vezes que se deseja executar um determinado conjunto de comandos, ento, este tipo de lao nada mais e que uma estrutura dotada de mecanismos para contar o nmero de vezes que o corpo do lao (ou seja, o comando composto em seu interior) e executado. Para <var> de <Incio> at <final> incr <inc> faa <Comando_composto> Fimpara A semntica do lao contado a seguinte: no Incio da execuo da construo o valor <Incio> atribudo a varivel <var>. A seguir, o valor varivel <var> comparado com o valor <final>. Se <var> for maior que <final>, ento o comando composto no executado e a execuo do algoritmo prossegue pelo primeiro comando seguinte ao Fimpara. Por outro lado, se valor de <var> for menor ou igual a <final>, ento o comando composto interior da construo e executado e, ao final do mesmo, o valor e adicionada varivel <var>. Feito isso, retorna-se a comparao entre <var> e <final> repete-se o processo at que <var> tenha um valor maior que <final>, quando o lao finalizado e a execuo do algoritmo prossegue pela instruo imediatamente seguinte ao Fimpara. Algumas observaes interessantes devem ser feitas: <var> necessariamente uma varivel do tipo inteiro, uma vez que seu valor alterado a cada iterao (volta do lao); <Incio>, <fim> e <inc> podem ser constantes ou variveis. <inc> o valor que adicionado a varivel <var> ao final de cada iterao do lao. H linguagens de programao que permitem que seja atribudo um valor negativo, de modo que o valor da varivel <var> diminui a cada iterao. Neste caso, deve-se atentar necessidade de inverso do sinal da comparao (de > para <) que e feito cada volta do lao, pare seu correto funcionamento.
42

Na grande maioria dos casos <inc> tem o valor 1 (incremento unitrio). Portanto, admite-se a omisso do trecho incr de <inc> da sintaxe do comando Para e, quando isto ocorre, assume-se um incremento de 1.

Exemplos
1) Ler um valor e listar os nmeros a partir de um. Algoritmo Um Var A, I : Inteiro Inicio Escreva Digite um valor Leia A Para i de 1 at A faa Escreva I FimPara Fim. 2) Somar os nmeros de um at um limite informado pelo usurio. Algoritmo Dois Var A, I, Soma : Inteiro Inicio Escreva Digite um valor Leia A Soma0 Para I de 1 at A faa Soma soma + I FimPara Escreva Soma Fim. 3) Somar uma quantidade de nmeros, informada pelo usurio, lidos pelo teclado. Algoritmo Tres Var A, I, Soma : Inteiro Inicio Soma0 Para I de 1 at 10 faa Escreva Digite um valor Leia A Soma soma + A FimPara Escreva Soma
43

Fim. 4) Ler 10 nmeros e somar os que so pares. Algoritmo Quatro Var A, I, Soma : Inteiro Inicio Soma0 Para I de 1 at 10 faa Escreva Digite um valor Leia A Se (A resto 2 ) = 0 ento Soma soma + A FimSe FimPara Escreva Soma Fim. 5) Ler um valor N e calcular: Algoritmo Cinco Var N, I, Soma : Inteiro Inicio Soma0 Escreva Digite um valor Leia N Para I de 1 at N faa Soma soma + ( 1 / I ) FimPara Escreva Soma Fim. 6) Ler um valor N e calcular Algoritmo Seis Var N, I, Soma : Inteiro Inicio Soma0 Escreva Digite um valor Leia N Para I de 1 at N faa Se (I Resto 2) = 0 ento Soma soma - ( 1 / I ) Seno Soma soma + ( 1 / I )
44

FimSe FimPara Escreva Soma Fim. 7) Ler nome e idade de 10 pessoas e informar o mais velho deles. Algoritmo Sete Var I, Idade, Maior : Inteiro Nome, NomeMaior: Literal Inicio Maior0 Para I de 1 at 10 faa Escreva Digite o nome Leia Nome Escreva Digite a idade Leia Idade Se Idade > Maior ento NomeMaior Nome Maior Idade FimSe FimPara Escreva Mais Velho , NomeMaior Escreva Idade mais velho ,Maior Fim.

Exerccios
1) Faa um algoritmo/programa que calcule: Y = 1 + 2 + 3 + 4 + 5 + ... + 1000. 2) Faa um algoritmo/programa que calcule: Y = 1 + 3 + 5 + 7 + 9 + ...+ 999. 3) Pea para o usurio digitar um nmero inteiro positivo qualquer, digamos N. Aps calcule N!. 4) Pea para o usurio digitar dois valores inteiros positivos, digamos A e B. Aps calcule A elevado ao expoente B. 5) Calcule Y na formula abaixo. Y = 2 - 4 + 6 - 8 + ... N 6) Um cliente comprou em uma loja N mercadorias, das quais conhecido: Preo e categoria. A categoria possibilita um desconto especial de acordo com a seguinte tabela: a) Categoria A: desconto de 5% no preo da mercadoria b) Categoria B: desconto de 10% no preo da mercadoria c) Categoria C: desconto de 15% no preo da mercadoria Faa um algoritmo que mostre ao final o valor total desta compra.
45

7) Uma empresa possui N vendedores que ganham por comisso sobre cada produto vendido. Cada vendedor em um determinado ms vendeu X produtos, onde cada produto tem preo e quantidade. A empresa deseja obter um relatrio com o Nome, o total de vendas e o valor a ser pago a cada vendedor. A comisso paga pela empresa de 30% sobre o valor de cada produto vendido. 8) Dado um nmero indeterminado de palavras, sendo que cada palavra possui um tamanho indeterminado, o qual dever ser lido pelo teclado, faa um algoritmo/programa que mostre a palavra informa de forma inversa. 9) Uma sala de aula possui N alunos, dos quais conhecido: Nome, cidade onde mora e idade. Faa um algoritmo/programa que imprima: a) A quantidade de alunos que residem em TUBARO b) A quantidade de alunos que residem em CRICIUMA c) A quantidade de alunos que possuem idade inferior a 17 anos d) O nome dos alunos que morem em JAGUARUNA e que tenha idade entre 10 e 15 anos 10)Uma empresa possui N funcionrios dos quais so conhecidos seus nomes e idades. Faa um algoritmo/programa que imprima o nome e a idade da pessoa mais idosa e a mais nova. Considere que no existem pessoas com idades iguais. 11)Uma empresa possui uma srie de N funcionrios, dos quais conhecido: Nome, Idade e Sexo. Faa um algoritmo/programa que imprima: a) O nome e idade do homem mais jovem; b) O nome e idade da mulher mais idosa; c) O percentual de homens, em relao ao total de funcionrios, existentes na fbrica. d) O percentual de mulheres, em relao ao total de funcionrios, existentes na fbrica. 12)Faa um algoritmo/programa para cada formula a seguir:

a)

y=
y=
Y=

x! x! x! + + ... + x +1 x + 2 x+x

b)

1 1 1 + + ... + ( x 1)! ( x 2)! ( x N )!


1 2 3 4 5 6 n + + + + + + ... + 2 3 4 5 6 7 n +1 1 1 1 1 + 2 + 3 + ... + n 1 x x x x
46

c) d) e)

Y = 1 + (2 3) + 4 + (5 6) + 7 + (8 9) + ... Y=

Laos Condicionais
Laos condicionais so aqueles cujo conjunto de comandos em seu interior e executado ate que uma determinada condio seja satisfeita. Ao contrrio do que acontece nos laos contados, nos laos condicionais no se sabe de antemo quantas vezes o corpo do lao ser executado. As construes que implementam laos condicionais mais comuns nas linguagens de programao modernas so: Enquanto Repita

Enquanto
Sua semntica a seguinte: ao Incio da construo Enquanto a condio testada. Se seu resultado for falso, ento o comando composto no seu interior no e executado e a execuo prossegue normalmente pela instruo seguinte ao Fimenquanto. Se a condio for verdadeira o comando composto executado e ao seu trmino retorna-se ao teste da condio. Assim, o processo acima ser repetido enquanto a condio testada for verdadeira. Quando for falsa, o fluxo de execuo prosseguir normalmente pelas instrues posteriores ao Fimenquanto. Enquanto <condio> Faa <comando composto> Fimenquanto Uma vez dentro do corpo do lao, a execuo somente abandonar o mesmo quando a condio for falsa. O usurio deste tipo de construo deve estar atento a necessidade de que em algum momento a condio dever ser avaliada como falsa. Caso contrrio, o programa permanecer indefinidamente no interior do lao, o que e conhecido como Lao infinito ou Looping.

Exemplos
1) Ler uma quantidade indeterminada de nmeros e ao final mostrar o somatrio. Algoritmo um Var op: literal num, soma: real Inicio Soma 0 Op s Enquanto (op = S) .ou. (op = s) faa Escreva informe o numero para calculo Leia num Soma soma + num Escreva deseja continuar? (s/n)
47

Leia op Fimenquanto Escreva soma fim 2) Ler vrios nmeros para calcular o fatorial. Algoritmo dois Var op: literal I, tot: inteiro Inicio Ops Enquanto (op = S) .ou. (op = s) faa Escreva informe o numero para calculo Leia num Tot1 Para i de 1 at num faa Tot tot * i Fimpara Escreva tot Escreva deseja continuar? (s/n) Leia op Fimenquanto Fim 3) Calcular a rea de 50 tringulos de tamanhos diferentes. Algoritmo tres Var base, altura, area: real Quant: inteiro Inicio Quant 1 Enquanto quant < 50 faa Escreva leia a base Leia base Escreva leia a altura Leia altura rea base * altura Escreva quant, tringulo ,rea Quant quant + 1 Fimenquanto Fim 4) Calcular uma quantidade de nmeros seqenciais iniciados por 1 at que o somatrio seja igual ou superior a 200.

48

Algoritmo quatro Var Soma, num: inteiro Inicio Soma 0 Num 1 Enquanto soma < 200 faa Soma soma + num Num num + 1 Fimenquanto Escreva soma Escreva num Fim 5) Calcular o total de uma compra de uma quantidade indeterminada de produtos. Algoritmo cinco Var Op: literal Valor, quant, tot: real Inicio Op s Tot 0 Enquanto (op = S) .ou. (op = s) faa Escreva valor produto Leia valor Escreva quant produto Leia quant Tot tot + valor * quant Escreva deseja continuar? (s/n) Leia op Fimenquanto Escreva tot Fim

Exerccios
1) Faa um algoritmo/programa para ler o Nome, idade e sexo de um nmero indeterminado de alunos. Ao final escreva o total de alunos lidos. 2) Faa um algoritmo/programa para somar os restos da diviso por 3 de 200 nmeros. 3) Faa um algoritmo/programa para calcular a rea de N quadrilteros. Frmula: rea = Lado * Lado. 4) Faa um algoritmo/programa para calcular a rea de N Crculos. Frmula: rea = * raio * 2, sendo = 3,141592. 5) Faa um algoritmo/programa para ler N nmeros inteiros e ao final escrever sua mdia.
49

6) Uma empresa que possui X funcionrios precisa saber a mdia de seus salrios. Faa um algoritmo/programa para ler a quantidade de funcionrios e o salrio de cada um e escrever a mdia dos salrios. 7) Faa um algoritmo/programa para: a. Leia um valor X e um valor N. b. Calcular: Y = 2X - 4X + 6X - 8X + 10X - NX. 8) Faa um algoritmo/programa para ler um valor X e um Valor N. Aps, calcule a seguinte expresso: Y=

( X + 1) ( X + 2) ( X + 3)
1! + 2! + 3!

+...+

( X + N)
N!

9) Fazer um algoritmo/programa que calcule escreva o valor de S onde: 1 3 5 7 99 S = + + + +...+ 1 2 3 4 50 10)Fazer um algoritmo/programa que calcule escreva o valor de S onde: 1 2 3 4 5 10 S= + + ... 1 4 9 16 25 100

Repita
A estrutura de repetio Repita funciona semelhante estrutura Enquanto, a diferena entre elas a posio do teste lgico na estrutura, na estrutura Enquanto o teste lgico era logo no inicio, onde dependendo da situao o contedo do lao poderia no ser executado. J na estrutura Repita o teste realizado no final do lao, sendo que pelo menos uma vez o contedo ser executado. Repita <comando composto> Enquanto <condio>

Exemplos
1) Ler uma quantidade indeterminada de nmeros e ao final mostrar o somatrio. Algoritmo um Var op: literal num, soma: real Inicio Soma 0 Repita Escreva informe o numero para calculo Leia num Soma soma + num
50

Escreva deseja continuar? (s/n) Leia op Enquanto (op = S) .ou. (op = s) Escreva soma Fim 2) Ler vrios nmeros para calcular o fatorial. Algoritmo dois Var op: literal I, tot: inteiro Inicio Repita Escreva informe o numero para calculo Leia num Tot1 Para i de 1 at num faa Tot tot * i Fimpara Escreva tot Escreva deseja continuar? (s/n) Leia op Enquanto (op = S) .ou. (op = s) Fim 3) Calcular a rea de 50 tringulos de tamanhos diferentes. Algoritmo tres Var base, altura, area: real Quant: inteiro Inicio Quant 0 Repita Escreva leia a base Leia base Escreva leia a altura Leia altura rea base * altura Escreva quant, tringulo ,rea Quant quant + 1 Enquanto quant < 50 faa Fim

Exerccios
Como forma de exercitar a estrutura de repetio Repita resolva novamente a lista de exerccios anterior (estrutura Enquanto).
51

Carto Bandeira
Para melhor compreenso desta tcnica mostramos primeiro o exemplo a seguir j mostrado em captulos anteriores: Algoritmo cinco Var Op: literal Valor, quant, tot: real Inicio Op s Tot 0 Enquanto (op = S) .ou. (op = s) faa Escreva valor produto Leia valor Escreva quant produto Leia quant Tot tot + valor * quant Escreva deseja continuar? (s/n) Leia op Fimenquanto Escreva tot Fim Nesta forma de trabalho alm das informaes pedidas pelo sistema (valor e quantidade) necessria uma outra, a opo do usurio. Na utilizao do carto bandeira essa terceira no necessria, mas sim uma das informaes do sistema ser trabalhado em um teste lgico. Para refazermos novamente o exemplo acima, primeiro devemos saber em que ordem os dados sero pedidos pelo usurio, no nosso caso primeiro valor depois quantidade, assim utilizaremos o valor no carto bandeira. Sendo assim, o exemplo passara ficara da seguinte forma:

52

Algoritmo cinco Var Op: literal Valor, quant, tot: real Inicio Tot 0 Escreva valor produto Leia valor Enquanto (valor>=0) faa Escreva quant produto Leia quant Tot tot + valor * quant Escreva valor produto Leia valor Fimenquanto Escreva tot Fim Na execuo do algoritmo acima a informao valor do produto pedida ao usurio por duas vezes, pois no momento que for digitado um valor negativo para a varivel sinal de que no existe mais nenhuma informao a ser digitada.

Exerccios
1) Dado um nmero indeterminado de funcionrios, onde so fornecidos o Nome, nmero de dependentes e o nmero de horas trabalhadas. Pede-se que seja impresso, para cada funcionrio, o seu Nome, salrio bruto, salrio lquido e o valor descontado. A empresa, paga R$ 25,00 por hora de trabalho, e R$ 125,55 por dependente, e ainda faz um desconto de 12% sobre o salrio bruto. Pede-se ainda que seja impresso o total de funcionrios da empresa, o total gasto com salrios, e o total descontado. Utilize carto bandeira. 2) Escreva um algoritmo/programa para calcular o reajuste salarial de uma empresa que possui vrios funcionrios (Utilize carto bandeira), de acordo com os seguintes critrios: Os funcionrios com salrio inferior a 1.000,00 devem ter um reajuste de 40%; Os funcionrios com salrio entre 1.000,00 (inclusive) e 3.000,00 (inclusive) devem ter um reajuste de 30%; Os funcionrios com salrio superior a 3.000,00 devem ter um reajuste de 20%. 3) Dado uma relao de N alunos (Utilize carto bandeira), cada um possuindo a mesma quantidade Q de notas, faa um algoritmo/programa que mostre: a) b) 7.0) c) 2.0) Nome e mdia dos alunos Quantidade de alunos aprovados (mdia para aprovao: >= Quantidade de alunos reprovados (mdia para reprovao: <=
53

d) Quantidade de alunos em recuperao (mdia de recuperao: 2 < mdia < 7.0) 4) Uma empresa possui uma srie de N funcionrios (Utilize carto bandeira), dos quais conhecido: Nome, Idade e Sexo. Faa um algoritmo/programa que imprima: a) b) c) A mdia da idade dos homens; A mdia da idade das mulheres; A mdia da idade das pessoas com mais de 18 anos;

54

Trabalhando com literais


Em algoritmo no temos nenhum comando que nos informe a quantidade de caracteres existentes em um literal, o que pode tornar alguns problemas sem uma possvel soluo. Para a resoluo deste problema utilizamos um mtodo que ajuda bastante, que a colocao de um $ ao final deste literal, assim poderemos fazer a anlise caracter a caractere e quando for encontrado o $ porque chegamos ao final.

Exemplos
1) Dado uma seqncia de caracteres qualquer (digitada pelo usurio) terminada pelo caractere $, faa um algoritmo que retire qualquer ocorrncia de vogais. Algoritmo um Var P, P1: literal Q: Inteiro Inicio Escreva Palavra: Leia P PP+$ P1 Q0 Enquanto (P[Q]<>$) faa Se P[Q] <>A .e. P[Q] <>E .e. P[Q] <>I .e. P[Q] <>O .e. P[Q] <>U .e. P[Q] <>a .e. P[Q] <>e .e. P[Q] <>i .e. P[Q] <>o .e. P[Q] <>u ento P1P1+P[Q] FimSe QQ +1 Fimenquanto Escreva P1 Fim 2) Dado uma seqncia de caracteres qualquer terminada pelo caracter $ (imagine que o usurio digitou este caractere), faa um algoritmo/programa que imprima no vdeo a quantidade de caracteres existentes, excetuando-se o caracter $. Algoritmo um Var P: literal Q: Inteiro Inicio Escreva Palavra: Leia P PP+$ Q0
55

Enquanto (P[Q]<>$) faa QQ +1 Fimenquanto Escreva P1 Fim

Exerccios
1) Dado uma quantidade indeterminada de palavras, sendo que as mesmas sempre terminam com o caractere $, escreva o tamanho de cada uma das mesmas (o sinal de $ no deve ser considerado na contagem). 2) Dado uma seqncia de caracteres qualquer terminada pelo caracter $ (imagine que o usurio digitou este caracter), faa um algoritmo/programa que copie uma determinada quantidade Q de caracteres desta seqncia de caracteres. Imagine que a cpia inicie pelo 1 caracter da seqncia de caracteres. 3) Dado uma seqncia de caracteres qualquer terminada pelo caracter $ (imagine que o usurio digitou este caractere), faa um algoritmo/programa que transforme todos os caracteres da seqncia de caracteres para maisculo. 4) Dado uma seqncia de caracteres qualquer terminada pelo caracter $ (imagine que o usurio digitou este caractere), faa um algoritmo/programa que mostre no vdeo uma mensagem informando ao usurio se a palavra digitada palndrome ou no. Obs; uma palavra palndrome quando lida de trs para frente fica igual a original, exemplos: ASA, MIRIM. 5) Dado uma seqncia de caracteres qualquer terminada pelo caracter $ (imagine que o usurio digitou este caracter), faa um algoritmo/programa que imprima no vdeo a quantidade de vogais existentes. 6) Dado uma seqncia de caracteres qualquer terminada pelo caracter $ (imagine que o usurio digitou este caracter), faa um algoritmo/programa que retire qualquer ocorrncia do caracter espao em branco.

56

Apndice A
Aps construirmos, como poderemos garantir que ele est correto? Isso muito difcil de termos certeza, pois ainda no existe (pelo menos nunca ouvi falar) de uma espcie de compilador de algoritmos. Mas para termos uma idia, o que podemos fazer uma tcnica chamada de Teste de Mesa. O Teste de Mesa consiste em listarmos, em forma de uma tabela, todas as variveis existentes no algoritmo uma ao lado da outra e abaixo dela irmos colocando os valores delas durante a execuo imaginria do algoritmo. Ai pergunta-se: e as informaes que so pedidas ao usurio? Para essas informaes deveremos simular valores que foram digitados para o usurio. Vamos a um exemplo simples: 1 2 3 4 5 6 7 8 9 10 11 12 Algoritmo EXEMPLO Var Preo_unit Preo_tot : real Quant : inteiro Incio Escreva Informe valor unitrio: Leia Preo_unit Escreva Quantidade: Leia Quant Preo_tot Preo_unit * Quant Escreva Preo_tot Fim. Neste exemplo temos 3 variveis que esto listadas a seguir: Preo_unit 5 Preo_tot 15 Quant 3

Na execuo imaginaria que fizemos o seguinte: 1- Aparece na tela a mensagem da linha 6; 2- O usurio digita um valor pedido na linha 7, simulamos que o valor tenha sido 5 conforme no exemplo; 3- Aparece na tela a mensagem da linha 8; 4- O usurio digita um valor pedido na linha 9, simulamos que o valor tenha sido 3 conforme no exemplo; 5- feito o calculo da expresso da linha 10 com os valores informados pelo usurio, onde o resultado armazenado na varivel indicada. 6- A parece a mensagem da linha 11 com a resposta, no nosso caso, pelos valores simulados, a resposta dever ser 15. Este exemplo apresentado bem simples, vamos a um mais complexo: 1 2 3 4 Algoritmo cinco Var Valor, quant, tot: real Inicio
57

5 6 7 8 9 10 11 12 13 14 15 16

Tot 0 Escreva valor produto Leia valor Enquanto (valor>=0) faa Escreva quant produto Leia quant Tot tot + valor * quant Escreva valor produto Leia valor Fimenquanto Escreva tot Fim Valor 5 2 3 -1 quant 3 2 1 Tot 0 15 19 22

Como neste exemplo as variveis trocam de valores constantementes, os novos valores so colocado sempre abaixo e os outros deixam de existir. Lembrando que os valores das variveis Valor e Quant so imaginariamente informadas pelo usurio nos dando como resposta o valor 22. Agora pense: em uma ao real onde faamos uma compra de 3 produtos com os preos e quantidades como acima, teremos um valor 22? Se a resposta for no, ento seu algoritmo esta errado, caso contrario ele estar correto. Outro detalhe que devemos considerar que quando realizamos um Teste de Mesa aprendemos mais ainda a lgica de programao. Portanto faa Teste de Mesa em seus algoritmos, alm de poder ter mais certeza se ele esta correto voc estar aprendendo mais ainda.

58

Potrebbero piacerti anche