NOÇÕES DE LÓGICA E ALGORITMO - unimep.brvmdzilio/pasc1_97.doc  · Web viewtipo intervalo de...

48
Universidade Metodista de Piracicaba Centro de Ciências Exatas TURBO PASCAL I VERSÃO 7.0 Elisabete M. d’Avila Barini Valéria M. D’Arezzo Zílio 1

Transcript of NOÇÕES DE LÓGICA E ALGORITMO - unimep.brvmdzilio/pasc1_97.doc  · Web viewtipo intervalo de...

Universidade Metodista de PiracicabaCentro de Ciências Exatas

TURBO PASCAL I

VERSÃO 7.0

Elisabete M. d’Avila BariniValéria M. D’Arezzo Zílio

março/98

1

ÍNDICE

Noções de lógica e algoritmo 1Algoritmos 5

Caracteres 5Identificadores 5Constantes 6Variáveis 6Tipos Primitivos 6Declaração de Variáveis 7Comando de Atribuição 10Comandos de Entrada e Saída 10Blocos 10Estruturas de Seleção 11Seleção de Múltipla Escolha 13Repetição com teste no início 15Crítica para entrada de dados 17Repetição com variável de controle 17Exercícios 18

Introdução à linguagem Turbo Pascal 26Símbolos básicos 26Identificadores 27Operadores 27Tipos predefinidos simples 28Estrutura de um programa em Turbo Pascal 29Cabeçalho do programa 29Área de declarações 30Bloco de comandos 30Comandos 30Procedimentos e Funções predefinidos 31Exemplos de programas em Turbo Pascal 32

2

NOÇÕES DE LÓGICA E ALGORITMO

Lógica:

A lógica trata da correção do pensamento, isto é, ela nos ensina a usar corretamente o raciocínio. Pensar com lógica significa ordenar o pensamento.

Para resolver um determinado problema é necessário raciocinar de forma lógica ordenando o pensamento com o objetivo de atingir a solução pretendida.

A lógica está presente no nosso cotidiano, nas nossas ações, quando falamos, ou escrevemos, pois quando queremos falar, escrever ou agir corretamente precisamos ordenar nosso pensamento.

Algoritmo:

Algoritmo pode ser definido como uma sequência lógica, e sem ambiguidade de passos que levam a solução de um dado problema.

É uma sequência de passos que visam atingir um objetivo bem definido.O algoritmo está presente em todas as ações do nosso dia à dia como se

fosse um plano para resolução de problemas. Os algoritmos são comuns em nosso cotidiano, como por exemplo, uma

receita de bolo. Nela está descrita um série de ingredientes necessários, uma sequência de passos a serem cumpridos para atingir o objetivo que é ter um bolo pronto. Ou então um mapa para chegar até a Unimep que descreve o caminho a ser percorrido através de uma sequência de passos.

Podemos descrever atividades do cotidiano como por exemplo, trocar uma lâmpada 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 lâmpada queimada;pegue uma lâmpada nova;suba na escada;retire a lâmpada velha;coloque a lâmpada novadesça e guarde a escada.

3

A sequência descrita supõe que a lâmpada nova não esteja queimada e que se tenha apenas uma lâmpada para ser trocada.

Se tivermos uma outra situação: várias lâmpadas que precisam ser testadas e trocadas ou não, conforme sua condição, a sequência de passos para a solução do problema será outra.

Para resolvermos um problema através da construção de um algoritmo podemos especificar um método que traduza uma sequência lógica de passos:

1. Ler atentamente o enunciado - para resolver um problema é necessária sua compreensão;2. Retirar do enunciado a relação das entradas de dados - através do enunciado podemos descobrir quais são as informações que devem ser fornecidas, a partir das quais desenvolveremos as ações;3. Retirar do enunciado a relação das saídas de dados - através do enunciado podemos descobrir quais são os dados que devem ser emitidos para compor o resultado final, objetivo do algoritmo;4. Determinar as ações que levarão a atingir o resultado desejado - nesta etapa precisamos determinar qual sequência de ações é capaz de transformar um conjunto definido de dados nas informações de resultado;5. Construir o algoritmo - descrever os passos para resolver o problema;6. Executar o algoritmo - implica em executar todas as ações descritas seguindo o fluxo de execução estabelecido, verificando se os resultados obtidos correspondem ao esperado. Desta forma torna-se possível detectar algum possível erro no desenvolvimento do algoritmo. Essa atividade é conhecida como “TESTE DE MESA”.

