Introdução à Linguagem PASCAL Prof. Luis Otavio Alvares 1 Histórico da Linguagem PASCAL • Criada por Niklaus Wirth , em 1969 e 1970, como uma linguagem pequena e eficiente, para encorajar as boas práticas de programação, com o uso de programação estruturada e estruturação de dados • Foi baseada na linguagem ALGOL • O nome é em homenagem ao matemático e filósofo francês Blaise Pascal. 2 Unidades léxicas (vocabulário) do Pascal • constantes • identificadores • palavras reservadas • símbolos especiais Constantes • numéricas inteiras ex: 123 - 45 +6789 reais (fracionárias) ex: 1.23 1.23E4 - 4.45 - 1.E+56 +0.6789 +0.67E-22 Constantes • numéricas • lógicas • literais true false strings ‘Nome’ ‘12345’ ‘a12b/c’ ‘true’ caractere branco: ‘ ’ Unidades léxicas do Pascal Identificador Sintaxe de identificador: < letra > < letras e/ou dígitos e/ou ´_´ > • 63 caracteres significativos • não pode conter espaços brancos • tem que começar por letra Ex: A12x_3i AnaTerra Valor1 Unidades léxicas do Pascal Palavras reservadas Identificadores que não podem ser utilizados como nomes de variáveis pelo programador Ex: if begin readln for end ( ) write Símbolos especiais Ex: ; : , := { <= } <> . Estrutura de programas Pascal Cabeçalho: •opcional •nome único no programa Program <nome do programa> ; <declarações, separadas por ponto e vírgula> ; begin <comandos, separados por ponto e vírgula> end. Definir todas as palavras que não fazem parte da linguagem: • nomes de todas as variáveis, com tipo de valor que vai ser armazenado • ... Exemplo 1 {meu primeiro programa Pascal } program OiMundo; begin write('Oi mundo!'); {mostra} readln; {espera} end. O que está entre { } é um comentário apenas, não é considerado pelo computador O que está em verde são palavras reservadas do Pascal. 8 Declarações • Declaram as variáveis e seus tipos • Os nomes das variáveis devem conter apenas letras, dígitos e o símbolo _ e iniciar com letra • Os principais tipos são: integer, real, double, char, string e boolean • Exemplos var Valor1, Valor2 : integer; quociente: real; sexo: char; nome: string; Pascal NÃO diferencia letras maiúsculas de minúsculas! 9 Entrada e Saída de Dados 10 Comando de leitura entrada de dados Sintaxe: readln ( < lista de variáveis, separadas por vírgulas > ) • os dados fornecidos pelo usuário devem concordar com o tipo das variáveis da lista, na ordem definida Ex: readln(N1,N2,N3); readln(n1);readln(n2);readln(n3); Comandos de saída de dados Sintaxe: write ( < lista de variáveis e strings, sep. por vírgulas > ) writeln ( < lista de variáveis e strings, sep. por vírgulas > ) • write - o próximo comando de escrita será executado na mesma linha deste, logo após o último valor impresso • writeln - o próximo comando de escrita será executado a partir do início de nova linha • strings - mensagens que se deseja que sejam mostradas - qualquer seqüência de caracteres, entre apóstrofes Exemplos de comandos de saída de dados • write (´A soma vale : ´, Soma); saída: A soma vale : 1234 • write (´A soma vale : ´); writeln ( Soma ); saída: A soma vale : 1234 • writeln (´A soma vale : ´); writeln ( Soma ); saída: A soma vale : 1234 • writeln (´X=´ , A , ´ - Y=´ , B ); saída: X=12 - Y=7 Considerando: Soma=1234 A=12 B=7 Comando de atribuição := • Atribui o valor da direita à variável da esquerda • O valor pode ser: – uma constante, – uma variável ou – uma expressão • Exemplos x := 4; y := x + 2; y := y + 4; valor := 2.5; sexo := 'F' simples (apóstrofe) lemos: x recebe 4 lemos: y recebe x mais 2 lemos: y recebe y mais 4 constantes devem estar entre aspas 14 Atribuição o resultado da expressão deve ser compatível com o tipo da variável Ex: var X:integer; Y:real; C:char; begin X := 5; C := 'a'; Y := 7 + 3.5; end. X := 5 * 2; C := ';'; Y := X / 2; Expressões aritméticas 16 Sintaxe: < operando > < operador aritmético > < operando > Operador Significado + Adição - Subtração * Produto / Divisão real div mod ** Divisão inteira Resto da divisão inteira Potenciação Operandos • inteiros • variáveis numéricas • chamadas a funções • expressões aritméticas (podem estar entre parêntesis) Ex: A+1 A * 2 + 7.32 X div C 2 + cos(X) CUIDADO!!!! • OBS: o operador “/” (divisão) exige que a variável que recebe o resultado da divisão seja do tipo real. Exemplo: var X,Y,U: integer; Z: real; Begin X:=2; Y:=3; U:=3; Z:=X/Y; { Z terá o valor 0.666667} U:=X/Y; {dá erro de compilação, pois U deveria ser real} End. 17 Expressões lógicas 18 Sintaxe: < operando > < operador lógico > < operando > < operador lógico > < expressão lógica > Operandos • valores lógicos • variáveis booleanas •chamadas a funções • expressões lógicas (podem estar entre parêntesis) Operadores relacionais < > <= >= <> = Ex: Idade > 21 Nome = ‘Roberta’ Tipos de dados compatíveis Sintaxe relação: < expressão > < operador relacional > < expressão > Operadores lógicos 19 Operador Tipo Significado and V F or V F and binário “e” V V F V V V F V F or binário “ou” F F F not unário negação not V F F V Sintaxe: 1. < operando > < operador lógico > < operando > 2. not < expressão lógica > Ex: ( A > B ) or (A>C) ( Valor >= 0 ) and ( Valor < 10 ) not (A>B) Os operandos devem estar entre parênteses quando têm operadores relacionais Precedência de operadores Pascal Ordem Precedência Operador 1 Maior not 2 div mod and + 3 4 / Menor = < > <= - or >= < > Em dúvida, o melhor é colocar parênteses, para não haver problema Funções pré-definidas Pascal Função abs(X) arctan(X) cos(X) sin(X) exp(X) frac(X) int(X) trunc(X) round(X) ln(X) Pi sqr(X) sqrt(X) Argumentos integer / real integer / real integer / real integer / real integer / real integer / real integer / real integer / real integer / real integer / real integer real integer / real Resultado integer real real real real real real integer integer real real integer real real Ação Valor absoluto Arco tangente Cosseno Seno ex Parte fracionária Parte inteira Trunca p/ inteiro Inteiro + próximo Log. neperiano Valor de Quadrado Raiz quadrada 22 Aula prática 1: - o ambiente de programação - estrutura de programa Pascal - comandos de entrada / saída - programas seqüenciais O ambiente Dev-Pascal • O Dev-Pascal é um ambiente de desenvolvimento de programas em Pascal (editor, compilador, bibliotecas...) • Pode ser baixado de http://www.bloodshed.net/devpascal.html 23 Usando o Dev-Pascal • Inicie o Dev-Pascal pelo ícone ou pelo menu • Crie um novo arquivo, com o comando – Arquivo, Novo Arquivo Fonte – ou clicando no ícone • Digite o programa da página seguinte 24 Usando o Dev-Pascal program OiMundo; begin writeln('Oi mundo!'); readln; end. Experimente executar sem o comando readln para ver o que acontece 25 Usando o Dev-Pascal • Salve o programa com o nome exemplo.pas • Compile o programa pressionando • • Se houver algum erro de sintaxe, aparece uma ou mais mensagens no rodapé da janela. Neste caso, corrija o programa e repita. • e depois pressione para executar o programa 26 Dicas • Termine todos os comandos com ; • Quando ocorrer um erro de compilação, dê um duplo clique sobre a mensagem de erro para destacar o comando errado no programa • Verifique também a linha anterior, que pode ser a responsável pelo erro, especialmente se faltar o caracter ; 27 Exemplo Algoritmo ler n1, n2, n3 Media(n1+n2+n3)/3 Mostrar media Na Linguagem Pascal... Var n1, n2, n3: integer; media: real; begin readln(n1); readln(n2); readln(n3); media:=(n1+n2+n3)/3; writeln('a media eh: ', media); readln; {para não desaparecer} end. 28 Exercícios: fazer programas Pascal para: 1. Mostrar na tela o produto entre 28 e 43. 2. Mostrar a média aritmética entre 3 números fornecidos pelo usuário. 3. Ler um número inteiro e mostrar seu sucessor e seu antecessor na tela. 4. Ler dois números e mostrar a sua soma. Antes do resultado, deverá aparecer a mensagem: SOMA=. 5. Ler um número e mostrar a terça parte deste número. 6. Ler dois números e mostrar os seguintes resultados: 1. Quociente: 2. Resto (para calcular o resto de uma divisão utilize o operador MOD) 7. Leia 4 números e mostre a média ponderada, sabendo-se que os pesos são respectivamente: 1, 2, 3 e 4. 29 Comandos de decisão (if) Algoritmo programa Pascal se < expressão lógica > if < expressão lógica > então < comando > then < comando > ; if < expressão lógica > then begin < comandos > end; Algoritmo programa Pascal se < expressão lógica > if < expressão lógica > então < comando > then < comando > senão < comando > else < comando >; If < condição > then begin < comandos > end else begin < comandos > end; 31 31 ‘Ifs’ encadeados 32 if < expressão lógica > then < comando > else < comando >; if < condição 1 > then if < condição 2 > then if < condição 3 > then < comando > else < comando > else < comando > else < comando >; if < condição 1 > then if < condição 2 > then if < condição 3 > then < comando > else < comando > else < comando >; ‘Ifs’ encadeados – cuidado ! if < condição 1 > then if < condição 2 > then if < condição 3 > then < comando > else < comando > else < comando >; if < condição 1 > then if < condição 2 > then begin if < condição 3 > then < comando >; end else < comando > else < comando >; 33 Exercícios •Faça um programa Pascal para ler 3 números reais e verificar se o primeiro é maior que a soma dos outros dois. Informar se é maior ou não. •Faça um programa Pascal que leia 5 números e informe quantos desses números são maiores que 10 •Faça um programa Pascal para ler 3 números reais e verificar se o maior deles é maior que a soma dos outros dois. Informar se sim ou não. •Faça um programa Pascal para ler três números diferentes e mostrá-los em ordem crescente. Idem para ordem decrescente. •Faça um programa Pascal para ler os três coeficientes de uma equação de segundo grau e determinar suas raízes. •Faça um programa Pascal para ler 4 números inteiros e calcular a soma dos que forem par. 34