Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Linguagem Pascal - Apostilas - Informática Part3, Notas de estudo de Informática

Apostilas de Informática sobre a Linguagem Pascal, Por que Turbo Pascal, Equipamento necessário, Um programa em Pascal, O primeiro programa, Estrutura de um programa simples, Noções Básicas preliminares, Elementos básicos do Turbo Pascal.

Tipologia: Notas de estudo

2013

Compartilhado em 28/08/2013

Garoto
Garoto 🇪🇸

4.6

(121)

1 / 21

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
43
Writeln('numero nota');
For n:=1 to No_de_alunos Do
If a[n]<5
Then Writeln(n:2,a[n]:10:1);
End.
Os exemplos de procedure a seguir são padrões de código que você pode usar em diversas ocasiões.
As duas primeiras são para digitação de arrays: na primeira conhecemos o número de termos t a ser
digitado; na segunda, não conhecemos t: o usuário digitará 1 para indicar o fim da digitação do
array. A terceira procedure lista o array na tela. O tipo do array Tvetor foi definido numa declaração
Type na área global. O programa a seguir usa estas procedures.
Procedure DigitaNConhec(var v: TVetor; t: integer); { t é conhecido }
var i: integer;
begin
writeln(‘Digite os elementos’);
for i := 1 to t
do readln(v[i]);
end;
Procedure DigitaNDesc(var v: TVetor; var t: integer);
{ t retorna o número de elementos digitados }
begin
writeln(‘Digite os elementos – digite -1 para encerrar’); { uso do flag 1 }
t := 1;
readln(v[1]);
while (v[1] <> -1)
do begin
t := t + 1;
readln(v[t]);
end;
t := t 1;
end;
Procedure ExibeVetor(var v: TVetor; t: integer); { t já é conhecido }
var i: integer;
begin
writeln(‘Elementos do vetor’);
for i := 1 to t
do writeln(v[i]); { ou write(v[i], ‘ ‘); }
end;
Program MedNotas;
Uses Crt;
type TMaterias = array[1..5] of string;
TNotas = array[1..5] of real;
var vMaterias: TMaterias;
vNotas: TNotas;
const iNotas = 5;
procedure DigitaMaterias(var v: TMaterias; t: integer);
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15

Pré-visualização parcial do texto

Baixe Linguagem Pascal - Apostilas - Informática Part3 e outras Notas de estudo em PDF para Informática, somente na Docsity!

Writeln('numero nota'); For n:=1 to No_de_alunos Do If a[n]< Then Writeln(n:2,a[n]:10:1); End.

Os exemplos de procedure a seguir são padrões de código que você pode usar em diversas ocasiões. As duas primeiras são para digitação de arrays: na primeira conhecemos o número de termos t a ser digitado; na segunda, não conhecemos t: o usuário digitará – 1 para indicar o fim da digitação do array. A terceira procedure lista o array na tela. O tipo do array Tvetor foi definido numa declaração Type na área global. O programa a seguir usa estas procedures.

Procedure DigitaNConhec(var v: TVetor; t: integer); { t é conhecido } var i: integer; begin writeln(‘Digite os elementos’); for i := 1 to t do readln(v[i]); end;

Procedure DigitaNDesc(var v: TVetor; var t: integer); { t retorna o número de elementos digitados } begin writeln(‘Digite os elementos – digite -1 para encerrar’); { uso do flag – 1 } t := 1; readln(v[1]); while (v[1] <> -1) do begin t := t + 1; readln(v[t]); end; t := t – 1; end;

Procedure ExibeVetor(var v: TVetor; t: integer); { t já é conhecido } var i: integer; begin writeln(‘Elementos do vetor’); for i := 1 to t do writeln(v[i]); { ou write(v[i], ‘ ‘); } end;

Program MedNotas; Uses Crt; type TMaterias = array[1..5] of string; TNotas = array[1..5] of real; var vMaterias: TMaterias; vNotas: TNotas; const iNotas = 5;

procedure DigitaMaterias(var v: TMaterias; t: integer);

var i: integer; { idêntica à DigitaNConhec } begin writeln('Digite as materias'); for i := 1 to t do readln(v[i]); end;

