Você está na página 1de 35

Universidade Metodista de Piracicaba Centro de Cincias Exatas

TURBO PASCAL I VERSO 7.0

Elisabete M. dAvila Barini Valria M. DArezzo Zlio

maro/98

NDICE
Noes de lgica e algoritmo Algoritmos Caracteres Identificadores Constantes Variveis Tipos Primitivos Declarao de Variveis Comando de Atribuio Comandos de Entrada e Sada Blocos Estruturas de Seleo Seleo de Mltipla Escolha Repetio com teste no incio Crtica para entrada de dados Repetio com varivel de controle Exerccios Introduo linguagem Turbo Pascal Smbolos bsicos Identificadores Operadores Tipos predefinidos simples Estrutura de um programa em Turbo Pascal Cabealho do programa rea de declaraes Bloco de comandos Comandos Procedimentos e Funes predefinidos Exemplos de programas em Turbo Pascal 1 5 5 5 6 6 6 7 10 10 10 11 13 15 17 17 18 26 26 27 27 28 29 29 30 30 30 31 32

NOES DE LGICA E ALGORITMO Lgica: A lgica trata da correo do pensamento, isto , ela nos ensina a usar corretamente o raciocnio. Pensar com lgica significa ordenar o pensamento. Para resolver um determinado problema necessrio raciocinar de forma lgica ordenando o pensamento com o objetivo de atingir a soluo pretendida. A lgica est presente no nosso cotidiano, nas nossas aes, quando falamos, ou escrevemos, pois quando queremos falar, escrever ou agir corretamente precisamos ordenar nosso pensamento. Algoritmo: Algoritmo pode ser definido como uma sequncia lgica, e sem ambiguidade de passos que levam a soluo de um dado problema. uma sequncia de passos que visam atingir um objetivo bem definido. O algoritmo est presente em todas as aes do nosso dia dia como se fosse um plano para resoluo de problemas. Os algoritmos so comuns em nosso cotidiano, como por exemplo, uma receita de bolo. Nela est descrita um srie de ingredientes necessrios, uma sequncia de passos a serem cumpridos para atingir o objetivo que ter um bolo pronto. Ou ento um mapa para chegar at a Unimep que descreve o caminho a ser percorrido atravs de uma sequncia de passos. Podemos descrever atividades do cotidiano como por exemplo, trocar uma lmpada queimada. Apesar de aparentemente bvio demais, muitas vezes fazemos esse tipo de atividade sem percebermos determinados detalhes. De maneira simples podemos descrever: pegue uma escada; posicione-a embaixo da lmpada queimada; pegue uma lmpada nova; suba na escada; retire a lmpada velha; coloque a lmpada nova desa e guarde a escada. A sequncia descrita supe que a lmpada nova no esteja queimada e que se tenha apenas uma lmpada para ser trocada.

Se tivermos uma outra situao: vrias lmpadas que precisam ser testadas e trocadas ou no, conforme sua condio, a sequncia de passos para a soluo do problema ser outra. Para resolvermos um problema atravs da construo de um algoritmo podemos especificar um mtodo que traduza uma sequncia lgica de passos: Ler atentamente o enunciado - para resolver um problema necessria sua compreenso; 2. Retirar do enunciado a relao das entradas de dados - atravs do enunciado podemos descobrir quais so as informaes que devem ser fornecidas, a partir das quais desenvolveremos as aes; 3. Retirar do enunciado a relao das sadas de dados - atravs do enunciado podemos descobrir quais so os dados que devem ser emitidos para compor o resultado final, objetivo do algoritmo; 4. Determinar as aes que levaro a atingir o resultado desejado - nesta etapa precisamos determinar qual sequncia de aes capaz de transformar um conjunto definido de dados nas informaes de resultado; 5. Construir o algoritmo - descrever os passos para resolver o problema; 6. Executar o algoritmo - implica em executar todas as aes descritas seguindo o fluxo de execuo estabelecido, verificando se os resultados obtidos correspondem ao esperado. Desta forma torna-se possvel detectar algum possvel erro no desenvolvimento do algoritmo. Essa atividade conhecida como TESTE DE MESA.
1.

Exerccios: 1 - Um homem precisa atravessar um rio com um barco que possui capacidade de transportar apenas ele mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas ? informaes: um barco um homem um lobo um bode um mao de alfafa ao: atravessar o rio sem perder as cargas

