Professional Documents
Culture Documents
Var c: string[40];
* Comando de Atribuio
Sintaxe: <identificador_varivel>:= <expresso>; Exemplos: idade:=20; nome:='Joo'; Comandos de Sada Sintaxe: write <ou> writeln ('<string>', <varivel>); Exemplos: write ('Bom dia'); write ('Data'); writeln ('Bom dia'); writeln ('Data');
Comandos de Entrada Sintaxe: read <ou> readln (<variveis>); Exemplos: read (nota1,nota2,nota3);
1 precedncia
2 precedncia
3 precedncia
4 precedncia
*
Para o desenvolvimento de programas em Pascal importante saber quais so as regras de precedncia de operadores, ou seja, qual operao ser executada primeiro
* Comandos de Seleo
Sintaxe: if <condio> then begin <comando ou bloco> end else begin <comando ou bloco>; end; Exemplos: readln(idade); if idade>=18 then writeln ('A pessoa maior de idade') else writeln ('A pessoa considerada menor');
* Comandos de Repetio
WHILE Sintaxe: while (<condio>) do begin <comandos>; end REPEAT Sintaxe: repeat <comandos>; until (<condio>); FOR Sintaxe: for(<varivel>:=<valor_inicial> to <valor_final>) do begin <comandos>; end OBS.: "TO" incrementa(+1) um-a-um e "DOWNTO" decrementa(-1) um-a-um.
Sempre quando programamos devemos estar seguros de que os dados introduzidos em nosso software satisfaam uma determinada condio. Logo, consistncia de dados nada mais do que "obrigar" o utilizador a digitar, inserir valores corretos para que atinjam um determinado fim na execuo do programa. Por exemplo:(vamos pegar uma parte de um programa) ... writeln(`Digite o numerador`); readln(num); repeat writeln(`Digite o denominador`); readln(deno); until (deno<>0); resultado:=num/deno; ... Assim asseguramos de que o valor de "deno" nunca ser "0". Poderamos usar outra maneira... Por exemplo: ... writeln(`Digite o numerador`); readln(num); deno:=0; {fizemos isto para o valor de "deno" entrar no "while", mas depois ele ser mudado} while(deno=0) do begin writeln(`Digite o denominador`); readln(deno); end; resultado:=num/deno; ...
* - Sintaxe:
program copia; var f: text; c:string[40]; i:integer; nota1:integer; nota2:integer; nota3:integer; begin assign(f,'destino.txt'); rewrite(f); for i:=1 to 10 do begin writeln('Escreva nome do aluno'); readln(c); write(f,c,' - '); writeln('Escreva a nota do 1P'); readln(nota1); write(f,nota1,' - '); writeln('Escreva a nota do 2P'); readln(nota2); write(f,nota2,' - '); writeln('Escreva a nota do 3P'); readln(nota3); write(f,nota3); writeln(f); end; close(f); end.
program alunos;
var f : text;
c : string[40]; i : integer; p1 : integer; p2 : integer; p3 : integer; begin assign(f,'e:\destino.txt'); rewrite(f); for i := 1 to 5 do begin writeln('Escreva o nome do aluno'); readln(c); writeln('Escreva a nota do 1 Periodo do aluno'); readln(p1); writeln('Escreva a nota do 2 Periodo do aluno'); readln(p2);
Incluso de 5 valores inteiros em um vetor, e depois disto emitir a soma dos mesmos.
MATRIZ Sintaxe:<nome array>: array [dimenses] of <tipo>; Declarao e exemplo: Var mat:array[1..5,1..3] of integer; {matriz 19x3} Begin mat[1,2]:=10; mat[3,1]:=11; mat[5,3]:=12; mat[2,2]:=78; end. Representao: mat[linha,coluna]
Exemplo: Ler 6 valores em uma matriz de 2 linhas e 3 colunas e depois disto emitir a soma dos valores.
program matriz; var m:array[1..2,1..3] of integer; soma,contl,contc:integer; Begin writeln('Digite os 6 valores'); soma:=0; for contl:=1 to 2 do for contc:=1 to 3 do readln(m[contl,contc]); for contl:=1 to 2 do for contc:=1 to 3 do soma:=soma + m[contl,contc]; writeln('Soma=',soma); end.
* Subprogramas
Em PASCAL podemos definir blocos de execuo internos a um programa, chamados subprogramas. Cada bloco executa uma tarefa deternimada. Isto favorece a legibilidade e manuteno do programa, alm de auxiliar no domnio da complexidade quando definimos o programa, j que podemos tratar partes do problema de forma isolada. Subprogramas tm parmetros que podem ser de entrada, sada, ou ambos. H dois tipos de subprogramas em Pascal: os procedimentos (PROCEDURES) e as funes (FUNCTIONS).
1.
As funes so avaliadas e retornam um valor ao programa que as chama, alm dos possveis parmetros de sada. 2. Um procedimento no retorna valor nenhum, a funo obrigatoriamente retorna um valor a uma determinada varivel. 3. Uma funo ativada quando avaliada uma expresso que a contm, isto , as funes so utilizadas da mesma forma que as funes predefinidas, como SQR, ORD, LN etc. 4. Um procedimento ativado atravs de um comando de chamada do procedimento.
que so conhecidas em todo programa e inclusive nos subprogramas contidos nele. * Variveis Locais: So as variveis declaradas em um subprograma, que so conhecidas em todo o subprograma, mas no no programa que contm o subprograma. Caso um subprograma contenha a definio de um outro subprograma (chamemos de "subsubprograma), as variveis declaradas no programa e no subprobrama sero visveis no subsubprograma, mas o contrrio no verdadeiro. No escopo do programa no podemos chamar o subsubprograma, assim como no podemos aceder s variveis do subprograma. * Uso de mesmos nomes: se um subprograma definir nomes de variveis iguais ao do programa principal, ao referenciar uma varivel vale a do escopo local.
dados que sero passados como parmetros. H duas formas de passagem de parmetros de um programa para um subprograma: passagem porvalor ou passagem por referncia. - Passagem por valor: o parmetro formal comporta-se como uma varivel local do subprograma, de maneira que as alteraes feitas nessa varivel dentro do subprograma no tenham efeito sobre o parmetro real, que pertence ao programa que fez a chamada. Assim, o subprograma s utiliza o valor da varivel para um determindao fim, tendo o poder de alter-la s dentro do subprograma, depois da execuo desse subprograma, a varivel volta a ter o valor que tinha antes da execuo do subprograma. - Passagem por referncia: o parmetro formal comporta-se como se fosse uma varivel global, e todas as alteraes feitas nesta varivel so feitas efetivamente no parmetro real. Assim, a varivel pode ser alterada pelo subprograma e continuar com o valor alterado. Sintaxe: Na lista de parmetros podemos usar as seguintes formas para passagem por valor: <nome da funcao ou procedimento> ( i,j,k: integer; y: real; z: boolean); <nome da funcao ou procedimento> ( i: integer; j: integer; k: integer; y: real; z: boolean); Para parmetros por referncia deve-se utilizar "var" no cabealho. Por exemplo para passagem de j.k e z por referncia: <nome da funcao ou procedimento> ( i:integer; VAR j,k: integer; y: real; VAR z: boolean); <nome da funcao ou procedimento> ( i: integer; VAR j: integer; VAR k: integer; y: real; VAR z: boolean);
* Cabealho:
FUNCTION <nome da funo> (<lista de parmetros>): <tipo da funo>; Exemplo: FUNCTION Maximo(a,b:integer):integer; "a" e "b" so parmetros que serao passados "por valor" funo Maximo. Aps o trmino de da funo e os valores destes parmetros no estaro alterados. Mximo o identificador da funo e da varivel que deve conter o valor fornecido pela funo. Mximo tambm do tipo inteiro. Essa funo ativada atravs de uma expresso. Por exemplo: K:=Maximo(P1,P2) + Maximo (P3,P4); onde P1, P2, P3, P4 so variveis globais do tipo inteiro. E "K" uma varivel do tipo inteiro que recebe a soma das duas funes.
* Cabealho:
PROCEDURE <nome do procedimento>(<lista de parmetros>); Exemplo: PROCEDURE Estatistica (VAR media: real; VAR s,m: real; ka: integer); Os parmetros formais so media, s, m e ka. O parmetro media e as variveis s e m so do tipo real, e ka do tipo inteiro. O parmetro ka o nico parmetro com passagem por valor. Esse procedimento pode ser chamados por comandos como: Estatistica(lista,desvio,sol,n); ou Estatistica(aula,numero1,numero2,denominador) ;
a regra: Um ano bissexto divisvel por 4, mas no por 100, ou ento se divisvel por 400. Exemplo: 1988 bissexto pois divisvel por 4 e no por 100; 2000 bissexto porque divisvel por 400.
FUNCTION bissexto (a:integer) : boolean; Begin if ((a mod 4 = 0) and (a mod 100<>0)) or (a mod 400 = 0) then bissexto:= TRUE else bissexto:= FALSE; End;
FUNCTION par (numero:integer):boolean; Begin if (numero mod 2)=0 then par:= TRUE else par:= FALSE; End;
PROGRAM TERCEIRO; Var numero,percentual:real; PROCEDURE calcula_percentual (n1:real; VAR per1:real); Begin per1:=n1*(21/100); end; Begin numero:=0; percentual:=0; writeln('Digite o nmero'); readln(numero); calcula_percentual(numero,percentual); writeln(percentual); end.
Type <identificador>= set of <tipo>;Operaes sobre conjuntos: Programa para testar se uma letra
Unio entre conjuntos Interseco de conjuntos Diferena de conjuntos Testa se A est no conjunto B Testa a desigualdade entre conjuntos Testa a presena de um elemento no conjunto A
vogal ou consoante:
program testa_letra; type letras = set of 'a'..'z'; var vogais:letras; letra:char; begin vogais:=['a','e','i','o','u']; writeln('Digite uma letra'); readln(letra); if letra in vogais then writeln('A letra ',letra,' eh uma vogal') else writeln('A letra ',letra,' eh uma consoante'); end.
A+B
A*B A-B
A<=B
A<>B
1 in A
* http://www.inf.pucrs.br/~fldotti/lapro1/pasca
l.htm