procedure DigitaNotas(var v: TNotas; t: integer); var i: integer; { idêntica à DigitaNConhec } begin writeln('Digite as Notas'); for i := 1 to t do readln(v[i]); end;

procedure Lista(var vm: TMaterias; var vn: TNotas; t: integer); var i: integer; { similar à ExibeVetor } begin writeln('Materias Notas'); for i := 1 to t do begin writeln; write(vm[i]:8, vn[i]:8:1); end; end;

function Media(var v: TNotas; t: integer): real; var i: integer; soma: real; begin soma := 0; for i := 1 to t do soma := soma + v[i]; Media := soma /t; end;

{ programa principal } begin clrScr; { limpa a tela } DigitaMaterias(vMaterias, iNotas); writeln; DigitaNotas(vNotas, iNotas); writeln; Lista(vMaterias, vNotas, iNotas); writeln; write('Media: ', Media(vNotas, iNotas):9:1); readkey; end.

VIII.2.2 – Conversão de números binários

Na declaração acima, definimos um Array de 40 elementos chamado 'a'. Ele é constituído de 10 linhas numeradas de 1 a 10 por 4 colunas numeradas de 2 a 5. O acesso a cada elemento é feito da seguinte forma: a[1,2] a[1,3] ... a[1,5] a[2,2] a[2,3] ... a[2,5] ... ... ... ... a[10,2] a[10,3] ... a[10,5]

Poderíamos definir o mesmo array da seguinte forma: Var a : array[1..10] of array[2..5] Of Integer;

ou da seguinte forma: Type b = array[2..5] Of Integer; Var a : array[1..10] Of b;

Podemos também definir arrays de maior número de dimensões pelo mesmo processo. O exemplo a seguir tem três dimensões:

Var a : array[1..5,1..6,1..7] Of Integer;

Program Matriz1; {Programa Matriz => lê uma matriz do teclado e em seguida multiplica uma coluna ou linha por uma constante. } Uses CRT;

(* definição das constantes do programa *) Const NUM_MAX_COL = 20; (* número máximo de colunas *) NUM_MAX_LIN = 10; (* número máximo de linhas *) Var a : array[1..NUM_MAX_LIN,1..NUM_MAX_COL] of integer; i,j,k,p, nl,nc : integer; lc : char; Begin ClrScr; (* lê o número de linhas da matriz *) Repeat Write('Numero de linhas da matriz ----------> '); Readln(nl); Until nl<=NUM_MAX_LIN; (* lê o número de colunas da matriz *) Repeat Write('Numero de colunas da matriz ---------> '); Readln(nc); Until nc<=NUM_MAX_COL; (* lê a constante de multiplicaçåo *) Write('Constante para multiplicação --------> '); Readln(k); (* pergunta se é uma coluna ou linha para ser multiplicada *) Repeat Write('Coluna ou linha para mult. (c/l) ----> '); Readln(lc); Until (lc='c') Or (lc='l');

(* pergunta pelo número da coluna ou da linha a ser multiplicada ) If lc='c' Then Repeat Write('Numero da coluna para a multip. -----> '); Readln(p); Until p<=nc Else Repeat Write('Numero da linha para a multip. ------> '); Readln(p); Until p<=nl; Writeln; TextBackGround(7); TextColor(15+16); Gotoxy(24,7); Write('Entre com os elementos da matriz'); textcolor(8); For i:=1 to nl do for j:=1 to nc do Begin gotoxy(8j,i+8); Write('+'); End; TextBackGround(0); Textcolor(13); (* lê os elementos da matriz *) For i:=1 to nl do for j:=1 to nc do Begin gotoxy(8j,i+8); Read(a[i,j]); End; _( faz a multiplicaçåo da coluna ou da linha )_ if lc='c' Then for i:=1 to nl do a[i,p]:=a[i,p]k Else for j:=1 to nc do a[p,j]:=a[p,j]k; TextBackGround(0); TextColor(15+16); Gotoxy(24,7); _( apresenta o resultado final na tela *)_ Write('........Resultado final.........'); textcolor(13);

For i:=1 to nl do for j:=1 to nc do Begin gotoxy(8*j,i+8); Write(a[i,j]); End; ReadKey; End.