resultado: todas as as cargas na outra margem do rio. Algoritmo: incio atravessar homem e bode voltar homem atravessar homem e lobo voltar homem e bode atravessar homem e alfafa voltar homem atravessar homem e bode fim 2 - Elabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste em trs hastes (a-b-c), uma das quais serve de suporte para trs discos de tamanhos diferentes (1-2-3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo transferir os trs discos para outra haste.

1 2 3 a b c

informaes: 3 discos 3 hastes aes: movimentar um disco de cada vez de forma que fiquem ordenado resultado: discos transferidos e ordenados para outra haste
5

Algoritmo: incio mover o disco 1 para a haste b mover o disco 2 para a haste c mover o disco 1 para a haste c mover o disco 3 para a haste b mover o disco 1 para a haste a mover o disco 2 para a haste b mover o disco 1 para a haste b fim 4. Trs jesutas e trs canibais precisam atravessar um rio; para tal, dispem de um barco com capacidade para duas pessoas. Por medidas de segurana no se permite que em alguma margem a quantidade de jesutas seja inferior de canibais. Qual a sequncia de passos que permitiria a travessia com segurana ? informaes: 3 jesutas 3 canibais 1 barco com capacidade para 2 pessoas aes: atravessar o rio com segurana resultado: 3 jesutas e 3 canibais na outra margem do rio Algoritmo: incio atravessar um jesuta e um canibal voltar um canibal atravessar dois canibais voltar um canibal atravessar um jesuta e um canibal voltar um canibal atravessar dois canibais voltar um canibal atravessar um jesuta e um canibal fim
6

ALGORITMOS J vimos que para resolvermos um problema atravs da construo de algoritmos podemos seguir um mtodo, entre outros existentes, que traduza uma sequncia lgica de passos. Estes envolvem descobrir as informaes, aes e resultados. CARACTERES Caracteres Alfabticos: A B C D E F ... Z a b c d e f ... z Dgitos: 0 1 2 3 4 5 6 7 8 9 Caracteres Especiais: : ; . , ( ) [ ] { } ? ! @ # $ % & * _ - = | \ < > / Obs: O espao considerado caracter especial. IDENTIFICADORES As informaes de quaisquer tipos precisam receber nomes que so denominados identificadores. Existem regras para a formao de identificadores: o 1 caracter tem que ser alfabtico; pode conter caracteres alfabticos e / ou numricos. Obs: No permitido o uso de caracteres especiais. No caso da linguagem Turbo Pascal permitido o caracter sublinhado. Ex: Identificadores vlidos: Nome, endereo, x7, abc, A533, FGTS, nome_do_cliente, nomedocliente, NomeDoCliente, resultado. Identificadores no vlidos: 5x, A+B, E(7), nome do cliente. CONSTANTES Uma informao constante quando no tem a possibilidade de ser alterada em algum instante no decorrer do tempo. Ex: Universidade Metodista de Piracicaba, falso, 0.52795. VARIVEIS Uma informao varivel quando tem a possibilidade de ser alterada em algum instante no decorrer do tempo.
7

Ex: cotao do dlar, peso de uma pessoa, preo de uma mercadoria, nome de clientes. TIPOS PRIMITIVOS Os computadores so capazes de manipular e armazenar informaes, que so tratadas conforme o tipo de informao. Temos quatro tipos primitivos: inteiro, real, caracter e lgico. INTEIRO: Toda e qualquer informao numrica que pertena ao conjunto de nmeros inteiros (negativo, nulo ou positivo). Ex: 15 anos, -2 C, 7 filhos, 0 faltas. REAL: Toda e qualquer informao numrica que pertena ao conjunto dos nmeros reais (negativo, nulo ou positivo). Ex: 1.75 m de altura, R$ 325.42 de saldo bancrio, 2.5 m de fio, R$1252.56 de salrio lquido. CARACTER: Toda e qualquer informao composta por um conjunto de caracteres alfanumricos (A..Z, 0..9) e ou especiais (#,$,@,+,..., inclusive espao em branco) . Obs: Todas as informaes do tipo caracter devem ser sempre delimitadas por apstrofes. Ex: Proibido Fumar, Fabio, Rua XV de Novembro, 422, F (representa sexo feminino), S (representa resposta sim). LGICO: Toda e qualquer informao que pode apenas assumir duas situaes. Ex: O rdio pode estar ligado ou desligado. A porta pode estar aberta ou fechada. DECLARAO DE VARIVEIS No ambiente computacional as informaes so armazenadas, sendo que cada varivel pode guardar apenas uma informao de cada vez, sendo sempre do mesmo tipo. Portanto precisamos associar as variveis a tipos, conforme a informao que se pretende armazenar. A declarao destas variveis deve seguir a seguinte sintaxe: tipo: Lista de variveis; Ex: inteiro: x; caracter: nome, endereco, cidade;
8

real: altura, peso; lgico: resposta; EXPRESSES ARITMTICAS Denominamos expresso aritmtica aquela cujos operadores so aritmticos e cujos operandos so constantes e / ou variveis do tipo numrico (inteiro e / ou real). As expresses podem conter funes matemticas. OPERADORES ARITMTICOS + adio - subtrao * multiplicao / diviso (real) Obs: Na linguagem Turbo Pascal admite-se tambm os operadores DIV e MOD para diviso inteira onde DIV o quociente da diviso e MOD o resto da diviso. Ex: a + b + c / 2 (x - y) * (x - 4) FUNES MATEMTICAS sen(x) - seno de x cos(x) - coseno de x abs(x) - valor absoluto de x int(x) - parte inteira de um nmero real rq(x) - raiz quadrada de um nmero quad(x) - nmero elevado ao quadrado e outras; onde x pode ser um nmero, varivel, expresso aritmtica ou outra funo matemtica. Ex: rq(a+b), quad(sen(x)+cos(x)) EXPRESSES LGICAS Denominamos expresso lgica aquela cujos operadores so lgicos e/ou relacionais e cujos operandos aso relaes e/ou variveis e/ou constantes do tipo lgico. Operadores relacionais
9

= igual a > maior que < menor que <> diferente de >= maior ou igual a <= menor ou igual a O resultado obtido de uma relao sempre um valor lgico. ex: 5 * 4 = 32 / 4 + 1 20 = 8 + 1 20 = 9 F 5 * 4 > 32 / 4 20 > 8 V OPERADORES LGICOS e conjuno ou disjuno no exclusiva xou disjuno exclusiva no negao TABELA VERDADE o conjunto de todas as possibilidades combinatrias entre os valores de diversas variveis lgicas, as quais se encontram em apenas duas situaes, e um conjunto de operadores lgicos. A F F V V B F V F V AeB F F F V A ou B F V V V A xou B F V V F A F V no A V F

ex: 2 < 5 e 15 < 3 V e F F


10

PRIORIDADES Na resoluo das expresses sejam aritmticas ou lgicas, as operaes e funes matemticas guardam entre si uma hierarquia. parnteses mais internos no funes matemticas * / div mod e + - ou xou = <> < <= > >= Para operaes de mesma prioridade, seguimos a ordem especificada, isto , da esquerda para direita. Para alterar a prioridade da tabela utilizamos parnteses mais internos. ex: 5 + 3 * 2 = 5 + 6 = 11 (5 + 3) * 2 = 8 * 2 = 16 quadrado (2 + 1) - 5 * 3 / 2 = quadrado (3) - 5 * 3 / 2 = = 9 - 5 * 3 / 2 = 9 - 15 / 2 = 9 - 7.5 = 1.5 COMANDO DE ATRIBUIO Um comando de atribuio permite-nos fornecer um valor (contedo) a uma certa varivel, sendo que o tipo dessa informao deve ser compatvel com o tipo da varivel. Possui a seguinte sintaxe: identificador expresso; ex: lgico: a,b; real: x,y; x 2; y 3 / x; a verdadeiro; b x < y; COMANDOS DE ENTRADA E SADA

11

As informaes necessrias para desenvolvermos as aes e que podem ser retiradas do enunciado da questo a resolver so fornecidas atravs do comando de entrada, que possui a seguinte sintaxe: leia (varivel); ex: leia (x); leia (nome, rua, cidade); Os resultados obtidos atravs das aes so recebidos atravs do comando de sada, que possui a seguinte sintaxe: escreva (varivel e/ou constante); ex: escreva (x); escreva ('saldo negativo'); BLOCOS Um bloco pode ser definido como um conjunto de aes com uma funo definida ou para definir limites em alguns comandos. Para delimitar blocos utilizamos os delimitadores: incio e fim. Ex: Dados trs valores numricos a, b, c, calcular a mdia aritmtica. incio real: a,b,c,media; {preparar tela} leia (a,b,c); media (a + b + c) / 3; escreva media; fim. Ex: Seja uma equao do segundo grau, do tipo ax2 + bx + c = 0, calcular as razes, sabendo-se que so reais. incio real: a, b, c, delta, x1, x2; {preparar tela} leia (a, b, c);
12

delta quadrado(b)-4*a*c; x1 (-b+rq(delta))/(2*a); x2 (-b-rq(delta))/(2*a); escreva (x1,x2); fim. ESTRUTURAS DE SELEO Uma estrutura de seleo permite a escolha de um grupo de aes e estruturas a ser executado quando determinadas condies, representadas por expresses lgicas, so ou no satisfeitas. se <condio> ento C; se <condio> ento C1 seno C2; se <condio> ento incio {bloco verdade} C1; ... Cn; fim {bloco verdade}; se <condio> ento incio {bloco verdade} C1; C2; ... Cn; fim {bloco verdade} seno incio {bloco falso} C1; C2; ...
13

Cn; fim {bloco falso}; Ex: Dados dois valores numricos diferentes, determinar o menor entre eles. incio real: x, y; {preparar tela} leia (x,y); se x<y ento escreva (x) seno escreva (y); fim. Ex: Dados trs valores numricos diferentes, determinar o menor entre eles. incio real: x, y, z, menor; {preparar tela} leia (x, y, z); se x<y ento menor x seno menor y; se z<menor ento menor z; escreva (menor); fim. ou incio x, y, z, menor: real; {preparar tela} leia (x, y, z); menor x; se y<menor ento menor y; se z<menor ento menor z; escreva (menor); fim. SELEO DE MLTIPLA ESCOLHA escolha X caso V1: C1; caso V2: C2;
14

caso V3: C3; caso V4: C4; fim {escolha}; escolha X caso V1: C1; caso V2: C2; caso V3: C3; caso V4: C4; caso contrrio Cn; fim {escolha}; Obs: V1,V2, V3 e V4 podem ser constantes (ex: 2), faixa de valores (ex: 10..20 entre 10 e 20, inclusive), mais que 1 valor (ex: 3,6,12 - pode ser 3 ou 6 ou 12). Podem ser ainda variveis (ex: k) ou caracteres (ex: k). Ex: Em uma vdeo locadora o preo de locao da fita (por dia) depende da cor do selo da fita. Dados: a cor do selo e o nmero de dias locados calcular o preo total, considerando a tabela: Cor do Selo Verde Amarelo Branco Rosa incio caracter: cor; real: prdia, prtot; dias: inteiro; {preparar tela} leia (cor,dias); escolha cor caso V: prdia 2.50; caso A: prdia 2.70; caso B: prdia 2.00; caso R: prdia 3.00; fim; {escolha} prtot prdia*dias; escreva(prtot); fim.
15

Preo por dia 2,50 2,70 2,00 3,00

Ex: Dados tipo de transao e valor do emprstimo, desenvolver um algoritmo que calcule e exiba o valor da taxa de juros de acordo com a tabela a seguir: Tipo de Transao P - pessoa fsica J - pessoa jurdica L - leasing F - fim Taxa de Juros 15% do valor do emprstimo 12% do valor do emprstimo 10% do valor do emprstimo terminar o programa

incio real: valor_emp, valor_tax; caracter: tipo; {preparar tela} repita leia(tipo); se (tipo<>F) e (tipo<>f) ento incio leia(valor_emp); escolha tipo; caso P,p: valor_tax valor_emp * 0.15; caso J,j: valor_tax valor_emp * 0.12; caso L,l: valor_tax valor_emp * 0.09; fim; {escolha} escreva (valor_tax); fim {ento } at (tipo=F) ou (tipo=f); fim. REPETIO COM TESTE NO INCIO Enquanto <condio> faa comando; Enquanto <condio> faa incio comando1; comando2;
16

... comandon; fim; {enquanto} Ex: Dados RA e notas de 2 provas de um aluno calcular a mdia final, sabendo-se que mdia = (1 nota * 4 + 2 nota * 6) / 10. Repetir o processo at que RA= (vazio). Incio caracter: RA; real: n1,n2,med; {preparar tela} leia(RA); enquanto RA<> faa incio leia (n1); leia (n2); med (n1*4+n2*6)/10; escreva(med); {limpar tela} leia(RA); fim; {enquanto} fim. REPETIO COM TESTE NO FINAL Repita comando1; comando2; ... comandon; At <condio>; Ex: Utilizando o exemplo anterior. incio caracter: RA; real: n1,n2,med; {preparar tela} repita leia(RA); se RA<> ento
17

incio leia (n1); leia (n2); med (n1*4+n2*6)/10; escreva(med); fim {ento} {limpar tela} at RA=; {repita} fim. Crtica para entrada de dados A estrutura de repetio com teste no final ideal para crtica para entrada de dados. A crtica para entrada de um valor no permite a entrada de um valor fora de faixas ou situaes predefinidas, como no caso da nota de prova est definido que deve estar entre 0 e 10, ento no devemos aceitar valores fora desta faixa como por exemplo -1 ou 11. Podemos citar outros exemplos: sexo pode ser F ou M, resposta pode ser S ou N, idade de uma pessoa s pode ser positiva e at podemos estabelecer um limite mximo em torno de 100, quantidade de alunos na sala de aula na disciplina Software I entre 0 e 40. Ex: Utilizando o exemplo anterior, sem repetio. Incio inteiro: k; caracter: RA; real: n1,n2,med; repita leia (n1); at (n1>=0) e (n1<=10); repita leia (n2); at (n2>=0) e (n2<=10); med (n1*4+n2*6)/10; escreva(med); fim. REPETIO COM VARIVEL DE CONTROLE (OU AUTOMTICA) Para varivel de valor_inicial at valor_final faa incio
18

comando1; comando2; ... comandon; fim; Ex: Dados RA e notas de 2 provas de um aluno calcular a mdia final, sabendo-se que mdia = (1 nota * 4 + 2 nota * 6) / 10. Repetir o processo para 10 alunos. Incio caracter: RA; real: n1,n2,med; {preparar tela} para k 1 at 10 faa incio leia(RA); leia (n1); leia (n2); med (n1*4+n2*6)/10; escreva(med); {limpar tela} fim; {para} fim. EXERCCIOS 1) Determine qual o tipo primitivo das informaes: a) Pare b) 2 c) 100.59 d) Preserve o meio ambiente e) S f) falso g) -57.3 h) -5000 i) UNIMEP j) 0.001