Exercícios:

1 - Um homem precisa atravessar um rio com um barco que possui capacidade de transportar apenas ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode e um maço de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas ?

informações:um barcoum homemum loboum bodeum maço de alfafa

4

ação: atravessar o rio sem perder as cargas

resultado:todas as as cargas na outra margem do rio.

Algoritmo: início

atravessar homem e bodevoltar homematravessar homem e lobovoltar homem e bodeatravessar homem e alfafavoltar homematravessar homem e bode

fim

2 - Elabore um algoritmo que mova três discos de uma Torre de Hanói, que consiste em três hastes (a-b-c), uma das quais serve de suporte para três 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 três discos para outra haste.

1 2 3

a

b

c

informações:

3 discos3 hastes

ações:

5

movimentar um disco de cada vez de forma que fiquem ordenado

resultado:discos transferidos e ordenados para outra haste

Algoritmo: início

mover o disco 1 para a haste bmover o disco 2 para a haste cmover o disco 1 para a haste cmover o disco 3 para a haste bmover o disco 1 para a haste amover o disco 2 para a haste bmover o disco 1 para a haste b

fim

4. Três jesuítas e três canibais precisam atravessar um rio; para tal, dispõem de um barco com capacidade para duas pessoas. Por medidas de segurança não se permite que em alguma margem a quantidade de jesuítas seja inferior à de canibais. Qual a sequência de passos que permitiria a travessia com segurança ?

informações:3 jesuítas3 canibais1 barco com capacidade para 2 pessoas

ações:atravessar o rio com segurança

resultado:3 jesuítas e 3 canibais na outra margem do rio

Algoritmo: início

atravessar um jesuíta e um canibalvoltar um canibalatravessar dois canibaisvoltar um canibalatravessar um jesuíta e um canibal

6

voltar um canibalatravessar dois canibaisvoltar um canibalatravessar um jesuíta e um canibal

fim

ALGORITMOS

Já vimos que para resolvermos um problema através da construção de algoritmos podemos seguir um método, entre outros existentes, que traduza uma sequência lógica de passos. Estes envolvem descobrir as informações, ações e resultados.

CARACTERES

Caracteres Alfabéticos: A B C D E F ... Z a b c d e f ... zDígitos: 0 1 2 3 4 5 6 7 8 9

Caracteres Especiais: : ; . , ( ) [ ] { } ? ! @ # $ % & * _ - = ’ ” | \ < > /Obs: O espaço é considerado caracter especial.

IDENTIFICADORES

As informações de quaisquer tipos precisam receber nomes que são denominados identificadores. Existem regras para a formação de identificadores:

o 1º caracter tem que ser alfabético;pode conter caracteres alfabéticos e / ou numéricos.

Obs: Não é permitido o uso de caracteres especiais. No caso da linguagem Turbo Pascal é permitido o caracter sublinhado.

Ex: Identificadores válidos:Nome, endereço, x7, abc, A533, FGTS, nome_do_cliente,

nomedocliente, NomeDoCliente, resultado. Identificadores não válidos:

5x, A+B, E(7), nome do cliente.

CONSTANTES

Uma informação é constante quando não tem a possibilidade de ser alterada em algum instante no decorrer do tempo.

7

Ex: ’Universidade Metodista de Piracicaba’, falso, 0.52795.

VARIÁVEIS

Uma informação é variável quando tem a possibilidade de ser alterada em algum instante no decorrer do tempo.Ex: cotação do dólar, peso de uma pessoa, preço de uma mercadoria, nome de clientes.

TIPOS PRIMITIVOS

Os computadores são capazes de manipular e armazenar informações, que são tratadas conforme o tipo de informação. Temos quatro tipos primitivos: inteiro, real, caracter e lógico.

INTEIRO: Toda e qualquer informação numérica que pertença ao conjunto de números inteiros (negativo, nulo ou positivo).Ex: 15 anos, -2º C, 7 filhos, 0 faltas.

REAL: Toda e qualquer informação numérica que pertença ao conjunto dos números reais (negativo, nulo ou positivo).Ex: 1.75 m de altura, R$ 325.42 de saldo bancário, 2.5 m de fio, R$1252.56 de salário líquido.