writeln('Digite elementos da matriz: - 1:fim da linha - 2:fim da matriz'); m := 1; n := 1; iCol := 0; gotoXy(n4, m+1); { digita a primeira coluna da primeira linha } readln(mat[m, n]); while (mat[m, n] <> -2) do begin while (mat[m, n] <> -1) and (mat[m, n] <> -2) do begin n := n + 1; gotoXy(n4, m+1); read(mat[m, n]); end; if (mat[m, n] <> -2) then begin if n > iCol { guarda o número maior de colunas digitado } then iCol := n; mat[m, n] := 0; { zera o último elemento digitado } m := m + 1; { desce uma linha } n := 1; { reinicia a digitação na primeira coluna } gotoXy(n*4, m+1); read(mat[m, n]); end; end; m := m - 1; n := iCol - 1; end;

{ programa principal } begin clrScr; DigMat1Lin(mMat, 3, 5); ExibeMatriz(mMat, 3, 5); readkey; clrScr; DigMatNCol(mMat, 3, 5); ExibeMatriz(mMat, 3, 5); readkey; clrScr; DigMatAberta(mMat, lin, col); ExibeMatriz(mMat, lin, col); readkey; end.

IX – OUTROS TIPOS ESTRUTURADOS

IX.1 - Tipo Record

Até o presente momento, trabalhamos com estruturas que envolvem dados do mesmo tipo. O tipo Record nos permite criar um tipo de dado que é composto de itens de vários tipos. Estes itens dos quais o tipo Record é formado recebem o nome de campos. Suponha que queiramos armazenar os seguintes dados a respeito de uma pessoa: Nome – Idade – Sexo – Altura. Até o momento, não temos nenhum tipo de variável capaz de fazer isso, pois os quatros itens são de tipos diferentes, a saber: Nome ---> String Idade --> Integer Sexo ---> Char Altura -> Real

Como veremos a seguir, o tipo Record pode resolver o problema.

IX.1.1 - Definição de Records

A definição de uma variável do tipo record começa com a palavra reservada Record. Seguem-se os campos (variáveis) e os seus tipos. A palavra reservada End seguida de ponto e vírgula termina a definição do Record. Exemplo: Var Nome_Do_Registro : Record Nome : String[30]; Idade : Integer; Sexo : Char; Altura : Real; End;

OU: Type Registro = Record Nome : String[30]; Idade : Integer; Sexo : Char; Altura : Real; End; Var Nome_Do_Registro : Registro;

IX.1.2 - Acesso aos elementos da estrutura

Para acessar os elementos da estrutura, ou seja, os campos, nós devemos incluir o nome da variável record seguida de um ponto e depois o nome do campo. Exemplos:

Nome_Do_Registro.Altura := 1.78; Nome_Do_Registro.Sexo := 'M'; Etc...

Program ExRecord1; {Lê uma variável do tipo record do teclado e em seguida a mostra no monitor} Uses CRT; Type Pessoas = Record Nome : String[30]; Idade : Integer; Sexo : Char;

Write('Altura -------> '); Readln(p[i].Altura); Writeln; fim: Until ((p[i].Nome='0') or (i=20)); If i<20 then i:=i-1; For x:=1 to i-1 do For y:=x+1 to i do If ((p[x].nome) >= (p[y].nome)) then begin s:=p[x]; p[x]:=p[y]; p[y]:=s; End; ClrScr; Writeln('NOME':30,'IDADE':6,'SEXO':5,'ALTURA':8); For x:=1 to i do Writeln(p[x].nome:30,p[x].idade:6,p[x].sexo:5,p[x].altura:8:2); End.

IX.1.3 - Declaração With

Se existe uma série de campos de uma variável do tipo record que será acessada repetidamente, pode ser cansativo ter que escrever o nome da variável na frente do campo diversas vezes. Para isto, podemos utilizar a declaração With. Sua forma é:

WITH Variável_do_tipo_record DO comando;

ou:

WITH Variável_do_tipo_record DO Begin comando_1; comando_2;

... End;