2) Assinale os identificadores vlidos: ( ( ( ( ( ) (X) ) ab*c ) k2 ) C&A ) CLIENTE ( ( ( ( (


19

) #49 ) x(3) ) 1A ) n ) quant_de_alunos

3) Encontre os erros da seguinte declarao de variveis: inteiro: endereo, nfilhos; caracter: idade, resposta; real: peso, altura, nome; logico: situao; 4) Supondo que as variveis COD, NOME, SEXO, DEPTO, FUNO, SAL, NDEP, ADIC, VALE, TIPO, sejam utilizadas para armazenar informaes referentes a um funcionrio de uma empresa, a saber: cdigo, nome, sexo, departamento em que trabalha, funo que exerce, salrio mensal, nmero de dependentes, salrio extra, se tem direito a vale transporte e tipo sanguneo, declareas corretamente. 5) Supondo A, B e C variveis do tipo inteiro, com valores 5, 10 e -8, e D varivel do tipo real com valor 1.5, quais os resultados das expresses abaixo: a) 2 + A * ABS(3) + C = b) 3 + RQ (2 * ABS(C)) / 2 = c) QUAD(B -6 * 2) * D + 2 = d) B MOD 3 + A MOD 2 = e) 2 * A MOD 3-C = f) RQ(2*ABS(C)) / 4 = 6) Determine os resultados (verdadeiro ou falso) obtidos na avaliao das expresses lgicas seguintes, sabendo que A, B, C, D e E contm respectivamente 2, 7, 3.5, noite e frio e que existe uma varivel lgica L cujo valor falso: a) (B = A * C) e L ou verdadeiro b) (dia = D) xou (frio <> clima) c) L ou (B DIV A >= C) ou no (A <= C) d) L e (C >= B DIV A) ou no (A<= C) 7) Para o enunciado a seguir foi elaborado um algoritmo que contm erros, identifique-os: Tendo como dados de entrada o nome, a altura e o sexo (M ou F) de uma pessoa, calcule e mostre seu peso ideal, utilizando as seguintes frmulas: para sexo masculino peso ideal = (72.7 * altura) - 58 para sexo feminino peso ideal = (62.1 * altura) - 44.7
20