CARACTER: Toda e qualquer informação composta por um conjunto de caracteres alfanuméricos (A..Z, 0..9) e ou especiais (#,$,@,+,..., inclusive espaço em branco) .Obs: Todas as informações do tipo caracter devem ser sempre delimitadas por apóstrofes.Ex: ’Proibido Fumar’, ’Fabio’, ’Rua XV de Novembro, 422’, ’F’ (representa sexo feminino), ’S’ (representa resposta sim).

LÓGICO: Toda e qualquer informação que pode apenas assumir duas situações.Ex: O rádio pode estar ligado ou desligado. A porta pode estar aberta ou fechada.

DECLARAÇÃO DE VARIÁVEIS

No ambiente computacional as informações são armazenadas, sendo que cada variável pode guardar apenas uma informação de cada vez, sendo sempre do mesmo tipo. Portanto precisamos associar as variáveis a tipos, conforme a

8

informação que se pretende armazenar. A declaração destas variáveis deve seguir a seguinte sintaxe:

tipo: Lista de variáveis;

Ex: inteiro: x; caracter: nome, endereco, cidade; real: altura, peso; lógico: resposta;

EXPRESSÕES ARITMÉTICASDenominamos expressão aritmética aquela cujos operadores são

aritméticos e cujos operandos são constantes e / ou variáveis do tipo numérico (inteiro e / ou real). As expressões podem conter funções matemáticas.

OPERADORES ARITMÉTICOS

+ adição- subtração* multiplicação/ divisão (real)

Obs: Na linguagem Turbo Pascal admite-se também os operadores DIV e MOD para divisão inteira onde DIV é o quociente da divisão e MOD o resto da divisão.Ex: a + b + c / 2 (x - y) * (x - 4)

FUNÇÕES MATEMÁTICAS

sen(x) - seno de xcos(x) - coseno de xabs(x) - valor absoluto de xint(x) - parte inteira de um número realrq(x) - raiz quadrada de um númeroquad(x) - número elevado ao quadradoe outras;

onde x pode ser um número, variável, expressão aritmética ou outra função matemática.

9

Ex: rq(a+b), quad(sen(x)+cos(x))

EXPRESSÕES LÓGICAS

Denominamos expressão lógica aquela cujos operadores são lógicos e/ou relacionais e cujos operandos aso relações e/ou variáveis e/ou constantes do tipo lógico.

Operadores relacionais

= igual a> maior que< menor que<> diferente de>= maior ou igual a<= menor ou igual a

O resultado obtido de uma relação é sempre um valor lógico.

ex: 5 * 4 = 32 / 4 + 1 20 = 8 + 1 20 = 9 F

5 * 4 > 32 / 4 20 > 8 V

OPERADORES LÓGICOS

e conjunçãoou disjunção não exclusivaxou disjunção exclusivanão negação

TABELA VERDADE

É o conjunto de todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas, as quais se encontram em apenas duas situações, e um conjunto de operadores lógicos.

10

A B A e B A ou B A xou B A não AF F F F F F VF V F V V V FV F F V VV V V V F

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

PRIORIDADES

Na resolução das expressões sejam aritméticas ou lógicas, as operações e funções matemáticas guardam entre si uma hierarquia.

parênteses mais internos não funções matemáticas * / div mod e + - ou xou = <> < <= > >=

Para operações de mesma prioridade, seguimos a ordem especificada, isto é, da esquerda para à direita. Para alterar a prioridade da tabela utilizamos parênteses 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 ATRIBUIÇÃO

Um comando de atribuição permite-nos fornecer um valor (conteúdo) a uma certa variável, sendo que o tipo dessa informação deve ser compatível com o tipo da variável. Possui a seguinte sintaxe:

identificador expressão;

11

ex: lógico: a,b; real: x,y; x 2; y 3 / x; a verdadeiro; b x < y;

COMANDOS DE ENTRADA E SAÍDA

As informações necessárias para desenvolvermos as ações e que podem ser retiradas do enunciado da questão a resolver são fornecidas através do comando de entrada, que possui a seguinte sintaxe:

leia (variável);

ex: leia (x); leia (nome, rua, cidade);

Os resultados obtidos através das ações são recebidos através do comando de saída, que possui a seguinte sintaxe:

escreva (variável e/ou constante);

ex: escreva (x); escreva ('saldo negativo');

BLOCOS

Um bloco pode ser definido como um conjunto de ações com uma função definida ou para definir limites em alguns comandos. Para delimitar blocos utilizamos os delimitadores: início e fim.

Ex: Dados três valores numéricos a, b, c, calcular a média aritmética.

início real: a,b,c,media; {preparar tela} leia (a,b,c); media (a + b + c) / 3; escreva media;

12

fim.

Ex: Seja uma equação do segundo grau, do tipo ax2 + bx + c = 0, calcular as raízes, sabendo-se que são reais.

início real: a, b, c, delta, x1, x2; {preparar tela} leia (a, b, c); delta quadrado(b)-4*a*c; x1 (-b+rq(delta))/(2*a); x2 (-b-rq(delta))/(2*a); escreva (x1,x2); fim.

ESTRUTURAS DE SELEÇÃO

Uma estrutura de seleção permite a escolha de um grupo de ações e estruturas a ser executado quando determinadas condições, representadas por expressões lógicas, são ou não satisfeitas.

se <condição> então C;

se <condição> então C1 senão C2;

se <condição> então início {bloco verdade} C1; ... Cn; fim {bloco verdade};

se <condição> então

13

início {bloco verdade} C1; C2; ... Cn; fim {bloco verdade} senão início {bloco falso} C1; C2; ... Cn; fim {bloco falso};

Ex: Dados dois valores numéricos diferentes, determinar o menor entre eles. início real: x, y; {preparar tela} leia (x,y); se x<y então escreva (x) senão escreva (y); fim.

Ex: Dados três valores numéricos diferentes, determinar o menor entre eles. início real: x, y, z, menor; {preparar tela} leia (x, y, z); se x<y então menor x senão menor y; se z<menor então menor z; escreva (menor); fim.

ou início x, y, z, menor: real; {preparar tela}

14

leia (x, y, z); menor x; se y<menor então menor y; se z<menor então menor z; escreva (menor); fim.

SELEÇÃO DE MÚLTIPLA ESCOLHA

escolha X caso V1: C1; caso V2: C2; caso V3: C3; caso V4: C4;fim {escolha};

escolha X caso V1: C1; caso V2: C2; caso V3: C3; caso V4: C4; caso contrário 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 variáveis (ex: k) ou caracteres (ex: ’k’).

Ex: Em uma vídeo locadora o preço de locação da fita (por dia) depende da cor do selo da fita. Dados: a cor do selo e o número de dias locados calcular o preço total, considerando a tabela:

Cor do Selo Preço por diaVerde 2,50Amarelo 2,70Branco 2,00Rosa 3,00

início caracter: cor;

15

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.

Ex: Dados tipo de transação e valor do empréstimo, desenvolver um algoritmo que calcule e exiba o valor da taxa de juros de acordo com a tabela a seguir:

Tipo de Transação Taxa de JurosP - pessoa física 15% do valor do empréstimoJ - pessoa jurídica 12% do valor do empréstimoL - leasing 10% do valor do empréstimoF - fim terminar o programa

início real: valor_emp, valor_tax; caracter: tipo; {preparar tela} repita leia(tipo); se (tipo<>’F’) e (tipo<>’f’) então início 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}