Program Exemplo_1; { lê uma variável tipo record e em seguida a mostra } Uses CRT; Type Pessoas = Record Nome : String[30]; Idade : Integer; Sexo : Char; Altura : Real; End; Var p : Pessoas; Begin ClrScr;

With p do Begin Write('Nome ------> '); Readln(Nome); Write('Idade -----> '); Readln(Idade); Write('Sexo ------> '); Readln(Sexo); Write('Altura ----> '); Readln(Altura); Writeln; Writeln('Você digitou os seguintes dados :'); Writeln;Writeln; Writeln(nome); Writeln(idade); Writeln(sexo); Writeln(altura:6:2); End; End.

IX.2 - Tipo Set

Na matemática, usamos uma linguagem não só adequada às suas necessidades, mas também ao estudo de outras ciências. Uma boa parte dessa linguagem vem da teoria de conjuntos. Em matemática, definimos um conjunto como sendo uma coleção de objetos, nomes, números etc. Chamamos de elementos aos objetos, nomes, números etc. que pertencem a esse conjunto. Na linguagem Pascal também podemos utilizar estes conceitos. Um conjunto é uma coleção de elementos semelhantes. O tamanho do conjunto pode ser variável, até no máximo 256 elementos. Um conjunto pode consistir em zero ou mais elementos do mesmo tipo base que, obrigatoriamente deverá ser um tipo simples, podendo ser qualquer escalar com exceção do REAL. Os conjuntos têm seus elementos inclusos em colchetes e separados por vírgulas. Podemos ter também a representação da sub-faixa. Exemplos: [1,3,5,7,9,11,13] - alguns inteiros [3..7] - inteiros entre 3 e 7 [3,4,5,6,7] - equivalente ao anterior ['A'..'Z'] - caracteres alfabéticos maiúsculos [gol,passat,fusca] - marcas de carro [] - conjunto vazio

A forma geral para declaração de conjuntos é: Type = SET OF ;

Exemplos: Type caracteres = set of Char; letras_maiúsculas = set of 'A'..'Z'; dígitos = set of 0..9; carros = set of (fusca,gol,escort,opala); Var c : caracteres; letras : letras_maiúsculas;

Uses CRT; Type símbolos = Set of Char; Var Maiusc, Minusc, Números : símbolos; tecla : char; Begin ClrScr; Maiusc := ['A'..'Z']; Minusc := ['a'..'z']; Numeros := ['0'..'9']; Repeat Read(kbd,tecla); If tecla IN Maiusc Then Writeln('MAIUSCULA') Else if tecla IN minusc Then Writeln('minuscula') else if tecla IN numeros Then Writeln('numero') else Writeln('nada'); Until tecla = '?'; End.

Program ExSet3; {Programa que conta o número de vogais, número de consoantes e de brancos numa frase lida do teclado} Uses CRT; Type símbolos = set of char; Var Alfabeto, vogais, consoantes : símbolos; frase : string[50]; v,c,b,x : integer; Begin Vogais:=['a','e','i','o','u','A','E','I','O','U']; alfabeto:=['a'..'z']+['A'..'Z']; consoantes:=alfabeto-vogais; Clrscr; Write('Digite uma frase --> '); Readln(frase); b:=0;c:=0;v:=0; (* a função length() devolve o tamanho da string *) For x:=1 to length(frase) do if frase[x] in vogais then v:=v+ else if frase[x] in consoantes then c:=c+ else if frase[x] = ' ' then b:=b+1; Writeln; writeln(b,' brancos'); Writeln(c,' consoantes'); Writeln(v,' vogais'); End.

X – EXERCÍCIOS E USO DO TURBO PASCAL

X.1 – Exercícios: uso de comandos seqüenciais: faça programas para as tarefas a seguir usando apenas comandos sequenciais e as funções da lista.

X.1.1 digitar três números reais a, b, c. Calcular a média m dos três. Imprimir os três números digitados e o resultado. Alterar depois o programa para imprimir formatado com duas decimais.

X.1.2 digitar um número inteiro. Imprimir o valor do algarismo das unidades.

X.1.3 idem anterior: digitar um número inteiro > 10. Imprimir o valor do algarismo das dezenas.

X.1.4 idem anterior: digitar um número inteiro > 100. Imprimir o valor do algarismo das centenas.