inicio caracter: nome, alt, sexo; {preparar tela} leia (nome); leia (sexo); se sexo = M ento peso_ideal (72.7 * altura) - 58 seno peso_ideal (62.1 * altura) - 44.7; escreva (peso_ideal); fim. 8) Seja o seguinte algoritmo: incio inteiro: x,y,z; caracter: resposta; {prepara tela} leia (x,y); z x*y - 5; se z <= 0 ento resposta A seno se z <= 100 ento resposta B seno resposta C; escreva (z, resposta); fim. Faa um teste de mesa e complete o quadro a seguir para os seguintes valores: x 3 3 150 -1 7 5 -2 3 50 y 2 z resposta

21

9) Seja o seguinte algoritmo: inicio inteiro: a, b, c; caracter: mens; {preparar tela} leia (a); leia (b); leia (c); se (a<b+c) e (b<a+c) e (c<a+b) ento se (a=b) e (b=c) ento mens Tringulo Equiltero seno se (a=b) ou (b=c) ou (a=c) ento mens Tringulo Issceles seno mens Tringulo Escaleno seno mens No e possvel formar um tringulo; escreva (mens); fim. Faa um teste de mesa e complete o quadro a seguir para os seguintes valores: a b c mens 1 2 3 3 4 5 2 2 4 4 4 4 5 3 3 Elabore um algoritmo para os enunciados a seguir: 10) Ler dois nmeros positivos (>0) e executar as seguintes operaes sobre eles: adio, subtrao, multiplicao e diviso. 11) Sejam dois pontos quaisquer do plano, de coordenadas (x1,y1) para o primeiro ponto e (x2,y2) para o segundo ponto, determine a distncia entre eles. A frmula que efetua tal clculo : distncia = raiz quadrada ((x2-x1) 2 + (y2-y1) 2 ) 12) Sejam: nmero da conta do cliente, saldo, dbito e crdito, elabore um algoritmo que calcule e mostre saldo atual = saldo - dbito + crdito. Se saldo atual for maior ou igual a zero mostre a mensagem: Saldo Positivo, seno a mensagem Saldo Negativo. 13) Calcular e escrever o valor de y, sabendo-se que:
22