16

escreva (valor_tax); fim {então } até (tipo=’F’) ou (tipo=’f’);fim. REPETIÇÃO COM TESTE NO INÍCIO

Enquanto <condição> faça comando;

Enquanto <condição> faça início

comando1; comando2; ... comandon;

fim; {enquanto}

Ex: Dados RA e notas de 2 provas de um aluno calcular a média final, sabendo-se que média = (1ª nota * 4 + 2ª nota * 6) / 10. Repetir o processo até que RA=’’ (vazio).

Início caracter: RA;

real: n1,n2,med; {preparar tela}

leia(RA);enquanto RA<>’’ façainício leia (n1); leia (n2);

med (n1*4+n2*6)/10; escreva(med);

{limpar tela} leia(RA);

fim; {enquanto}fim.

REPETIÇÃO COM TESTE NO FINAL

17

Repita comando1; comando2; ... comandon;

Até <condição>;

Ex: Utilizando o exemplo anterior.início

caracter: RA; real: n1,n2,med; {preparar tela}

repita leia(RA); se RA<>’’ então início leia (n1); leia (n2);

med (n1*4+n2*6)/10; escreva(med);

fim {então} {limpar tela}

até RA=’’; {repita}fim.

Crítica para entrada de dados

A estrutura de repetição com teste no final é ideal para crítica para entrada de dados. A crítica para entrada de um valor não permite a entrada de um valor fora de faixas ou situações predefinidas, como no caso da nota de prova está definido que deve estar entre 0 e 10, então não 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 máximo 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 repetição.Início inteiro: k;

18

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.

REPETIÇÃO COM VARIÁVEL DE CONTROLE (OU AUTOMÁTICA)

