Linguagem Pascal Definição e Tipos de Dados Professora Lara Popov Zambiasi Bazzi Oberderder Linguagem PASCAL 1
Origem Linguagem de programação largamente utilizada no ensinoaprendizagem de programação de computadores; Criada por Niklaus Wirth em 1972, na Universidade Técnica de Zurique, Suiça; Seu nome homenageia o matemático Blaise Pascal (1623-1662); Existem vários compiladores para esta Linguagem PASCAL 2 linguagem, usaremos o pascalzim.
Algoritmo x Programa Algoritmo: Conjunto de etapas finitas, ordenadamente definidas com o propósito de obter soluções para um determinado problema. Programa: Formalização de um algoritmo em uma linguagem inteligível pelo computador. Linguagem PASCAL 3
Conceitos Básicos Qual o tipo de linguagem que o computador entende? Linguagem de máquina. Como podemos fazer a tradução de uma linguagem de programação para linguagem de máquina? Usando um compilador ou interpretador. Como um programa é executado no computador? Primeiro ele é carregado na memória e depois cada instrução é executada de acordo com a lógica do programa. Linguagem PASCAL 4
Etapas 1) Definição do problema 2) Desenvolvimento de um algoritmo 3) Transcrição para PASCAL 4) Digitação do programa 5) Compilação 6) Execução Linguagem PASCAL 5
Passos para construção de algoritmos Ler atentamente o enunciado do problema a ser resolvido; Identificar quais são as entradas (ou seja, o que é fornecido) para a solução do problema; Identificar o que deve ser feito para, a partir das entradas, produzir as saídas. Um algoritmo pode ser visto como uma função que leva as entradas para saídas. No processo, tentar achar uma solução prática para resolver o problema e depois escreve-la na linguagem algorítmica. Linguagem PASCAL 6
Turbo Pascal Compilador que vamos usar: PASCALZIM O programa nasceu como ferramenta de apoio ao ensino da linguagem Pascal na Universidade de Brasília Linguagem PASCAL 7
Fluxogramas X Pascal Um programa em Pascal é composto, basicamente, de três partes. São elas: Cabeçalho do Programa; Área de Declarações; Corpo do Programa. Linguagem PASCAL 8
Cabeçalho program nomeprogram; Linguagem PASCAL 9
Área das Declarações var nome: string; idade : integer; altura : real; Também podemos declarar tipos iguais var a, b, c : integer; Linguagem PASCAL 10
Corpo do programa begin instruções; (...) end; Linguagem PASCAL 11
program ADICIONA_NUMEROS; Cabeçalho do programa var X : integer; A : integer; B : integer; begin readln(a); readln(b); X := A + B; writeln(x); end. Área das declarações Corpo do programa Entrada Processamento Saída Linguagem PASCAL 12
Termos em Pascal Equivalência de termos entre a Linguagem Algorítmica e Pascal: Ling Algoritmo Se If Então Then Senão Else Enquanto While Faça Do Repita Repeat Para For Até Until / To := PASCAL Linguagem PASCAL 13
Constantes (CONST) Valor fixo. Não muda durante a execução de um programa Podem ser numéricas, lógicas ou alfanuméricas (literal) Ex: numéricas: 25, +34, -315, -0.53, 7.8E-3,.13 lógicas: true, false alfanuméricas: A-Z, a-z, 0-9,!,?, /, *, &, $, %,... Linguagem PASCAL 14
Variáveis (VAR) São representadas por identificadores Formado por: uma letra, ou uma letra seguida de letras ou dígitos: Ex: A, Nota, matricula, x, a, a1, a2, bd, A32B Maiúsculas são iguais a minúsculas: AB = ab Linguagem PASCAL 15
Palavras Reservadas Identificadores usados na linguagem and, array, begin, case, const, div, do, downto, else, end, file, for, function, goto, if, in, label, mod, nil, not, of, or, packed, procedure, program, record, repeat, set, then, to, type, until, var, while, with. Identificadores de significado definido input, output, integer, real, read, write, etc... Linguagem PASCAL 16
Definição de novos tipos (type) Em pascal, o programador também tem a liberdade de definir um novo tipo; Uma vez definido o novo tipo, este passa a ser referenciado pelo seu identificador; Exemplo: type Indices = 0..63; Letras = A.. Z ; Faixa = -3..3; var codigo: integer; teste: boolean; letra: Letras; Linguagem PASCAL 17
Comentários Usado apenas para aumentar a clareza do programa, não é analisado pelo computador: { comentário } ou (* comentário *) var matr: string; { nr. de matricula } nota: real; { nota de prova } cod: integer; (* código do curso *) Linguagem PASCAL 18
Expressões Aritméticas Lógicas Literais Linguagem PASCAL 19
Expressões Aritméticas Ordem de prioridade: 1 a : *, /, div, mod 2 a : +, - div - quociente da divisão inteira mod - resto inteiro da divisão inteira exemplo 1 : x = 11 div 4 = 2, y = 11 mod 4 = 3 exemplo 2 : u = sqrt(p*(p-a)*(p-b)*(p-c)) exemplo 3 : v = exp(b*ln(a)) = e b*ln a Linguagem PASCAL 20
Expressões Lógicas Relações A<>B, nome= João, a<0, x>1 Operadores lógicos p and q, p or q, not p Ex: (idade>25) and (nome= Maria ) Prioridade dos operadores lógicos e aritméticos 1 a : not 2 a : *, /, div, mod, and 3 a : +, -, or 4 a : =, <>, <, <=, >=, >, in Linguagem PASCAL 21
Expressões Literais Retorna caracter: chr(cod) { cod = código ASCII (American Standard Code for Information Interchange) } Retorna código ASCII : ord(ch) {ch = caracter } Sucessor do caracter: succ(ch) Antecessor do caracter: pred(ch) Ex: chr(65) retorna A ; ord( 'C' ) retorna 67; succ( 'd' ) retorna e ; pred( 'd' ) retorna c ; Linguagem PASCAL 22
Comando de Atribuição Identificador := expressão var A, B, X, Y: integer; K, Media: real; teste: boolean; cor: string; K:=1; A:=K; Media := (A+B)/2; teste := (X=0) and (Y<>2); cor := verde ; Linguagem PASCAL 23
Entrada e Saída (E/S) As ações que executam estas tarefas são: Obter dados: leia(dado 1,, dado n ); Apresentar dados: escreva(dado 1,, dado n ); Exemplos: leia(nome, IDADE); leia(produto, QUANTIDADE, VALOR); escreva(soma, MÉDIA); escreva( Nome:, NOME, Idade:, IDADE); Linguagem PASCAL 24
E/S Pseudocódigo leia(a, B, C) escreva(a, B, C) Fluxograma leia A, B, C escreva A, B, C Pascal read(a, B, C) ou readln(a, B, C) write(a, B, C) ou writeln(a, B, C) Linguagem PASCAL 25
Fluxogramas leia numero Pascal read(numero); ou readln(numero); escreva Número=,numero Write('Número',numero); ou Writeln('Número',numero); processamento soma = a+b soma := a+b; Linguagem PASCAL 26
Comandos de Entrada e Saída Leitura program leitura; var n: integer; nota: real; begin readln (n, nota); readln (n, nota); read (n, nota); read (n, nota); { a diferença é que o readln gera uma mudança de linha após a leitura dos valores } end. Entrada: 1 6,5 2 7,0 3 8,0 4 9,0 5 5,0 6 4,0 7 3,0 8 9,5 n, nota? Linguagem PASCAL 27
Comandos de Entrada e Saída Escrita var n, p: string; x, a: integer; begin x := 0; read (n,a); x := x + a; p := n; write (p,x); a := x + a; writeln (a); x := x + a; write (n, x, a); end. Entrada: Joao 25 Saída? Linguagem PASCAL 28
Comandos de Entrada e Saída Formatação na escrita program formata; var a,b: real; k,l: char; begin a:=3.2; b:=5.81; k:= x ; l:= y ; write (a:4:2, k:2, +, b:5:2, l:2, =, a+b:7:3); end. Saída=3.20_x+_5.81_y= 9.010 Linguagem PASCAL 29 Obs.: O caracter _ neste caso simboliza o espaço vazio.
Mapeando Programas para Pascal Exemplo: Calcular a área do triângulo retângulo: Linguagem PASCAL 30
Linguagem algortimica Linguagem Algoritmica início declare base, altura, área: real; leia (base, altura); área (altura*base)/2; escreva (área); fim Linguagem PASCAL 31
Fluxograma início Programa que calcula área do triângulo base, altura area = (base*altura)/2 Área:, area fim Linguagem PASCAL 32
Pascal program Area_Triangulo; Var area, altura, base: real; begin write( Digite a altura do triangulo: ); Readln(altura); write( Digite a base do triangulo: ); Readln(base); area := altura*base/2; write ( A área do triângulo é igual a:,area); End. Observe que as instruções read e write servem para ler dados fornecidos pelo usuário e para escrever informações na tela, respectivamente. Estas duas instruções podem ser seguidas por ln e, neste caso uma linha será pulada na tela após a execução da instrução. Linguagem PASCAL 33
Mapeando Programas para Pascal Observe que neste primeiro exemplo, não tivemos a oportunidade de verificar o resultado final emitido pelo algoritmo; POR QUE ISTO ACONTECE? Podemos resolver tal problema acrescentando a instrução readkey; imediatamente após informarmos o resultado final encontrado pelo algoritmo; Obs: esta instrução só será reconhecida se logo após a linha de program for colocada a seguinte instrução: uses crt; Feito isto, pode-se percebe que o resultado final aparece numa notação científica nada agradável, isto pode ser alterado através da seguinte mudança: write ( A área do triângulo é igual a:,area:2:2); Linguagem PASCAL 34
Observe ainda que a cada nova execução do programa aparecem lixos na tela, referentes às execuções anteriores. Isto pode ser eliminado com uma instrução apropriada para limpar a tela: clrscr; (que vem do inglês clear screen) Linguagem PASCAL 35
Assim, o algoritmo ficaria da seguinte forma: Pascal Program Area_Triangulo; Uses crt; Var area, altura, base: real; Begin clrscr; write ( Digite a altura do triangulo: ); readln(altura); write ( Digite a base do triangulo: ); readln(base); area := altura*base/2; write ( A área do triângulo é igual a:,area:2:2); readkey; End. Linguagem PASCAL 36
Resumindo... Para solucionar um problema em computação siga os seguintes passos: 1. Assegurar-se do entendimento completo da especificação do problema 2. Formular um esboço geral do algoritmo para a solução do problema, prestando pouca atenção a detalhes específicos. Esta será a primeira tentativa de expressar a estratégia de sua solução. Assegurar a si próprio que a estratégia está correta. Linguagem PASCAL 37
Resumindo... 3. Identificar e listar qualquer variável que você sinta ser necessária. Esta lista é somente uma primeira aproximação do conjunto final de variáveis; ela pode ser aumentada ou diminuída se necessário. 4. Retornar aos passos iniciais do algoritmo e prosseguir com o detalhamento. Cada vez que um passo é desdobrado em vários outros mais detalhados, verificar se estes novos passos executam a função expressa no passo original. 5. Teste o algoritmo com exemplos. Linguagem PASCAL 38
Exercícios Linguagem PASCAL 39
Referências Bibliográficas GOMES, Edeyson Andrade. Lógica de Programação com Pascal: Teoria e Prática. Disponível em: http://edeyson.com.br/arquivos/producaopessoal/livro %20Algoritmos%20com%20Pascal%20by%20Edeyson %20Gomes.pdf. Acesso em: 21/10/2013. Linguagem PASCAL 40