y = ax2 + bx + c; y = ax + b; y = ax2 + bx - c;

para x < a para x = a para x > a

14) Determinar e mostrar o valor de z, dados x e y, sabendo-se que: se x>0 e y>0 ento z=x+y; se x>0 ou y>0 ento z=
2x y ; 2

se x=y ento z=3x; se nenhuma das situaes ocorrer ento z=0. 15) Calcular e escrever o valor de z para: z = (a + b)2 + c . x + y a b2

Obs: No possvel dividir por zero. Caso isto ocorra escrever uma mensagem. 16) Sejam trs nmeros inteiros diferentes, coloque-os em ordem crescente. 17) Dados: a descrio do produto, a quantidade adquirida e o preo unitrio, calcular e escrever o total (total = quantidade adquirida x preo unitrio), o desconto e o total a pagar (total a pagar = total - desconto), sabendo-se que: se quantidade <= 5 o desconto ser de 2% se quantidade > 5 e quantidade <=10 o desconto ser de 3% se quantidade > 10 o desconto ser de 5% 18) Sejam quantidade em estoque, quantidade mxima em estoque e quantidade mnima em estoque de um produto, calcular e exibir a quantidade mdia = (quantidade mxima + quantidade mnima)/2. Se a quantidade em estoque for maior ou igual a quantidade mdia exibir a mensagem 'No efetuar compra', seno exibir 'Efetuar compra'. 19) Dado um caracter qualquer verificar e escrever se vogal (a, e, i, o, u). 20) Dado um nmero entre 1 e 12, escrever o nmero de dias do ms correspondente. Obs: Se o nmero escolhido for 2, correspondente ao ms de fevereiro, considerar 28 dias.

23

21) Calcular e mostrar o permetro de retngulos sabendo-se que permetro = 2 * (Comprimento + Largura). Repetir o processo enquanto comprimento e largura forem positivos. 22) Uma companhia quer verificar se um empregado est qualificado para a aposentadoria. Para estar em condies, um dos seguintes requisitos deve ser satisfeito: Ter no mnimo 65 anos de idade. Ter trabalhado, no mnimo 30 anos. Ter no mnimo 60 anos e ter trabalhado no mnimo 25 anos. So dados: o nmero do empregado, o ano de seu nascimento e o ano de seu ingresso na companhia. O programa dever escrever a idade e o tempo de trabalho do empregado e a mensagem Requerer aposentadoria ou No requerer. Repetir o processo enquanto nmero do empregado > 0. Obs: possvel resolver utilizando apenas uma deciso. 23) Calcule a rea de crculos atravs da frmula A=PI*R 2 , onde R representa o raio e PI o nmero 3,14159. Repetir o processo enquanto R for positivo. Obs: Na linguagem Turbo Pascal PI uma funo predefinida, no preciso declarar. 24) Os empregados de uma companhia recebem por hora trabalhada. Para as primeiras 40 horas, eles recebem o salrio hora vezes o nmero de horas trabalhadas. Para as horas que excederem 40 horas eles recebem o dobro por hora. So fornecidos o nmero do empregado, o salrio hora e o total de horas trabalhadas. Calcular o salrio bruto. Parar o processo quando nmero do empregado for zero. 25) Dados: nome e duas notas de provas de um aluno, calcular e escrever a mdia do aluno, que ponderada, ou seja, a primeira prova tem peso 4 e a segunda prova tem peso 6. Calcular tambm a media da classe, que a mdia aritmtica das mdias dos alunos. Repetir o processo enquanto nome do aluno <> '' (vazio). 26) Dados: o nome e a idade de um nadador, classifique-o em uma das categorias: Infantil A --- de 5 a 7 anos Infantil B --- de 8 a 10 anos Juvenil A --- de 11 a 13 anos Juvenil B --- de 14 a 17 anos Snior --- maiores de 17 anos Repetir o processo at que nome = (vazio).