Para variável de valor_inicial até valor_final faça início

comando1; comando2;

... comandon;

fim;

Ex: Dados RA e notas de 2 provas de um aluno calcular a média final, sabendo-se que média = (1ª nota * 4 + 2ª nota * 6) / 10. Repetir o processo para 10 alunos.Início

caracter: RA;real: n1,n2,med;{preparar tela}para k 1 até 10 faça início leia(RA); leia (n1); leia (n2);

med (n1*4+n2*6)/10; escreva(med);

{limpar tela} fim; {para}

fim.

19

EXERCÍCIOS

1) Determine qual é o tipo primitivo das informações:

a) ’Pare’ f) falsob) 2 g) -57.3c) 100.59 h) -5000d) ’Preserve o meio ambiente’ i) ’UNIMEP’e) ’S’ j) 0.001

2) Assinale os identificadores válidos:

( ) (X) ( ) #49( ) ab*c ( ) x(3)( ) k2 ( ) 1A( ) C&A ( ) nº( ) ’CLIENTE’ ( ) quant_de_alunos

3) Encontre os erros da seguinte declaração de variáveis:

inteiro: endereço, nfilhos;caracter: idade, resposta;real: peso, altura, nome;logico: situação;

4) Supondo que as variáveis COD, NOME, SEXO, DEPTO, FUNÇÃO, SAL, NDEP, ADIC, VALE, TIPO, sejam utilizadas para armazenar informações referentes a um funcionário de uma empresa, a saber: código, nome, sexo, departamento em que trabalha, função que exerce, salário mensal, número de dependentes, salário extra, se tem direito a vale transporte e tipo sanguíneo, declare-as corretamente.

5) Supondo A, B e C variáveis do tipo inteiro, com valores 5, 10 e -8, e D variável do tipo real com valor 1.5, quais os resultados das expressões 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 =

20

e) 2 * A MOD 3-C =f) RQ(2*ABS(C)) / 4 =

6) Determine os resultados (verdadeiro ou falso) obtidos na avaliação das expressões lógicas seguintes, sabendo que A, B, C, D e E contém respectivamente 2, 7, 3.5, ’noite’ e ’frio’ e que existe uma variável lógica L cujo valor é falso:

a) (B = A * C) e L ou verdadeirob) (’dia’ = D) xou (’frio’ <> ’clima’)c) L ou (B DIV A >= C) ou não (A <= C)d) L e (C >= B DIV A) ou não (A<= C)

7) Para o enunciado a seguir foi elaborado um algoritmo que contém 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 fórmulas:

para sexo masculino peso ideal = (72.7 * altura) - 58para sexo feminino peso ideal = (62.1 * altura) - 44.7

inicio caracter: nome, alt, sexo; {preparar tela} leia (nome); leia (sexo); se sexo = M então peso_ideal (72.7 * altura) - 58 senão peso_ideal (62.1 * altura) - 44.7; escreva (peso_ideal); fim.

8) Seja o seguinte algoritmo:início inteiro: x,y,z; caracter: resposta; {prepara tela} leia (x,y); z x*y - 5; se z <= 0 então resposta ’A’

21

senão se z <= 100então resposta ’B’senão resposta ’C’;

escreva (z, resposta);fim.

Faça um teste de mesa e complete o quadro a seguir para os seguintes valores: x y z resposta

3 2

150 3

7

-1

-2

5

50

3

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) então se (a=b) e (b=c)

então mens ’Triângulo Equilátero’ senão se (a=b) ou (b=c) ou (a=c)

então mens ’Triângulo Isósceles’ senão mens ’Triângulo Escaleno’ senão mens ’Não e possível formar um triângulo’; escreva (mens); fim.Faça um teste de mesa e complete o quadro a seguir para os seguintes valores:

a b c mens1 2 3

22

3 4 52 2 44 4 45 3 3Elabore um algoritmo para os enunciados a seguir:

10) Ler dois números positivos (>0) e executar as seguintes operações sobre eles: adição, subtração, multiplicação e divisão.

11) Sejam dois pontos quaisquer do plano, de coordenadas (x1,y1) para o primeiro ponto e (x2,y2) para o segundo ponto, determine a distância entre eles. A fórmula que efetua tal cálculo é:

distância = raiz quadrada ((x2-x1) 2 + (y2-y1) 2 )

