900 likes | 1.05k Views
Computação I MPCE. Programação Pascal Prof. Dr. Marcelo Duduchi. Objetivos. Como funciona e qual a estrutura básica de um programa Pascal? Quais as estruturas de controle de fluxo de controle existentes no Pascal? Quais as estruturas de dados pré-definidas no Pascal?
E N D
Computação I MPCE Programação Pascal Prof. Dr. Marcelo Duduchi
Objetivos • Como funciona e qual a estrutura básica de um programa Pascal? • Quais as estruturas de controle de fluxo de controle existentes no Pascal? • Quais as estruturas de dados pré-definidas no Pascal? • Como trabalhar com subrotinas em Pascal?
Tópicos Abordados (1) • Estrutura de um programa Pascal; • Tipos de dados, variáveis e constantes; • Operadores; • Comandos de leitura e escrita (I/O); • Estruturas de controle seqüencial; • Estruturas de controle de decisão; • Estruturas de controle de repetição;
Tópicos Abordados (2) • Transformação de tipos de dados; • Tipos estruturados homogêneos: unidimensionais e multidimensionais; • Tipos estruturados heterogêneos; • Criação de Novos tipos de dados; • Manipulação de cadeias de caracteres; • Subrotinas (funções e procedimentos); • Passagem de parâmetros;
Estrutura de um programa Pascal ProgramNomedoprograma; usesbiblioteca 1,...,biblioteca n; constconstante 1,...,constante n; typenome do tipo = declaração do tipo; varlista de variáveis: tipo da variável; declaração das procedures e functions; begincomandosend.
Tipos de Dados • Inteiro; • Número em ponto flutuante (real); • Caractere; • Cadeia de Caracteres; • Lógico;
Valores Inteiros • byte: 0 a 255; • shortint -128 a 127; • word 0 a 65.535; • integer -32.768 a 32.767; • longint -2147483648 a 2147483647; respectivamente: 1, 1, 2, 2 e 4 bytes
Valores em Ponto Flutuante • single 1.5E-45 a 3.4E38; • real 2.9E-39 a 1.7E38; • double 5.0E-324 a 1.1E308; • extended 3.4E-4951 a 1.1E4932; • comp 9.2E-18 a 9.2E18; respectivamente:8,12,15,20 e 20 casas; respectivamente:4,6,8,10 e 8 bytes
Um Único Caractere (char) • Ocupa um byte e permite armazenar um caractere da tabela ASCII que possui 256 caracteres; • Pode ser informado entre apóstrofo ou com o caractere # e o número da tabela referente ao caractere; • Exemplo: #70 ou ‘F’
Cadeia de Caracteres (String) • Ocupa até 256 bytes dependendo da declaração e permite armazenar caracteres da tabela ASCII; • seu tamanho pode ser informado entre colchetes na declaração e tem valor referenciado entre apóstrofos; • exemplo: ‘cadeia de caracteres’
Valor lógico (boolean) • Ocupa um byte de memória usado para armazenar os valores lógicos verdadeiro (true) e falso (false); • pode ser manipulado pelos operadores lógicos: NÃO (not), E (and), OU (or) e OU EXCLUSIVO (xor)
Identificadores • Nomes que são criados pelo programador para representar elementos diversos dentro do programa; • São usados no Pascal para denominar programas, novos tipos de dados, constantes, variáveis, funções e procedimentos;
Identificadores • Pode ter qualquer tamanho com 63 primeiros dígitos significativos; • Pode utilizar os caracteres de: ‘0’ a ‘9’, ‘A’ a ‘Z’, ‘a’ a ‘z’ e ‘_’ • Deve ser diferente das palavras reservadas do Pascal; • Não pode começar por número; • Trata Maiúsculas = Minúsculas;
Declaração de Constantes • Deve-se indicar a palavra const seguida do nome, = e o valor a ser armazenado; • Não pode ter seu valor alterado durante o programa; • constnome = valor; • Exemplo: const PI = 3.1416;
Variáveis • Área de memória cujo valor pode ser alterado através de seu nome ou seu endereço; • É utilizada para guardar valores temporários do programa; • Seu conteúdo pode ser alterado durante a execução do programa;
Declaração de Variáveis • Deve-se indicar a palavra var seguida do nome, : e o tipo de dados a ser armazenado por ela; • varnome : tipo de dado; • Exemplos: var nota:integer; var N1, N2, N3:real; var Nome: string[40];
Operadores Lógicos • NÃO: identificado por not; • E: identificado por and; • OU: identificado por or; • OU EXCLUSIVO: por xor;
Operadores Aritméticos • + : adição; • - : subtração; • * : multiplicação; • / : divisão real; • div : divisão inteira; • mod: resto da divisão;
Operadores Relacionais • < , <= : menor e menor ou igual; • > , >= : maior e maior ou igual; • = : valor igual; • < > : valor diferente; • in [ valor inicial .. valor final] : verificar se o valor está entre valor inicial e final citado no comando;
Comando de Escrita (saída) • Pode ser usado só write escrevendo na posição corrente do cursor o conteúdo indicado; • Pode ser usado writeln escrevendo o conteúdo indicado e pulando de linha em seguida; • Formato:write ( valor : tamanho : decimais );
Comando de Escrita (saída) • Exemplos: write(custo:9:2); writeln(‘João’); writeln(‘Valor = ’,x); write(x+y);
Comando de Leitura (entrada) • Pode ser usado read ou readln colocando dentro da variável indicada o valor digitado pelo usuário; • O readln é usado para ler a linha toda até o enter o read permite a inclusão de diversos valores de acordo com o número de variáveis • Formato:read (variável1, variável2);
Comando de Leitura (entrada) • Exemplos: read(a,b,c); readln(nome); readln(turma); • Pode ter sua saída controlada por {$I-} e {$I+} em conjunto com o ioresult;
Comando de Leitura (readkey) • Utilizado quando necessitamos de digitação onde a entrada não necessita de um <enter> no final; • Retorna um valor para a rotina chamadora que deve ser atribuído a alguma variável; • formato: variável : = readkey;
Comando de Leitura (readkey) • Exemplos: x:=readkey; writeln(readkey); entrada:=readkey; Necessita da declaração: “uses CRT”;
Comentários • Às vezes é interessante comentar linhas de código para que este fique documentado. • Para isto usamos seguinte: {comentário } ou (*comentários de diversas linhas*)
Controle de fluxo de execução • Para que se controle a seqüência de comandos a serem executados permitindo que seja criada uma lógica que corresponde ao algoritmo desejado usamos as estruturas de controle: • seqüencial; • de decisão ou condicional; • de repetição ou de loop;
Estrutura de controle seqüencial • Usada para agrupar conjunto de comandos; • Faz com que o bloco seja tratado como um único comando; • Usado em estruturas de controle, funções e procedimentos com “;” e no final do programa com o “.”; • Formato: begincomandosend;
Estrutura de controle de decisão • If é usada quando se deve tomar uma decisão de qual grupo de rotinas o programa deve executar; • Não permite por si só que comandos voltem a executar de forma repetitiva; • Pode ser usada de forma a encadear uma estrutura de decisão dentro de outra (ninho de if ’s);
Estrutura de controle de decisão • Formatos: Ifdecisãothen comando ou bloco de comandos; cuidado: antes do “else” não colocar “;” Ifdecisãothen comando ou bloco de comandos else comando ou bloco de comandos;
Estrutura de controle de decisão • Exemplos: ... If nota >= 5.0 then writeln(‘aprovado’); ... ... readln(nota); If nota >= 5.0 then writeln(‘aprovado’) else writeln(‘reprovado’); ...
Estrutura de controle de decisão • Exemplos: ... If nota >= 5.0 then begin writeln(‘exame:’); readln(nota); end; ... If x <= y then begin writeln(‘pode ser:’); writeln(‘x < ou = y’); end else writeln(‘x é maior’); ...
Estrutura de controle de decisão • Exemplos: ... If x > 3 then begin if y > 3 writeln(‘saída A’) else writeln(‘saída B’); end; • Se X = 2 e Y = 2: • Se X = 2 e Y = 5: • Se X = 5 e Y = 2: • Se X = 5 e Y = 5:
Estrutura de controle de decisão • Exemplos: ... If x > 3 then begin if y > 3 then writeln(‘saída A’) else writeln(‘saída B’); end; • Se X = 2 e Y = 2: Não escreve nada; • Se X = 2 e Y = 5: Não escreve nada; • Se X = 5 e Y = 2: Escreve “saída B”; • Se X = 5 e Y = 5: Escreve “saída A”;
Estrutura de controle de decisão • Exemplos: ... If (x>3) and (y>3) then begin writeln(‘saída A’) else writeln(‘saída B’); end; • Se X = 2 e Y = 2: • Se X = 2 e Y = 5: • Se X = 5 e Y = 2: • Se X = 5 e Y = 5:
Estrutura de controle de decisão • Exemplos: ... If (x>3) and (y>3) then begin writeln(‘saída A’); end else begin writeln(‘saída B’); end; • Se X = 2 e Y = 2: Escreve “saída B”; • Se X = 2 e Y = 5: Escreve “saída B”; • Se X = 5 e Y = 2: Escreve “saída B”; • Se X = 5 e Y = 5: Escreve “saída A”;
Faça um programa que receba duas notas, calcule a média das notas e mostre na tela se o aluno foi aprovado. Program exmedia; uses crt; var soma,nota1,nota2:real; beginwriteln(´Digite as notas das provas´); read (nota1,nota2); media:=(nota1+nota2)/2; if media>=5 thenwriteln(´Aprovado´) else writeln(´Reprovado´); end.
Faça um programa que tendo como entrada a altura e o sexo de uma pessoa , construa um algorítimo que calcule seu peso ideal, utilizando as seguintes fórmulas: para homens: (72.7*h)-58; para mulheres: (62,1*h)-44.7; Program expesoideal; uses crt; var sexo:char; h,peso:real; beginwriteln(´Calcule seu Peso Ideal´); write (´Digite seu sexo (M:masculino , F:feminino)´); readln (sexo); write (´Entre com a sua altura´); readln(h) if sexo=´F´ then peso:=(62.1*h)-44.7 else peso:=(72.2*h)-58; writeln(´seu peso ideal é´,peso:2:2); readkey; end.
Estrutura de controle de decisão • Case é usada quando se deve tomar uma decisão entre mais de duas opções para uma variável enumerável; • Usada só com inteiros, caracteres e variáveis do tipo lógico; • Pode ter opção else caso nenhuma das anteriores for aceita; • Possui um end no final sem begin;
Estrutura de controle de decisão • Formato: casevariávelof constante1: comandos1; constante2: comandos2; constante3: comandos3; else comando n; end;
Estrutura de controle de decisão • Exemplo: case idade of 1,2,3:writeln(‘bebê’); 4..12:writeln(‘criança’); 13..22:writeln(‘adolesc.’); else writeln(’adulto’); end;
Estrutura de controle de repetição • while é usado quando o teste deve ser feito no início e não se tem um valor contável determinado; • repeat é usado quando o teste deve ser feito no final; • for é usado quando a iteração utiliza um evento contável tendo controle automático da variável de controle;
Estrutura de controle de repetição • Formato 1: whiledecisãodo comandos; • Formato 2: repeat comandos; untildecisão;
Estrutura de controle de repetição • Exemplo 1: ... ct:=1; while ct<11 do begin writeln(‘4*’,ct,’=’,ct*4); ct:=ct+1; end; ...
Estrutura de controle de repetição • Exemplo 2: ... ct:=1; repeat writeln(‘4*’,ct,’=’,ct*4); ct:=ct+1; until ct >10; ...
Estrutura de controle de repetição • Formato 3: forct:= v.i.tov.f.do comandos; • Formato 4: forct:= v.i.downtov.f.do comandos;
Estrutura de controle de repetição • Exemplo 3: for ct:= 1to 10 do writeln(‘4*’,ct,’=’,ct*4); • Exemplo 4: writeln(‘contagem...’) for ct:= 10 downto 1 do writeln(ct);
Transformação de tipos de dados • Inteiro para caractere: variável caractere:=chr(variável inteira); Ex: ch:=chr(97); { retorna ‘a’ } • Caractere para inteiro: variável inteira:=ord(variável caractere); Ex: varint:=ord(‘A’); { retorna 65 }
Transformação de tipos de dados • String para número: val(cadeia,variável numérica,erro); Ex: val(leitura,num,erro); • Número para string: str(variável numérica:tam:dec,cadeia); Ex: str(num:10:2,valor);
Tópicos a abordar na seqüência... • Tipos estruturados homogêneos: unidimensionais e multidimensionais; • Tipos estruturados heterogêneos; • Manipulação de cadeias de caracteres; • Criação de Novos tipos de dados; • Subrotinas (funções e procedimentos); • Passagem de parâmetros;