24

27) Dados: opo de pagamento, nmero da nota e valor da compra determine valor a pagar, considerando: Opo Situao para pagamento 1 descontar 2% do valor da compra 2 manter valor da compra e dividir em 2 parcelas 3 acrescentar 2% do valor da compra e dividir em 3 parcelas 4 acrescentar 5% do valor da compra e dividir em 5 parcelas 5 parar o processo. Escrever o nmero de parcelas, o valor das parcelas e o total a pagar. 28) Dados: o nome e o salrio bruto de 70 funcionrios de uma empresa, calcular exibir o novo salrio com reajuste de 15%. 29) Calcular e escrever a rea de uma figura geomtrica. O usurio poder escolher a figura, sabendo-se que: FIGURA 1-Retngulo 2-Crculo 3-Quadrado 4-Tringulo 5-Fim REA comprimento x largura PI x raio lado2 (base x altura) / 2
2

Para calcular a rea da figura escolhida so dados os valores necessrios (fazer crtica para aceitar apenas valores > 0). Fazer crtica tambm na entrada da figura que poder ser 1, 2, 3, 4 ou 5. 30) Dados: nmero de inscrio do aluno, ano de ingresso e ano de concluso de um curso universitrio, elaborar um algoritmo para calcular: - o tempo (em anos) que cada aluno levou para concluir o curso; - a mdia aritmtica do tempo (em anos) para concluso do curso. Fazer crtica dos dados: sexo - permitir somente F ou M; ano de ingresso - permitir somente >=1993; ano de concluso - permitir somente >=1995. Repetir o processo enquanto nmero de inscrio <> 0.

25

31) A converso de graus Farenheit para Centgrados obtida pela frmula c = 5/9 (f-32). Calcular e escrever uma tabela de graus Centgrados em funo de graus Farenheit, com graus Farenheit variando de 51 a 150 de um em um. 32) Uma empresa pretende enviar, para outra cidade, via area, 50 mercadorias. Calcular a tarifa de embarque de cada mercadoria, sabendo-se que cobrado 0,5% do valor da mercadoria. Calcular tambm a tarifa total para envio de todas as mercadorias. 33) O salrio lquido de um empregado obtido calculando o seu salrio bruto e, ento, deduzindo os descontos. O salrio bruto obtido pela frmula salrio bruto = horas trabalhadas * salrio por hora. O desconto calculado pela frmula desconto = salrio bruto * percentual de desconto. Escreva um algoritmo para calcular o salrio lquido de 30 funcionrios. O algoritmo dever ler para cada funcionrio o seu nmero, o salrio por hora, o percentual de descontos e as horas trabalhadas e a seguir, calcular e exibir o salrio bruto, os descontos e o salrio lquido. Fazer crtica onde necessrio. 34) Tem-se dados referente a altura e o sexo de 40 pessoas. Fazer um algoritmo que calcule e escreva: .a maior e a menor altura do grupo .a mdia de altura das mulheres .o nmero de homens. 35) Dados: cdigo do produto e preo de 15 produtos, elaborar um algoritmo para calcular e exibir: o maior preo e a mdia aritmtica dos preos dos produtos. 36) Escreva um algoritmo para calcular w = 3a + 2b + 5, para todas as possibilidades a seguir: a variando de 1 a 4 com incrementos de 1; b variando de 0.5 a 2.5 com incrementos de 0.5. Mostrar na tela a, b e w. 37) Dados diversos valores numricos positivos encontrar o menor entre eles. Parar quando nmero = 0. 38) Uma loja de discos est fornecendo descontos na compra de discos e fitas. Elabore um agortmo que mostre uma tabela contendo: quantidade de discos, quantidade de fitas e porcentagem de desconto, sabendo-se que: quantidade de discos varia de 1 a 5; quantidade de fitas varia de 1 a 5;
26

porcentagem de desconto = 5 + quantidade 39) Dadas 100 letras, individualmente, calcular quantas vezes ocorre cada uma das vogais. INTRODUO LINGUAGEM TURBO PASCAL SMBOLOS BSICOS Letras maisculas: A..Z; letras minsculas: a..z; dgitos: 0..9; caracter sublinhado: _ e outros caracteres especiais: * - = + / ( ) { } [ ] < > & % $ # @ : ; , . ? \ ! ~ ` ^ espao Os smbolos especiais individualmente ou em pares caracterizam os operadores e delimitadores: . () + / not div mod and or xor = <> > < >= <= * := in # , fim de programa, decimal, seleo de membro em record precedncia, parmetro adio, concatenao subtrao, negao diviso real no diviso inteira resto da diviso inteira e ou ou exclusivo igualdade, declarao desigualdade ou diferente maior que menor que maior ou igual menor ou igual multiplicao atribuio pertence a ou est contido prefixo que identifica o valor ordinal de caracter (0..255 - tabela ASCII) separador de lista
27