12) Sejam: número da conta do cliente, saldo, débito e crédito, elabore um algoritmo que calcule e mostre saldo atual = saldo - débito + crédito. Se saldo atual for maior ou igual a zero mostre a mensagem: ’Saldo Positivo’, senão a mensagem ’Saldo Negativo’.

13) Calcular e escrever o valor de y, sabendo-se que:

y = ax2 + bx + c; para x < ay = ax + b; para x = ay = ax2 + bx - c; para x > a

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

2x y ;

se x=y então z=3x;se nenhuma das situações ocorrer então z=0. 15) Calcular e escrever o valor de z para:

z = (a + b)2 + c . x + y - ab2

Obs: Não é possível dividir por zero. Caso isto ocorra escrever uma mensagem.

16) Sejam três números inteiros diferentes, coloque-os em ordem crescente.

23

17) Dados: a descrição do produto, a quantidade adquirida e o preço unitário, calcular e escrever o total (total = quantidade adquirida x preço unitário), 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 máxima em estoque e quantidade mínima em estoque de um produto, calcular e exibir a quantidade média = (quantidade máxima + quantidade mínima)/2. Se a quantidade em estoque for maior ou igual a quantidade média exibir a mensagem 'Não efetuar compra', senão exibir 'Efetuar compra'.

19) Dado um caracter qualquer verificar e escrever se é vogal (a, e, i, o, u).

20) Dado um número entre 1 e 12, escrever o número de dias do mês correspondente.Obs: Se o número escolhido for 2, correspondente ao mês de fevereiro, considerar 28 dias.

21) Calcular e mostrar o perímetro de retângulos sabendo-se que perímetro = 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 condições, um dos seguintes requisitos deve ser satisfeito:

Ter no mínimo 65 anos de idade.Ter trabalhado, no mínimo 30 anos.Ter no mínimo 60 anos e ter trabalhado no mínimo 25 anos.

São dados: o número 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 ’Não requerer’. Repetir o processo enquanto número do empregado > 0.Obs: É possível resolver utilizando apenas uma decisão.

23) Calcule a área de círculos através da fórmula A=PI*R 2 , onde R representa o raio e PI o número 3,14159. Repetir o processo enquanto R for positivo.Obs: Na linguagem Turbo Pascal PI é uma função predefinida, não é preciso declarar.

24

24) Os empregados de uma companhia recebem por hora trabalhada. Para as primeiras 40 horas, eles recebem o salário hora vezes o número de horas trabalhadas. Para as horas que excederem 40 horas eles recebem o dobro por hora. São fornecidos o número do empregado, o salário hora e o total de horas trabalhadas. Calcular o salário bruto. Parar o processo quando número do empregado for zero.

25) Dados: nome e duas notas de provas de um aluno, calcular e escrever a média do aluno, que é ponderada, ou seja, a primeira prova tem peso 4 e a segunda prova tem peso 6. Calcular também a media da classe, que é a média aritmética das médias 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 anosInfantil B --- de 8 a 10 anosJuvenil A --- de 11 a 13 anosJuvenil B --- de 14 a 17 anosSênior --- maiores de 17 anos

Repetir o processo até que nome = ’’ (vazio).

27) Dados: opção de pagamento, número da nota e valor da compra determine valor a pagar, considerando:Opção Situação 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 número de parcelas, o valor das parcelas e o total a pagar.

28) Dados: o nome e o salário bruto de 70 funcionários de uma empresa, calcular exibir o novo salário com reajuste de 15%.

29) Calcular e escrever a área de uma figura geométrica. O usuário poderá escolher a figura, sabendo-se que:

FIGURA ÁREA

1-Retângulo comprimento x largura

25

2-Círculo PI x raio2

3-Quadrado lado2

4-Triângulo (base x altura) / 25-Fim

Para calcular a área da figura escolhida são dados os valores necessários (fazer crítica para aceitar apenas valores > 0). Fazer crítica também na entrada da figura que poderá ser 1, 2, 3, 4 ou 5.

30) Dados: número de inscrição do aluno, ano de ingresso e ano de conclusão de um curso universitário, elaborar um algoritmo para calcular:- o tempo (em anos) que cada aluno levou para concluir o curso;- a média aritmética do tempo (em anos) para conclusão do curso.Fazer crítica dos dados:

sexo - permitir somente F ou M;ano de ingresso - permitir somente >=1993;ano de conclusão - permitir somente >=1995.

Repetir o processo enquanto número de inscrição <> 0.