X.1.5 digitar um número inteiro com dois algarismos. Imprimir invertido.

X.1.6 digitar dois números inteiros a b. Trocá-los de posição a=b e b=a. Imprimir invertido.

(Evaristo, p. 44)* X.1.7 digitar um número real. Imprimir o quadrado, formatado. Use uma função.

X.1.8 digitar uma temperatura em graus C e imprimi-la em grau F, sendo a fórmula de conversão: F = (9 * C + 160) / 5

X.1.9 digitar uma temperatura em graus F e imprimi-la em grau C, sendo a fórmula de conversão: C = (F - 32) * (5 / 9)

X.1.10 calcular e imprimir o volume de uma lata de óleo, sendo a fórmula: volume = Pi * R^2 * altura. Usar a função e a constante Pi. (Evaristo, p. 47) X.1.11 digitar duas frações ordinárias. Somá-las e imprimir o resultado em forma de fração.

X.1.12 uma loja vende em três parcelas. A segunda e terceira parcelas são valores inteiros; a diferença é jogada na primeira parcela. Faça um programa para digitar o valor da venda e imprimir o valor das três parcelas.

X.1.13 digitar um valor em segundos (p. e.: 3850) e imprimir este valor convertido em horas, minutos e segundos.

X.1.14 faça um programa para um caixa eletrônico pagar uma quantia qualquer em reais, dizendo quantas notas de 50, 20, 10, 2, 1. Não há centavos.

Funções predefinidas (Evaristo, p. 43): para uso com a lista de exercícios anterior.

função argumento valor Significado abs(x) real, integer real, integer valor absoluto de x ArcTan(x) Real real número cuja tangente é x chr(x) Byte char caractere ASCII relativo a x cos(x) Real real cosseno de x exp(x) Real real exponencial de x (ex) frac(x) Real real parte fracionária de x ln(x) Real real logaritmo natural de x odd(x) Integer boolean se x é impar ord(x) Ordenado integer número de ordem de x no tipo de dado pred(x) Ordenado ordenado predecessor de x: ver succ(x) round(x) Real integer arredondamento de x Sin(x) Real real seno de x sqr(x) real, integer real, integer quadrado de x sqrT(x) real, integer real raiz quadrada de x succ(x) Ordenado ordenado sucessor de x: ver pred(x)

X.2.13 digitar a idade de um nadador, classificando-o em uma das categorias: infantil A: 5 a 7 anos, infantil B: 8 a 10 anos, juvenil A: 11 a 13 anos, juvenil B: 14 a 18 anos, senior: maior de 18 anos. Imprimir a idade e a categoria. X.2.14 digitar uma data, após 1/1/2000. Imprima o dia da semana em que cai, admitindo (hipoteticamente) que o dia 1/1/2000 foi um domingo e todos os meses têm 30 dias. X.2.15 no mesmo problema anterior, passe a considerar a contagem correta dos dias. X.2.16 digitar a data de nascimento de uma pessoa (d1, m1, a1) e a data de hoje (d2, m2, a2). Calcular a sua idade em anos, meses e dias. Admita que todos os meses têm 30 dias. X.2.17 no mesmo problema anterior, passe a considerar a contagem correta dos dias. X.2.18 digitar os lados de um triângulo. Imprimir informando se é retângulo ou não.

X.3 – Exercícios – uso de for, while e repeat: faça programas para as tarefas a seguir usando os comandos anteriores mais for, while e repeat :

X.3.1 reescrever o programa de colocar três números em ordem (LblGoTo1, apostila, p. 30), sem usar labels e goTo. X.3.2 reescrever o programa de cálculo Case1 (apostila, p. 22), para que ele volte a pedir a digitação dos dois números:  usando while... do na primeira versão  usando repeat... until na segunda versão