$ : .. ; [] (. .) {} (* *)

delimitador de sequncia de caracteres prefixo que indica um nmero hexadecimal declarao de tipo identifica intervalo em tipo ordinal simples ou faixa de valores separa declaraes e indica fim de definies, cabealhos, blocos, ... referncia a um elemento de um array referncia a um elemento de um array delimita um comentrio dentro de um programa delimita um comentrio dentro de um programa

IDENTIFICADORES So nomes simblicos que servem para representar programas, unidades, constantes, tipos, variveis, procedimentos, funes. Existem identificadores predefinidos e definidos pelo usurio. Um identificador deve respeitar as seguintes regras: O 1 caracter tem que ser uma letra; os demais podem ser letras, dgitos e o caracter sublinhado; somente os primeiros 63 caracteres so significativos; letras maisculas e minsculas so consideradas iguais; no permitido o uso de palavras reservadas e a redefinio de um identificador padro impede o uso do procedimento, funo ou constante normalmente associado a ele. So palavras reservadas: AND, ARRAY, BEGIN, CASE, CONST, DIV, DO, DOWNTO, ELSE, END, FILE, FOR, FUNCTION, IF, IN, MOD, NOT, OF, OR, PROCEDURE, PROGRAM, RECORD, REPEAT, STRING, THEN, TO, TYPE, UNTIL, USES, VAR, WHILE e outras. OPERADORES OPERADORES ARITMTICOS + * / div mod adio subtrao multiplicao diviso real diviso inteira - quociente diviso inteira - resto

28

OPERADORES LGICOS or and xor not ou e ou exclusivo no

OPERADORES RELACIONAIS > >= < <= = <> in maior maior ou igual menor menor ou igual igual diferente contido

TIPOS PREDEFINIDOS SIMPLES TIPO LGICO O tipo lgico chamado de BOOLEAN, que assume um entre dois valores predefinidos: false (falso) ou true (verdade), representados internamente por 0 e 1, respectivamente. TIPOS CARACTERES Caracteres ordenados de acordo com o conjunto ASCII extendido (0..255), normalmente representado entre apstrofes. Podem ser: CHAR ou STRING. CHAR STRING Admite apenas um caracter. Admite uma cadeia de at 255 caracteres. Deve-se declarar a quantidade mxima de caracteres que se pretende guardar.

TIPOS NUMRICOS INTEIROS TIPO BYTE INTERVALO DE VALORES 0 .. 255


29

SHORTINT INTEGER WORD LONGINT

-128 .. 127 -32768 .. 32767 0 .. 65535 -2147483648 .. 2147483647

TIPOS NUMRICOS REAIS TIPO REAL SINGLE DOUBLE EXTENDED COMP INTERVALO DE VALORES 2.9 * 10 E -39 .. 1.7 * 10 E 38 1.5 * 10 E -45 .. 3.4 * 10 E 38 5.0 * 10 E -324 .. 1.7 * 10 E 308 3.4 * 10 E -4932 .. 1.1 * 10 E 4932 -2 E 63 + 1 .. 2 E 63 - 1

ESTRUTURA DE UM PROGRAMA EM TURBO PASCAL Os programas em Turbo Pascal podem ser estruturados utilizando a seguinte sequncia: cabealho do programa, rea de declaraes e bloco de comandos. CABEALHO DO PROGRAMA PROGRAM nome_programa; { Identifica o programa; opcional. } USES nome_unit1, nome_unit2, ...; { Clusula uses: identifica as bibliotecas (units) usadas pelo programa. } UNITS PADRO DO TURBO PASCAL SYSTEM DOS CRT PRINTER GRAPH OVERLAY WINDOWS STRINGS Usada pelas outras units padro, contm todos os procedimentos e funes padres do Turbo Pascal. sempre carregada no programa. Funes e procedimentos do DOS. Rotinas que permitem acesso a recursos de hardware do micro (vdeo e som). Declara um arquivo texto chamado LST e associa-o com o dispositivo LTP1 (impressora). Contm rotinas grficas. Requer a unit CRT. Permite uso de programas maiores do que a memria. Troca partes do programa entre o disco e a memria. Funes e procedimentos do ambiente windows. Possui procedimentos e funes que permitem manipular strings.

30