31) A conversão de graus Farenheit para Centígrados é obtida pela fórmula c = 5/9 (f-32). Calcular e escrever uma tabela de graus Centígrados em função de graus Farenheit, com graus Farenheit variando de 51 a 150 de um em um.

32) Uma empresa pretende enviar, para outra cidade, via aérea, 50 mercadorias. Calcular a tarifa de embarque de cada mercadoria, sabendo-se que é cobrado 0,5% do valor da mercadoria. Calcular também a tarifa total para envio de todas as mercadorias.

33) O salário líquido de um empregado é obtido calculando o seu salário bruto e, então, deduzindo os descontos. O salário bruto é obtido pela fórmula salário bruto = horas trabalhadas * salário por hora. O desconto é calculado pela fórmula desconto = salário bruto * percentual de desconto. Escreva um algoritmo para calcular o salário líquido de 30 funcionários. O algoritmo deverá ler para cada funcionário o seu número, o salário por hora, o percentual de descontos e as horas trabalhadas e a seguir, calcular e exibir o salário bruto, os descontos e o salário líquido. Fazer crítica onde necessário.

34) Tem-se dados referente a altura e o sexo de 40 pessoas. Fazer um algoritmo que calcule e escreva:

26

.a maior e a menor altura do grupo .a média de altura das mulheres .o número de homens.

35) Dados: código do produto e preço de 15 produtos, elaborar um algoritmo para calcular e exibir: o maior preço e a média aritmética dos preços 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 numéricos positivos encontrar o menor entre eles. Parar quando número = 0.

38) Uma loja de discos está fornecendo descontos na compra de discos e fitas. Elabore um agorítmo 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;porcentagem de desconto = 5 + quantidade

39) Dadas 100 letras, individualmente, calcular quantas vezes ocorre cada uma das vogais.

INTRODUÇÃO À LINGUAGEM TURBO PASCAL

SÍMBOLOS BÁSICOS

Letras maiúsculas: A..Z;letras minúsculas: a..z;dígitos: 0..9;caracter sublinhado: _ eoutros caracteres especiais: * - = + / ( ) { } [ ] < > & % $ # @ : ; , . ? ” ’ \ ! ~ ` ^ espaço

Os símbolos especiais individualmente ou em pares caracterizam os operadores e delimitadores:

27

. fim de programa, decimal, seleção de membro em record( ) precedência, parâmetro+ adição, concatenação- subtração, negação/ divisão realnot nãodiv divisão inteiramod resto da divisão inteiraand eor ouxor ou exclusivo= igualdade, declaração<> desigualdade ou diferente> maior que< menor que>= maior ou igual<= menor ou igual* multiplicação:= atribuiçãoin pertence a ou está contido# prefixo que identifica o valor ordinal de caracter (0..255 - tabela ASCII), separador de lista‘ delimitador de sequência de caracteres$ prefixo que indica um número hexadecimal: declaração de tipo.. identifica intervalo em tipo ordinal simples ou faixa de valores; separa declarações e indica fim de definições, cabeçalhos, blocos, ...[ ] referência a um elemento de um array(. .) referência a um elemento de um array{ } delimita um comentário dentro de um programa(* *) delimita um comentário dentro de um programa

IDENTIFICADORES

São nomes simbólicos que servem para representar programas, unidades, constantes, tipos, variáveis, procedimentos, funções. Existem identificadores predefinidos e definidos pelo usuário.

Um identificador deve respeitar as seguintes regras: O 1º caracter tem que ser uma letra;

28

os demais podem ser letras, dígitos e o caracter sublinhado; somente os primeiros 63 caracteres são significativos; letras maiúsculas e minúsculas são consideradas iguais; não é permitido o uso de palavras reservadas e a redefinição de um identificador padrão impede o uso do procedimento, função ou constante normalmente associado a ele.

São 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 ARITMÉTICOS

+ adição- subtração* multiplicação/ divisão realdiv divisão inteira - quocientemod divisão inteira - resto

OPERADORES LÓGICOS

or ouand exor ou exclusivonot não

OPERADORES RELACIONAIS

> maior>= maior ou igual< menor<= menor ou igual= igual<> diferentein contido

29

TIPOS PREDEFINIDOS SIMPLES

TIPO LÓGICO

O tipo lógico é 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 apóstrofes. Podem ser: CHAR ou STRING.

CHAR Admite apenas um caracter.STRING Admite uma cadeia de até 255 caracteres. Deve-se declarar a

quantidade máxima de caracteres que se pretende guardar.

TIPOS NUMÉRICOS INTEIROS