X.3.3 escrever um programa que: (1) digita dois números, lados de um terreno retângulo; (2) calcula a área para terrenos formados variando do menor lado ao maior; (3) imprime uma tabela com duas entradas (linha e coluna) com as áreas calculadas (linha x coluna). Reescreva em seguida o programa para voltar e pedir para digitar os lados novamente. X.3.4 escrever um programa que: (1) digita duas taxas de juro de mora, ao mês (a diferença máxima entre elas é de 3%); (2) calcula e imprime uma tabela com os juros de mora: nas colunas devem variar as taxas de 0,5% em 0,5% e nas linhas devem variar os dias (1 a 10 dias). Reescreva em seguida o programa para voltar e pedir para digitar as taxas novamente. X.3.5 escrever um programa que: (1) digita os seguintes dados de uma progressão: a 1 (primeiro termo), n (número de termos, n<=10) e r (razão); em seguida digita se é PA ou PG; (2) calcula e imprime uma tabela com as colunas: i, termo ai e soma Si; (3) volta depois a pedir para digitar as variáveis novamente. X.3.6 uma loja vende a prazo em 1 2 3 4 ou 5 prestações, sem juros, aceitando entradas de 10% 15% 20% 25% e 30% do valor da compra. Escreva um programa para imprimir uma tabela variando as entradas no cabeçalho das colunas e o número de prestações variando nas linhas. X.3.7 altere o programa anterior, pedindo para o usuário digitar o intervalo das entradas (de – até) e a quantidade máxima de prestações. (Evaristo, p.72, 81, 86) X.3.8 digitar duas temperaturas (de—até, inteiros) em graus Farenheit. Incrementar de 1 em 1, convertendo para C = 5 * (Farenheit – 32) / 9. Imprimir uma tabela com as duas temperaturas. X.3.9 digitar um número inteiro n. Imprimir, dizendo se é primo ou não, voltando depois o programa a pedir para digitar um número novamente. Refaça depois o programa para: se n não for primo, informar seu menor e seu maior divisores. X.3.10 digitar um número inteiro = número de elementos de um conjunto (n < 6). Imprimir os pares do produto cartesiano A x A. X.3.11 digitar um número inteiro = número de elementos de um conjunto (n < 6). Imprimir os pares do produto cartesiano A x A, sendo que não pode haver elementos repetidos, por ex.: (x, x) não pode pois x = x e (y, x) não pode se já houver o (x, y).

X.3.12 digitar dois números. Calcular o máximo divisor comum entre os dois. Pode usar o algoritmo de Euclides ou outro que você invente. X.3.13 digitar dois números. Calcular o mínimo múltiplo comum entre os dois. Pode usar o algoritmo ensinado nas aulas de aritmética ou outro que você invente. X.3.14 escreva um programa para calcular a soma dos n primeiros termos da seqüência 1/2 3/5 5/ ... X.3.15 escreva um programa p/ calcular a soma dos n primeiros termos da seqüência 1 -1/2 1/3 - 1/4... X.3.16 O número 3025 possui a seguinte característica: 30 + 25 = 55 e 55^2 = 3025. Faça um programa que liste todos os números com 4 algarismos com esta propriedade. X.3.17 Escreva o programa de urna eletrônica para o grêmio da escola:  são dois candidatos: 33-Fala Sério e 44-Só Promessas; se digitar 00-voto nulo; se digitar 99- fim do programa; qualquer outro número anula o voto  cada votação deve ser confirmada, inclusive voto nulo; se não coincidir a segunda digitação, manda repetir o voto  no final o programa deve informar a quantidade de votos das três modalidades e informar o candidato eleito. X.3.18 Escreva um programa que escreva todos os subconjuntos com três elementos do conjunto {1, 2, 3... }, n dado.

X.4 – Exercícios – uso de functions e procedures:

X.4.1 reescreva o segundo programa da lista anterior (X.3.2) para que ele volte a pedir a digitação dos dois números. Faça agora com que cada operação seja feita por uma função separada: Soma, Subtrai, Multiplica, Divide, devendo cada função devolver o resultado; faça também a digitação em uma procedure separada.  faça uma primeira versão usando variáveis globais  faça uma segunda versão passando os parâmetros para a função X.4.2 escrever um programa que: digita dois números, base e expoente; calcula e imprime a potência (base elevada ao expoente) usando uma função para o cálculo. O programa deve voltar e pedir para digitar os dados novamente; se o usuário digitar zeros, pára. X.4.3 reescrever o programa que digita os dados de uma progressão: a 1 (primeiro termo), n (número de termos, n<=10) e r (razão) – programa X.3.5 da lista anterior. Calcular e imprimir uma tabela com as colunas: i, termo ai e Si. Use a função de potência do X.4.2. X.4.4 usando a fórmula e o programa que você fez de conversão de temperaturas (C = 5 * (F– 32) / 9), faça um programa em que o usuário digita, num menu:  se digitar F: digita um valor e converte o valor de C em F, usando uma função,  se digitar C: digita um valor e converte o valor de F em C, usando uma função,  se digitar P: pára  faça uma procedure para digitar os números e a opção desejada. X.4.5 transforme os programas de cálculo do máximo divisor comum e mínimo múltiplo comum (programas X.3.12 e X.3.13 da lista anterior) em funções. Faça um programa em que o usuário digita, em um menu:  se digitar M: digita os números e calcula o mMc  se digitar D: digita os números e calcula o mDc  se digitar P: pára  faça uma procedure para digitar os números e a opção desejada. X.4.6 a fórmula geral de cálculo de juros simples é: j = cin, onde: j: valor do juro, c: valor do capital, i: a taxa de juros, n: número de períodos. Admita que a taxa de juros é dada em % ao mês e n é, então, o número de meses. Faça um programa que calcule qualquer uma destas quatro variáveis, conhecendo as outras três. Assim:

 imprime o vetor v1 ordenado; use a procedure já estudada. X.5.9 O programa anterior é um método conhecido de colocar um vetor em ordem. O outro é o programa ExArray2 da página 44. Faça este e o ExArray3 para exercitar o método. Use as procedures de digitar um vetor e imprimir já estudadas. Faça uma procedure separada ordenar. X.5.10 Faça um programa que (JE 128):  digita um vetor v (quantidade de elementos em aberto); use a procedure já estudada,  em seguida, digita um novo elemento x,  ordena o vetor (use a procedure do anterior), insere o elemento x no vetor mantendo-o ordenado e imprime o vetor com o elemento x inserido (use a procedure já estudada). X.5.11 Dado o polinômio P(x) = a 0 xn^ + a 1 xn-1^ + a 2 xn-2^ + ... + an-2x^2 + an-1x^1 + an, escreva um programa que permita (JE 128):  digitar um vetor v (quantidade de elementos em aberto – use a procedure já estudada) com os coeficientes a 0 até an  em seguida, digitar um valor para x,  calcular e imprimir y = P(x). X.5.12 Faça um programa com menu que permita: (1) digitar um número binário qualquer e imprimir o valor convertido para decimal, (2) digitar um número decimal qualquer e imprimir o valor convertido para binário e (3) parar. Use funções para (1) e (2). X.5.13 Um dos métodos mais usados para cálculo de dígito verificador (dv) é o módulo 11, cuja seqüência de cálculo é a seguinte:  multiplicar cada dígito da direita para a esquerda por 2, 3, 4, 5..., somando o resultado de cada multiplicação  soma  dividir a soma por 11; o dv = 11 – resto da divisão; se o dv > 9, dv = 0. Faça uma função para cálculo deste dv e coloque-o dentro de um programa que digita um número e imprime o dv calculado. X.5.14 O dv do CPF é composto de dois algarismos calculados pelo módulo 11 em duas vezes:  na primeira, consideram-se 9 algarismos  gera-se o décimo algarismo = dv  na segunda, consideram-se 10 algarismos: os 9 anteriores mais o dv1  gera-se dv2. Faça um programa para digitar um número de CPF completo. O programa confere o dv ( últimas posições) e imprime uma mensagem: “cpf aceito” ou “cpf incorreto”. O programa deve voltar para digitar outro número; caso digite zeros, encerra. X.5.15 Faça um programa para digitar um valor em reais e imprimir o valor por extenso. Se digitar zeros, pára. X.5.16 Um banco usa uma chave para criptografar valores que é uma string com 10 letras não repetidas. Faça um programa que permita: (1) digitar a chave a usar no dia, (2) digitar um número e imprimir o valor criptografado, (3) digitar um valor criptografado e convertê-lo para número e (4) parar. X.5.17 Um recurso comum em editores de texto é contar as palavras. Faça um programa que conta o número de palavras escritas numa frase. Se a frase digitada for vazia, pára (JE 141). X.5.18 Um banco de dados não pode aceitar nomes grandes. Faça um programa para digitar um nome e simplificar os nomes do meio. Se o nome digitado for vazio, pára. X.5.19 O programa abaixo (JE 45) implementa um recurso não existente no Pascal: converter uma letra maiúscula para minúscula. Ele usa a função chr(x) – lista de exercícios 1 – e a função ord(x), sabendo que ord(‘A’) = 65 e ord(‘a’) = 97 e as demais letras maiúsculas e minúsculas estão na seqüência. program LowCase; var minuscula, Maiuscula: char; begin writeln(‘Digite uma letra maiúscula’); readln(Maiuscula); minuscula := chr(ord(Maiuscula) + 32); writeln(‘LowCase(‘, Maiuscula, ‘) = ‘, minuscula);