REA DE DECLARAES CONST constante1 = valor1; constante2 = valor2; ...; { Declara constante; o valor atribudo constante determina o tipo da mesma; opcional. } TYPE tipo1 = definio_tipo1; tipo2 = definio _tipo2; ...; { Declara novos tipos a partir de outros j existentes; opcional. } VAR varivel1, varivel2, ...: tipo1; varivelx1, varivelx2: tipox; ...; variveis a serem usadas no programa. } BLOCO DE COMANDOS O bloco de comandos comea com a palavra reservada BEGIN e termina com a palavra reservada END. Pode conter comandos, procedimentos e funes. COMANDOS BEGIN comando1; comando2; ...; END; {Define um bloco de comandos. Se a sintaxe do Turbo Pascal permite um comando simples tambm permitir um bloco de comandos. } CASE expresso OF {Comando condicional de mltipla escolha.} opo1: comando1; opo2: comando2; ... ELSE comando; {O else (falso) opcional. } END; FOR varivel := incio TO fim DO comando; automtica, varivel crescendo de incio at fim. } FOR varivel := fim DOWNTO incio DO comando; automtica, varivel decrescendo de fim at incio. } { Comando com repetio { Comando com repetio { Declara

IF condio THEN comando1 ELSE comando2; { Comando condicional. Se condio for verdade o comando1 executado, caso contrrio, o comando2 executado. O else (falso) opcional. }

31

REPEAT comando; ... UNTIL condio; { Executa o comando at que a condio seja verdade. } WHILE condio DO comando; verdade. } { Executa o comando enquanto condio for

PROCEDIMENTOS E FUNES PREDEFINIDOS CHR(n) Retorna o caracter correspondente ao cdigo ASCII n. O mesmo que #cdigo. CLREOL Apaga todos os caracteres desde a posio do cursor at o fim da linha, mantendo a localizao do cursor. CLRSCR Limpa a tela e coloca o cursor no canto superior esquerdo. DELAY(x) Espera durante x milisegundos. GETDATE(ano, ms, dia, diasem) Retorna a data do sistema operacional. GETTIME(hora, min, seg, s100) Retorna o horrio do sistema operacional. GOTOXY(coluna, linha) Posiciona, em modo texto, o cursor nas coordenadas especificadas. KEYPRESSED Retorna true se alguma tecla for pressionada. NOSOUND Interrompe um tom iniciado por sound. RANDOM(faixa) Retorna um nmero pseudo aleatrio entre 0 e faixa. Se faixa no for especificada retorna valor entre 0.0 e 1.0. RANDOMIZE Inicializa o gerador de nmeros aleatrios com o valor atual do relgio do sistema. READLN(varivel) L varivel. READKEY Retorna um caracter lido do teclado. SOUND(hz) Inicia um tom na frequncia hz e continua at executar nosound. TEXTBACKGROUND(cor) Seleciona a cor do fundo em modo texto. TEXTCOLOR(cor) Seleciona a cor do texto em modo texto. UPCASE(c) Retorna o caracter c convertido em maiscula. WINDOW(col1,lin1,col2,lin2) Define em modo texto uma janela no vdeo. WRITE(..., varivel) Escreve o que estiver entre apstrofes e/ou o valor da varivel. Exemplos de Programas em Turbo Pascal: { Dados dois valores numericos maiores que 0 calcular e }
32

{ escrever as quatro operacoes aritmeticas basicas. program exemplo; uses crt; var x, y, soma, subt, mult, divi: real;

begin { Prepara tela. } textbackground(3); textcolor(1); clrscr; gotoxy(20,4); write('OPERACOES ARITMETICAS'); gotoxy(15,7); write('1 Numero........:'); gotoxy(15,9); write('2 Numero........:'); gotoxy(15,11); write('Adicao...........:'); gotoxy(15,13); write('Subtracao........:'); gotoxy(15,15); write('Multiplicacao....:'); gotoxy(15,17); write('Divisao..........:'); window(35,7,75,20); { Entrada de dados, calculo e saida de resultados. } repeat gotoxy(1,1); clreol; readln(x); until x>0; repeat gotoxy(1,3); clreol; readln(y); until y>0; soma:= x+y; subt:= x-y; mult:= x*y; divi:= x/y; gotoxy(1,5); write(soma:4:1); gotoxy(1,7); write(subt:4:1); gotoxy(1,9); write(mult:4:1); gotoxy(1,11); write(divi:4:1); gotoxy(1,14); write('Tecle <enter> para sair.'); repeat until readkey=#13; clrscr; { Retorna a tela toda e as cores padrao de fundo e texto. } window(1,1,80,25); textcolor(15); textbackground(0);
33

clrscr; end. { Exemplo de programa em Turbo Pascal } program exemplo; uses crt; var ra: string[9]; nome: string[25]; nota1, nota2, ntrab, media: real; k: byte; begin { Prepara tela. } textbackground(3); textcolor(5); clrscr; gotoxy(20,4); write('CONTROLE DE NOTAS'); gotoxy(15,7); write('Registro Academico.:'); gotoxy(15,9); write('Nome do Aluno......:'); gotoxy(15,11); write('1 Prova...........:'); gotoxy(15,13); write('2 Prova...........:'); gotoxy(15,15); write('Trabalho...........:'); gotoxy(15,18); write('Media Final........:'); window(37,7,75,20); textbackground(7); clrscr; { Entrada de dados, calculo e saida de resultados. } gotoxy(1,1); clreol; readln(ra); while ra<>'' do begin repeat gotoxy(1,3); clreol; readln(nome); until nome<>''; repeat gotoxy(1,5); clreol; readln(nota1); until (nota1>=0) and (nota1<=10); repeat gotoxy(1,7); clreol; readln(nota2); until (nota2>=0) and (nota2<=10); repeat gotoxy(1,9); clreol; readln(ntrab);
34

until (ntrab>=0) and (ntrab<=10); media := (nota1+nota2+ntrab)/3; gotoxy(1,12); write(media:4:1); gotoxy(1,14); write('Tecle <enter> para continuar.'); repeat until readkey=#13; clrscr; gotoxy(1,14); write('Digite RA ou tecle <enter> para sair.'); gotoxy(1,1); clreol; readln(ra); gotoxy(1,14); clreol; end; { Retorna a tela toda e as cores padrao de fundo e texto. } window(1,1,80,25); textcolor(15); textbackground(0); clrscr; end.

35