TIPO INTERVALO DE VALORESBYTE 0 .. 255SHORTINT -128 .. 127INTEGER -32768 .. 32767WORD 0 .. 65535LONGINT -2147483648 .. 2147483647

TIPOS NUMÉRICOS REAIS

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

ESTRUTURA DE UM PROGRAMA EM TURBO PASCAL

30

Os programas em Turbo Pascal podem ser estruturados utilizando a seguinte sequência:cabeçalho do programa, área de declarações e bloco de comandos.

CABEÇALHO DO PROGRAMA

PROGRAM nome_programa; { Identifica o programa; é opcional. }USES nome_unit1, nome_unit2, ...; { Cláusula uses: identifica as bibliotecas (units) usadas pelo programa. }

UNITS PADRÃO DO TURBO PASCAL

SYSTEM Usada pelas outras units padrão, contém todos os procedimentos e funções padrões do Turbo Pascal. É sempre carregada no programa.

DOS Funções e procedimentos do DOS.CRT Rotinas que permitem acesso a recursos de hardware do micro

(vídeo e som).PRINTER Declara um arquivo texto chamado LST e associa-o com o

dispositivo LTP1 (impressora).GRAPH Contém rotinas gráficas. Requer a unit CRT.OVERLAY Permite uso de programas maiores do que a memória. Troca partes

do programa entre o disco e a memória.WINDOWS Funções e procedimentos do ambiente windows.STRINGS Possui procedimentos e funções que permitem manipular strings.

ÁREA DE DECLARAÇÕES

CONST constante1 = valor1; constante2 = valor2; ...; { Declara constante; o valor atribuído à constante determina o tipo da mesma; é opcional. }

TYPE tipo1 = definição_tipo1; tipo2 = definição _tipo2; ...; { Declara novos tipos a partir de outros já existentes; é opcional. }

VAR variável1, variável2, ...: tipo1; variávelx1, variávelx2: tipox; ...; { Declara variáveis a serem usadas no programa. }

BLOCO DE COMANDOS

O bloco de comandos começa com a palavra reservada BEGIN e termina com a palavra reservada END. Pode conter comandos, procedimentos e funções.

31

COMANDOS

BEGIN comando1; comando2; ...; END; {Define um bloco de comandos. Se a sintaxe do Turbo Pascal permite um comando simples também permitirá um bloco de comandos. }

CASE expressão OF {Comando condicional de múltipla escolha.}opção1: comando1;opção2: comando2;...ELSE comando; {O else (falso) é opcional. }

END;

FOR variável := início TO fim DO comando; { Comando com repetição automática, variável crescendo de início até fim. }

FOR variável := fim DOWNTO início DO comando; { Comando com repetição automática, variável decrescendo de fim até início. }

IF condição THEN comando1 ELSE comando2; { Comando condicional. Se condição for verdade o comando1 é executado, caso contrário, o comando2 é executado. O else (falso) é opcional. }

REPEAT comando; ... UNTIL condição; { Executa o comando até que a condição seja verdade. }

WHILE condição DO comando; { Executa o comando enquanto condição for verdade. }

PROCEDIMENTOS E FUNÇÕES PREDEFINIDOS

CHR(n) Retorna o caracter correspondente ao código ASCII n. O mesmo que #código.

CLREOL Apaga todos os caracteres desde a posição do cursor até o fim da linha, mantendo a localização do cursor.

CLRSCR Limpa a tela e coloca o cursor no canto superior esquerdo.

32

DELAY(x) Espera durante x milisegundos.GETDATE(ano, mês, dia, diasem) Retorna a data do sistema operacional.GETTIME(hora, min, seg, s100) Retorna o horário 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 número pseudo aleatório entre 0 e

faixa. Se faixa não for especificada retorna valor entre 0.0 e 1.0.

RANDOMIZE Inicializa o gerador de números aleatórios com o valor atual do relógio do sistema.

READLN(variável) Lê variável.READKEY Retorna um caracter lido do teclado.SOUND(hz) Inicia um tom na frequência 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 maiúscula.WINDOW(col1,lin1,col2,lin2) Define em modo texto uma janela no vídeo.WRITE(‘...’, variável) Escreve o que estiver entre apóstrofes e/ou o

valor da variável.

Exemplos de Programas em Turbo Pascal:

{ Dados dois valores numericos maiores que 0 calcular e }{ 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........:');

33

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

34

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

35

textcolor(15); textbackground(0); clrscr;end.

36