end; A função upCase(x) faz o contrário: converte x para maiúsculo. Agora, sabendo que um banco de dados precisa garantir que o campo NomeCliente venha escrito com o primeiro caractere de cada nome em maiúsculo e os demais em minúsculo, faça um programa que permita digitar o NomeCliente de qualquer forma (maiúsculas ou minúsculas) e o devolva devidamente formatado. X.5.20 Faça um programa para ajudar dois jogadores no jogo da velha, com as seguintes funções:  desenhar a tela inicial do jogo: uma matriz 3 x 3 na tela, separada por traços,  pedir para cada jogador (do Zero ou X) digitar a posição em que joga (1:1 a 3:3); escrever 0 ou X depois na posição assinalada,  verificar depois de cada jogada: se algum jogador ganhou ou se acabou o jogo e perguntar se deseja jogar novamente.

Funções para utilizar com strings e arrays:

length(x): integer função: tamanho da string; length(x) = ord(x[0]) sizeOf(x): integer função: retorna o número de bytes ocupado pela variável x; válida também para arrays concat(s1, s2…sn: string): string função: junta strings; também pode somar : s:=s1+s2... Pos(s1, s2: string): byte função: retorna a posição de s1 dentro de s2; ou 0 se não existir copy(s: string; i, n:integer): string função: retorna a substring de n caracteres iniciada em i delete(var s: string; i, n: integer) procedure: exclui n caracteres a partir da posição i; retorna s insert(s1: string; var s2: string; i:integer)

procedure: insere s1 em s2 a partir da posição i

val(s:string; var v: integer/real; var r: integer)

procedure: converte string s para número em v; r= 0 se operação deu certo ou r = primeiro caractere não numérico encontrado str(x: integer/real; var s: string) procedure: converte um número em uma string

X.6 – Comandos e atalhos para uso do Turbo Pascal e para uso do debug

X.6.1 Procedimentos para executar o Pascal

 Criar um atalho para executar o Pascal: o nome do programa que executa o Turbo Pascal é tpx.exe. Se foi adotado o diretório default para a instalação do TP, o programa estará no diretório C:\tp\bin. Para criar o atalho, copia-se o programa (clicar no programa e apertar as teclas Ctrl C ); depois clica-se com o botão direito na janela do desktop e escolhe-se o menu “colar atalho”.  Sempre que entrar no TP, o primeiro comando a executar é “File / Change dir”; em seguida, fazer o caminho até a sua pasta, dando clique duplo e depois clicando em ok. Isto fará com que todos os arquivos que você salvar sejam gravados na sua pasta.  Depois de digitado o programa, grave-o antes de testá-lo, pois o computador pode travar e causar a perda do conteúdo. Para salvar o programa: menu “File / Save”. O arquivo será gravado na pasta assinalada pelo “File / Change dir”.  Abrir um arquivo: após executar o “File / Change dir”, para abrir um arquivo, use o menu “File / Open”. Surgirá uma janela com todos os arquivos com terminação .pas. Clique em cima do que deseja abrir e depois em Open.  Para executar o programa use o menu Run / Run, ou aperte as teclas Ctrl F9. Se desejar apenas compilar, sem executar, use o menu Compile / Compile, ou aperte as teclas Alt F.