LINGUAGEM PASCAL Elementos básicos e estrutura

Documentos relacionados
PASCAL Adriano Mauro Cansian André Proto

Programação Introdução

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

6) ESTRUTURA DE UM PROGRAMA

= = = = = = = = = = = = = = = =

VARIÁVEIS NUMÉRICAS : integer - Números inteiros entre e real - Números reais de 11 algarismos significativos.

ALGORITMOS VARIÁVEIS E OPERADORES. Prof. Angelo Augusto Frozza, M.Sc.

Introdução à Ciência da Computação

Linguagem de programação: Pascal

ENGENHARIA DE PRODUÇÃO ICC 1 TÉCNICAS DE PROGRAMAÇÃO

Linguagem Computacional. Estruturas de Controle: Estruturas de Decisão ou de Seleção. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Linguagem Pascal. Prof. Jonatas Bastos Site:

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

Disciplina Programação Prof. Esp. Armando Hage. Programação em Turbo Pascal

Resumo 2 - Mapeamento Portugol-Pascal

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

Computação Eletrônica

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Linguagem Pascal. Definição e Tipos de Dados. Professora Lara Popov Zambiasi Bazzi Oberderder. Linguagem PASCAL 1

Programação de Computadores III

Linguagem de Programação Pascal - Introdução

Lógica de Programação I. Gilson de Souza Carvalho

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Programação de Computadores III

APÊNDICE A - FUNDAMENTOS DA LINGUAGEM DE PROGRAMAÇÃO PASCAL.

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.

Programação de Computadores:

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

Métodos de Programação I Ana Maria de Almeida

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 3ª Parte Prof. Sandra Pais Soares

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Linguagem Computacional

SUMÁRIO 1. ALGORITMOS... 4

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

Linguagens de Programação

Computação Eletrônica

Noções de algoritmos - Aula 1

LINGUAGEM PASCAL. ÍNDICE pág I Introdução 3 I.1 A linguagem Pascal 3 I.2 Por que Turbo Pascal 3 I.3 Equipamento necessário 4

Modularização. Prof. Antonio Almeida de Barros Junior

FACCAT Sistemas de Informação. Estruturas de Dados

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza

Algoritmo e Programação Matemática

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

LINGUAGEM ALGORÍTMICA

Estruturas de Controle

Introdução à Ciência da Computação

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Capítulo 2 Operadores. A função scanf()

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Estruturas de Controle. Estrutura de Seleção. Estrutura de Seleção

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Oficina de Python Prof. Me. José Carlos Perini

Estrutura de decisão

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Introdução. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Conhecendo a Linguagem de Programação C

Introdução à Computação

Linguagem Computacional

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

Fluxogramas e variáveis

PROGRAMAÇÃO COMPUTACIONAL I

Oficina de Python Prof. Me. José Carlos Perini

Programação de Computadores II

Por este motivo, acho que a escolha da primeira linguagem a ser ensinada deve ser feita de forma judiciosa.

Tutorial de Turbo Pascal

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Prof. José Remo / Prof. Ildeberto Rodello 1

Capítulo 3 CARACTERÍSTICAS GERAIS DA LINGUAGEM PASCAL 1. INTRODUÇÃO

Algoritmos: Conceitos Fundamentais. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

Desenvolvido por: Juarez A. Muylaert Filho - Andréa T. Medeiros - Adriana S. Spallanzani -

Português Estruturado

Estruturas de Repetição

Engenharia Civil e Engenharia Básica Programação de Computadores Wedson Quintanilha da Silva

Introdução à Algoritmos. Professora: Fabíola Gonçalves.

LISTA 14 Gabarito. 1) Preparar um algoritmo para calcular a soma de 100 termos da seguinte série:

Elementos básicos das linguagens de programação

4. Constantes. Constantes pré-definidas

01/08/2011. Tipos de dados Numéricos Alfanuméricos Lógicos. Numéricos. Tipos de dados. Dados Numéricos Inteiros. Dados Numéricos Reais.

Programação de Computadores I. Professor Ilaim Costa Junior

Ciência da Computação. Prof. Dr. Leandro Alves Neves Prof. Dr. Adriano M. Cansian

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

Programação Estruturada Aula VisualG

Transcrição:

LINGUAGEM PASCAL Elementos básicos e estrutura Adriano Mauro Cansian UNESP - São José do Rio Preto Linguagem Computacional Linguagem Pascal Criada para ser uma ferramenta educacional, isto no início da década de 70 pelo Prof. Niklaus Wirth da Universidade de Zurique. Batizada em homenagem ao grande matemático Blaise Pascal. Pascal inventou uma das primeiras máquinas lógicas conhecidas. Foi baseada em algumas linguagens estruturadas existentes na época, ALGOL e PLI. Adriano Mauro Cansian 2 Prof. Dr. Adriano Mauro Cansian 1

Pascal Elementos básicos Conceito: Identificadores (1) Identificadores: São NOMES escolhidos para representar constantes, variáveis, tipos, funções, procedimentos, programas, etc... Para definirmos um identificador, devemos observar o seguinte Adriano Mauro Cansian 4 Prof. Dr. Adriano Mauro Cansian 2

Identificadores (2) Identificadores: podem ter qualquer comprimento, mas apenas os sessenta e três primeiros caracteres são significativos; deve ter como primeiro caractere uma letra; após a primeira letra só pode conter letras, dígitos ou sublinha ( _ ); não pode conter espaços em branco; letras maiúsculas e minúsculas são indiferentes; não podem haver identificadores repetidos; não pode ser uma palavra reservada (visto mais adiante) Adriano Mauro Cansian 5 Identificadores (3) Exemplos de identificadores válidos: Meu_Nome MEU_NOME Linha Exemplo23 Exemplos de identificadores inválidos: 2teste : começa com número Exemplo 23 : tem um espaço Adriano Mauro Cansian 6 Prof. Dr. Adriano Mauro Cansian 3

Palavras reservadas São palavras que têm um significado pré-determinado na linguagem, e não podem ser usadas como identificadores. ABSOLUTE END INLINE PROCEDURE TYPE AND EXTERNAL INTERFACE PROGRAM UNIT ARRAY FILE INTERRUPT RECORD UNTIL BEGIN FOR LABEL REPEAT USES CASE FORWARD MOD SET VAR CONST FUNCTION NIL SHL WHILE DIV GOTO NOT SHR WITH DO IF OF STRING XOR DOWNTO IMPLEMENTATION OR THEN ELSE IN PACKED TO Adriano Mauro Cansian 7 Tipos de dados Como as variáveis são definidas para carregarem valores Prof. Dr. Adriano Mauro Cansian 4

Declaração de variável Variáveis que forem utilizadas no corpo do programa, devem ser declaradas numa subárea específica chamada Var. Declarar uma variável significa definir qual tipo de dado ela vai carregar. Vejamos os tipos de dados (ou tipo de variáveis) existentes em Pascal. Adriano Mauro Cansian 9 Tipos de dados Simples: Números: inteiros e reais Caracteres únicos: char Valores lógicos: boolean Estruturados: Cadeias de caracteres: Strings (cadeias de texto). Os outros tipos de dados estruturados são: ARRAY, RECORD, FILE, SET e TEXT. Adriano Mauro Cansian 10 Prof. Dr. Adriano Mauro Cansian 5

Tipos de dados: números (1) No Pascal, podemos trabalhar com números inteiros e reais. A precisão da variável depende do tipo de dado associado a ela. A precisão significa quantos algarismos significativos a variável é capaz de carregar. Adriano Mauro Cansian 11 Números inteiros Adriano Mauro Cansian 12 Prof. Dr. Adriano Mauro Cansian 6

Números Reais Adriano Mauro Cansian 13 Um único caractere: char CHAR: representa um único caractere, escrito entre apóstrofos ( ). Exemplos: 'A', 'B', 'a', '1', '@', ' ' Adriano Mauro Cansian 14 Prof. Dr. Adriano Mauro Cansian 7

Cadeia de caracteres: string É tipo de dado estruturado. Existem outros. STRING: uma cadeia caracteres. O mesmo que vários CHAR encadeados. No Pascal: tamanho máximo é de 255 caracteres. Exemplos: Adriano Mauro à sempre representado entre aspas simples. Curso de Química Janeiro, 2015 Adriano Mauro Cansian 15 Tipo de dados: boolean Representa um valor lógico. Utiliza apenas duas constantes lógicas: TRUE. FALSE. Adriano Mauro Cansian 16 Prof. Dr. Adriano Mauro Cansian 8

Expressões aritméticas Os operadores aritméticos representam as operações mais comuns da matemática. São eles: Operador Operação Operandos Resultado + Adição Inteiro, Real Inteiro, Real - Subtração Inteiro, Real Inteiro, Real * Multiplicação Inteiro, Real Inteiro, Real / Divisão Real Inteiro, Real Real DIV Divisão Inteira Inteiro Inteiro MOD Resto da Divisão Inteiro Inteiro Adriano Mauro Cansian 18 Prof. Dr. Adriano Mauro Cansian 9

Prioridade Em uma expressão aritmética, a ordem de avaliação dos operadores obdece a tabela abaixo: OBSERVAÇÕES: Prioridade Operadores 1ª * / DIV MOD 2ª + - a) Quando existe em uma expressão operadores com a mesma prioridade, a execução é da esquerda para direita. b) Caso seja necessário alterar a ordem de prioridade, deve-se utilizar parênteses. A e xpressão entre parênteses terá prioridade máxima. Caso haja parênteses aninhados, a ordem de execução será do mais interno para o mais externo. EXEMPLOS: 2 + 3 / 2 = 2 + 1.5 = 3.5 (2 + 3) / 2 = 5 / 2 = 2.5 Adriano Mauro Cansian 19 Funções e procedimentos numéricos pré-definidos São comandos já prontos para o cálculo das funções matemáticas mais comuns. Função Finalidade Tipo do argumento Tipo do resultado ABS(X) Valor Absoluto Inteiro, Real o mesmo do argumento FRAC(X) Parte Fracionária Real Real TRUNC(X) Parte Inteira Real Inteiro ROUND(X) Valor Arredondado Real Inteiro SQR(X) Eleva ao quadrado Inteiro, Real SQRT(X) Raiz quadrada Inteiro, Real Real LN(X) Logaritmo Natural Real Real EXP(X) Exponencial Real Real o mesmo do argumento Adriano Mauro Cansian 20 Prof. Dr. Adriano Mauro Cansian 10

Observação: potenciação Como não existe em Pascal um operador nem uma função específica para a operação de Potenciação, podemos consegui-la utilizando as funções LN(X) e EXP(X). Para calcular o valor de X N é suficiente usar: EXP(LN(X)*N) Adriano Mauro Cansian 21 Exemplos de funções pré-definidas Expressão Resultado ABS(-2.5) 2.5 ABS(8) 8 FRAC(5.234) 0.234 TRUNC(2.78) 2 ROUND(2.78) 3 SQR(2) 4 SQR(1.5) 2.25 SQRT(4) 2.0 SQRT(2.25) 1.5 EXP(LN(2)*3) 8 Adriano Mauro Cansian 22 Prof. Dr. Adriano Mauro Cansian 11

Expressões lógicas As operações lógicas podem ser consideradas afirmações que serão testadas pelo computador, tendo como resultado, um valor verdadeiro ou falso. São utilizadas com os operadores relacionais e lógicos. Adriano Mauro Cansian 23 Operadores relacionais São usados na comparação de duas expressões de qualquer tipo, retornando um valor lógico (TRUE ou FALSE) como resultado da operação. Operador Operação = igual > maior < menor >= maior ou igual <= menor ou igual <> diferente Adriano Mauro Cansian 24 Prof. Dr. Adriano Mauro Cansian 12

Exemplos de operações relacionais Observação: as operações lógicas só podem ser efetuadas com relação a valores do mesmo tipo. Expressão Resultado 1 = 2 FALSE 'A' = 'a' FALSE 5 > 2 TRUE 3 <= 3 TRUE TRUE < FALSE FALSE 'JOAO' > 'JOSE' FALSE 2 + 3 <> 5 FALSE 'comp' <> 'COMP' TRUE '11' < '4' TRUE Adriano Mauro Cansian 25 Operações lógicas São usados para testar expressões lógicas. Operador not and or Operação não (negação) e (conjunção) ou (disjunção) Adriano Mauro Cansian 26 Prof. Dr. Adriano Mauro Cansian 13

Exemplos de operações lógicas A tabela verdade (abaixo) apresenta o resultado de cada operador lógico, com os valores dados para as expressões lógicas A e B: A B A and B A or B not A not B TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE Adriano Mauro Cansian 27 Prioridade das operações lógicas e relacionais Em uma expressão lógica e relacional, a ordem de avaliação dos operadores segue a tabela abaixo: Prioridade Operadores 1ª NOT 2ª AND 3ª OR 4ª = > < >= <= <> Como a ordem de precedência dos operadores lógicos é maior que a dos operadores relacionais, devem sempre ser usados parênteses quando se escrever uma expressão lógica complexa. Por exemplo:( A > B ) OR ( B = C ) Adriano Mauro Cansian 28 Prof. Dr. Adriano Mauro Cansian 14

Programação Pascal Programando em Pascal (1) Pascal é uma linguagem altamente estruturada que possui uma rigidez definida: Cada seção ou parte de um programa em Pascal deve aparecer numa sequência apropriada. Deve ser sistematicamente correta. Senão ocorrerá um erro. Adriano Mauro Cansian 30 Prof. Dr. Adriano Mauro Cansian 15

Programando em Pascal (3) Um programa escrito em Pascal tem o seguinte formato: PROGRAM <nome_identificador>; <bloco_do_programa>. Adriano Mauro Cansian 31 Bloco do programa O <bloco_do_programa>, por sua vez, está dividido em seis áreas possíveis, onde somente a última é obrigatória e devem uma sequência determinada a seguir. Adriano Mauro Cansian 32 Prof. Dr. Adriano Mauro Cansian 16

Áreas de um programa As áreas possíveis são, na sequência: Área de declaração de uso de unidades. Área de declaração de constantes. Área de declaração de tipos. Área de declaração de variáveis. Área de declaração de procedimentos e funções. Área de comandos (obrigatória). Adriano Mauro Cansian 33 Declaração de variáveis (1) Serve para associarmos tipos de dados que as variáveis vão carregar. Possui o seguinte formato: VAR <nomes-de-identificadores> : <tipo>;... <nomes-de-identificadores> : <tipo>; Adriano Mauro Cansian 34 Prof. Dr. Adriano Mauro Cansian 17

Declaração de variáveis (3) EXEMPLO: VAR X,Y,Z : REAL; I,J : INTEGER; ACHOU : BOOLEAN; LETRA : CHAR; PALAVRA,FRASE : STRING; Adriano Mauro Cansian 35 Área de comandos Area onde é inserido o algoritmo do programa. Os comandos são separados entre si pelo delimitador ponto-e-vírgula. A forma geral é: BEGIN <comando> ;... ; <comando> END. Adriano Mauro Cansian 36 Prof. Dr. Adriano Mauro Cansian 18

Comentários Um comentário é usado para aumentar a clareza de um programa, embora não seja analisado pelo computador. Deve ser escrito entre chaves: {Isto é um comentário} {O programa não interpreta} {o que está entre chaves} Adriano Mauro Cansian 37 EXEMPLO: Program REAJUSTE_SALARIO; {Finalidade: Calc. o reajuste de um salario em 20%} Uses Crt; Const IND = 0.20; {indice do reajuste} Var SAL_ATUAL, {salario atual} SAL_NOVO, {novo salario} AUMENTO : Real; {valor do aumento} Begin clrscr; {limpa a tela} {leitura do salario atual} write('digite o salario atual: '); readln(sal_atual); {calculo do reajuste} AUMENTO := SAL_ATUAL * IND; SAL_NOVO := SAL_ATUAL + AUMENTO; {exibicao do resultado} writeln('novo Salario = ',SAL_NOVO:10:2); readkey; { aguarda pressionar uma tecla } End. Adriano Mauro Cansian 38 Prof. Dr. Adriano Mauro Cansian 19

COMANDOS BÁSICOS DA LINGUAGEM PASCAL Atribuição O comando de atribuição tem a forma: <identificador> := <expressão> No comando de atribuição, a variável e a expressão devem ser do mesmo tipo, exceto nos seguintes casos: variável sendo real, a expressão pode ser integer variável sendo string, a expressão pode ser char. Adriano Mauro Cansian 40 Prof. Dr. Adriano Mauro Cansian 20

Entrada / Input (1) Um comando de entrada serve para que o programa solicite dados num determinado momento. Esses dados fornecidos serão armazenados em variáveis na memória. Adriano Mauro Cansian 41 Entrada / Input (2) Considerando a unidade de entrada padrão, o teclado, o comando seria: READ(<identificador-1>,,<identificador-n>); ou READLN(<identificador-1>,...,<identificador-n>); Adriano Mauro Cansian 42 Prof. Dr. Adriano Mauro Cansian 21

Entrada / Input (3) Com READ o cursor permanece na mesma linha após a execução do comando Com o READLN o cursor muda para a próxima linha. Em geral, um comando READ é precedido de uma operação de escrita, fornecendo uma orientação do que o usuário deve fazer. Veremos operações de saída em seguida. Adriano Mauro Cansian 43 Exemplo de leitura: (1) Se o programa deve solicitar as três notas de um aluno, teríamos: readln(nota1,nota2,nota3); Ação: No momento da execução do comando acima, o programa mostra a tela do usuário, e o cursor aparece esperando a digitação dos três valores, que devem ser separada por, pelo menos, um espaço em branco. Adriano Mauro Cansian 44 Prof. Dr. Adriano Mauro Cansian 22

Exemplo de leitura: (2) O valor 3.5 será armazenado na variável NOTA1, o valor 7.0 em NOTA2, e o valor 8.2 em NOTA3. Adriano Mauro Cansian 45 Saída (1) Um comando de saída serve para que o programa mostre informações ao usuário. As informações podem ser quaisquer dados ou resultados do programa. Adriano Mauro Cansian 46 Prof. Dr. Adriano Mauro Cansian 23

Saída (2) Considerando a unidade de saída padrão, o monitor de vídeo, o comando é: WRITE(<expressão1>,...,<expressão-n>);. ou... WRITELN(<expressão1>,...,<expressão-n>); Adriano Mauro Cansian 47 Saída (3) Com WRITE o cursor permanece na mesma linha após a execução do comando. Com WRITELN o cursor muda para a próxima linha. Adriano Mauro Cansian 48 Prof. Dr. Adriano Mauro Cansian 24

Exemplo Com o seguinte trecho de código: Write( Digite o salário R$ ); Read(salario); Você verá na tela: Cursor ou prompt aguardando a entrada de dados Digite o salário R$_ Adriano Mauro Cansian 49 Exemplo Com o seguinte trecho de código: Writeln( Digite o salário R$ ); Read(salario); Você verá na tela: Digite o salário R$ _ Cursor ou prompt aguardando a entrada de dados, na linha abaixo. Adriano Mauro Cansian 50 Prof. Dr. Adriano Mauro Cansian 25

EXEMPLO: Saída (4) A:=1; B:=2; writeln ('Soma de ',A,' e ',B,' = ',A+B); No caso de variáveis do tipo REAL os valores são mostrados na notação exponencial, num campo de 16 posições, a menos que uma formatação seja especificada. EXEMPLO: MEDIA := (8.0 + 2.0) / 2 ; writeln (MEDIA); {saída! 5.0000000000E+00} writeln (MEDIA:5:2); {saída! 5.00} Na formatação, se a variável for real especificamos o total de posições ocupadas e a quantidade de casas decimais. Se inteira, só o total de posições. Adriano Mauro Cansian 51 Entrada e saída combinados No instante da solicitação de dados, podemos usar junto com o READ ou READLN um comando de saída com a finalidade de emitir mensagens que orientem o usuário na digitação dos dados. EXEMPLOS: writeln('digite o Nome:'); readln(nome); writeln('digite as 3 Notas:'); readln(nota1,nota2,nota3); writeln('digite o salário do funcionário:'); readln(salario); Adriano Mauro Cansian 52 Prof. Dr. Adriano Mauro Cansian 26

Estruturas de decisão (Estruturas Condicionais) O que faz uma estrutura de decisão (2) No Pascal, existe três tipos de estrutura de decisão: O comando IF, que pode ser utilizado de duas formas: simples ou composto; E o comando CASE, que é utilizado para uma decisão seletiva. Veremos exemplos Adriano Mauro Cansian 54 Prof. Dr. Adriano Mauro Cansian 27

Decisão simples if - then (1) A estrutura de decisão simples do Pascal é o if-then, e deve ser utilizada da seguinte forma: IF <condição> THEN <comando> O <comando> só será executado se a <condição> resultar no valor TRUE. Adriano Mauro Cansian 55 Decisão simples if - then (2) O <comando> pode ser um comando simples ou um conjunto de comandos, chamado de comando composto. Um comando composto é formado por dois ou mais comandos, separados por ponto-e-vírgula e delimitados por BEGIN e END; Adriano Mauro Cansian 56 Prof. Dr. Adriano Mauro Cansian 28

Exemplo de decisão simples EXEMPLO: Program EXEMPLO_DE_DECISAO_SIMPLES; {Ler um número inteiro, subtrair 10 e exibí-lo se for positivo} Var N : integer; Begin Writeln( Entre com valor de N:`); readln(n); N := N 10 ; if N > 0 then begin { inicia se N>0 for verdade } writeln(`o valor resultante de N-10 é positivo`); writeln(`n é igual a:`, N); end; { fim do begin do then } Writeln( O programa terminou`); End. { fim do programa } Adriano Mauro Cansian 57 Decisão composta if-then-else (1) A estrutura de decisão composta do Pascal é o IFthen-ELSE (se-então-senão) é executada com a seguinte sintaxe: IF <condição> THEN <comando1> ELSE <comando2> Adriano Mauro Cansian 58 Prof. Dr. Adriano Mauro Cansian 29

Decisão composta if-then-else (1) IF <condição> THEN <comando1> ELSE <comando2> Neste caso, se a <condição> resultar no valor TRUE, será executado o <comando1> e, caso contrário, será executado o <comando2>. <comando1> e <comando2> devem ser um comando simples ou um comando composto. Adriano Mauro Cansian 59 EXEMPLO: Program EXEMPLO_DE_DECISAO_SIMPLES; {Ler um número inteiro, subtrair 10 e determinar } {se o resultado é maior que zero ou não } Var N : integer; Begin Writeln( Entre com valor de N:`); readln(n); N := N 10 ; IF N > 0 THEN begin { inicia se N>0 for verdade } writeln(`o resultado de N-10 é maior que zero`); writeln(`o resultado é igual a:`, N); end { fim do begin do then } { note que NÃO há o ponto-e-virgula } ELSE begin writeln(`o resultado de N-10 não é maior que zero`); writeln(`o resultado é igual a:`, N); end; { fim do begin do else } { note que há o ponto-e-virgula } Writeln( O programa terminou. Adeus`); End. { fim do programa } Adriano Mauro Cansian 60 Prof. Dr. Adriano Mauro Cansian 30

Exemplo: Programa para colocar em ordem crescente 3 números lidos do teclado Program Exemplo_3; Var x,y,z : Integer; Begin ClrScr; Write('Primeiro numero --> '); Readln(x); Write('Segundo numero ---> '); Readln(y); Write('Terceiro numero --> '); Readln(z); Writeln; Writeln; IF (x>=y)then If (x>=z) Then IF (y>=z) THEN Writeln(x,' ',y,' ',z) ELSE Writeln(x,' ',z,' ',y) Else Writeln(z,' ',x,' ',y) ELSE If (y>=z) Then If (x>=z) Then Writeln(y,' ',x,' ',z) Else Writeln(y,' ',z,' ',x) Else Writeln(z,' ',y,' ',x); End. Adriano Mauro Cansian 61 Outras instruções úteis Prof. Dr. Adriano Mauro Cansian 31

readkey Lê uma tecla do teclado, sem que seja necessário pressionar a tecla ENTER Program Exemplo; Uses CRT; Var tecla:char; Begin Write('digite uma tecla ->'); Tecla:=readkey; Writeln; writeln('você digitou ',tecla); end. Adriano Mauro Cansian 63 Keypressed (1) A instrução Keypressed é uma função especial do Turbo Pascal que retorna um valor booleano: TRUE se uma tecla foi pressionada, ou FALSE caso contrário (caso nenhuma tecla seja pressionada). Ela é uma das maneiras utilizada para detectar teclas pressionadas no teclado. Adriano Mauro Cansian 64 Prof. Dr. Adriano Mauro Cansian 32

Exemplo Keypressed (2) Program Exemplo; Uses CRT; Begin ClrScr; Write('Pressione uma tecla -> '); Repeat until Keypressed; (* repita até que uma tecla seja pressionada*) End. Adriano Mauro Cansian 65 Seleção ou decisão múltipla (1) Estrutura Case-of Utilizada quando se deseja executar um entre vários comandos, dependendo do resultado de uma expressão. Ou uma entre várias seqüências de comandos. Adriano Mauro Cansian 66 Prof. Dr. Adriano Mauro Cansian 33

Seleção ou decisão múltipla (2) A estrutura de seleção de decisão múltipla do Pascal (CASE-OF) obedece a seguinte sintaxe: CASE <expressão> OF <lista-de-constantes-1> : <comando-1>; <lista-de-constantes-2> : <comando-2>;... [ELSE <comando-n>] (* optativo *) END Adriano Mauro Cansian 67 Seleção ou decisão múltipla (3) A <expressão> deve resultar um tipo escalar (outros tipos que não sejam o REAL e o STRING). A <lista-de-constantes-x> deve conter uma ou mais constantes (separadas por vírgula), e devem ser do mesmo tipo da <expressão>. O <comando-x> pode ser um comando simples ou composto. O resultado de <expressão> é comparado com cada constante da <lista-de-constante> para verificar igualdade. Caso a igualdade seja verificada, o <comando> correspondente é executado e a estrutura finalizada. Caso nenhuma igualdade seja verificada, o <comando> correspondente ao ELSE (optativo) será executado. Adriano Mauro Cansian 68 Prof. Dr. Adriano Mauro Cansian 34

EXEMPLO: Program EXEMPLO_DE_DECISAO_MULTIPLA; {Simulador de uma calculadora básica de números inteiros} Uses CRT; Var X,Y : integer; OP : char; Begin clrscr; write('digite os operandos X e Y: '); readln(x,y); write('digite o operador (+,-,*, /) -->: '); readln(op); case OP of '+' : writeln( Soma:, X + Y:6:2); '-' : writeln( Subtração:, X-Y:6:2); '*','x','x' : writeln( Multiplica:, X * Y:6:2); '/' : writeln( Divisão:, X / Y:6:2); else writeln(op,'é uma operação inválida!'); end {case}; readkey; End. Adriano Mauro Cansian 69 Seleção ou decisão múltipla (4) Neste exemplo anterior, a mensagem que será exibida dependerá do conteúdo da variável OP. Se for igual a uma das constantes especificadas, será executado o comando WRITELN correspondente. Se nenhuma constante for igual ao conteúdo de OP, será executado o WRITELN do ELSE. O mesmo programa acima pode ser escrito sem utilizar a estrutura CASE, apenas utilizando IF's aninhados. Vejamos Adriano Mauro Cansian 70 Prof. Dr. Adriano Mauro Cansian 35

End. Program EXEMPLO_DE_DECISAO_MÚLTIPLA_2; {Simulador de uma calculadora básica de números inteiros} Uses CRT; Var X,Y : integer; OP : char; Begin clrscr; write('digite os operandos: '); readln(x,y); write('digite o operador: '); readln(op); if OP='+' then writeln(x + Y) else if OP='-' then writeln(x - Y) else if (OP='*') or (OP='x') or (OP='X') then writeln(x * Y) else if OP='/' then writeln(x div Y) else writeln('op.inválida'); readkey; Adriano Mauro Cansian 71 Estruturas de repetição no Pascal Prof. Dr. Adriano Mauro Cansian 36

Estruturas de repetição no Pascal (1) Além de permitir a mudança da seqüência de execução de um conjunto de comandos de um programa, as estruturas de controle de uma linguagem, dispõem de recursos para repetir a execução de um conjunto de comandos. Adriano Mauro Cansian 73 Estruturas de repetição no Pascal (2) No Pascal, existem três tipos de estrutura de repetição: Com teste no início (WHILE); Com teste no final (REPEAT) e Automática (FOR). Adriano Mauro Cansian 74 Prof. Dr. Adriano Mauro Cansian 37

Repetição com teste no início (while-do) A estrutura de controle WHILE permite que um comando simples ou composto seja executado repetidamente, enquanto uma condição de controle seja VERDADEIRA. A forma geral do WHILE é: WHILE <condição> DO <comando(s)> Adriano Mauro Cansian 75 Repetição com teste no início (while-do) condição : uma expressão lógica. comando pode ser um ou mais comandos. Como o teste da <condição> é realizado no início do laço, o <comando> será executado zero ou mais vezes, dependendo do resultado da avaliação da <condição>. Ou seja, while-do avalia a expressão lógica antes da primeira interação, isto significa que, eventualmente, pode não ocorrer nem a primeira interação. Adriano Mauro Cansian 76 Prof. Dr. Adriano Mauro Cansian 38

Program EXEMPLO_DE_WHILE; {escrever os números inteiros de 1 a 100} Var N : integer; Begin N := 1; while N <= 100 do begin writeln(n); N := N + 1 end End. Neste exemplo, o comando WRITELN será executado repetidas vezes enquanto a variável N possuir um valor igual ou inferior a 100. O programa terá como saída a seqüência dos números inteiros de 1 a 100. Adriano Mauro Cansian 77 Program Exemplo_2; Uses CRT; {Programa que lê números do teclado e depois informa a média dos números lidos, a quantidade lida, e soma deles} Label INICIO; Const Quant_de_num : Integer = 0; Soma : Real = 0; Media : Real = 0; Var Numero : Real; Tecla : Char; Begin INICIO: ClrScr; Write('Valor numérico (menor que 0=fim) --> '); Readln(Numero);... (* Continua *) Adriano Mauro Cansian 78 Prof. Dr. Adriano Mauro Cansian 39

(* continuação *) While (Numero>=0) Do Begin Soma := Soma + Numero; Quant_de_num := Quant_de_num + 1; Write('Valor numérico (menor que 0=fim) --> '); Readln(Numero); End; If Quant_de_num > 0 Then Begin Media := Soma/Quant_de_num; Writeln; Writeln('Quantidade de números = ',Quant_de_num); Writeln('Soma... = ',Soma:10:2); Writeln('Media... = ',Media:10:2); End Else Writeln('Não se realizou cálculos'); Writeln; Write('Deseja continuar? (S/N) ---> '); tecla:=readkey; If (Tecla='s') Or (Tecla='S') Then Begin Quant_de_num:=0; Soma := 0; Goto Inicio; End; Adriano Mauro Cansian 79 End. Repetição com teste no final (repeat-until) (1) REPEAT-UNTIL permite que um ou mais comandos sejam executados repetidamente, até que uma condição de controle seja FALSA. A forma geral do REPEAT-UNTIL é: REPEAT <comando(s)...> UNTIL <condição> Adriano Mauro Cansian 80 Prof. Dr. Adriano Mauro Cansian 40

Repetição com teste no final (repeat-until) (2) Repeat Comando_1; Comando_2; Comando_3;... Until (expressão_lógica); Adriano Mauro Cansian 81 Repetição com teste no final (repeat-until) (3) condição: uma expressão lógica. comando pode ser um ou mais comandos. Não há a necessidade dos delimitadores BEGIN e END no comando composto em um REPEAT. Adriano Mauro Cansian 82 Prof. Dr. Adriano Mauro Cansian 41

Repetição com teste no final (repeat-until) (4) Como o teste da <condição> é realizado no final do laço, o <comando> será executado uma ou mais vezes, dependendo da avaliação da <condição>. Todos os comandos entre as palavras reservadas Repeat e Until serão executadas, até que a expressão lógica seja verdadeira (TRUE). Obviamente, devemos ter o cuidado para que ela venha a ser TRUE em determinado momento, pois caso contrário, teremos um loop infinito, ou seja, o programa fica preso para sempre dentro da estrutura Repeat - Until, e não sai. Adriano Mauro Cansian 83 Program EXEMPLO_DE_REPEAT; {escrever os núm. inteiros de 1 a 100} Var N : Integer; Begin N := 1; repeat writeln(n); N := N + 1 until N > 100 End. Este exemplo é equivalente ao exemplo anterior do WHILE, onde o comando WRITELN será executado repetidas vezes até que a variável N possua um valor superior a 100. Adriano Mauro Cansian 84 Prof. Dr. Adriano Mauro Cansian 42

EXEMPLO: A estrutura REPEAT também é bastante utilizada para repetirmos um programa diversas vezes, até que o usuário deseje sair do mesmo. Program EXEMPLO_DE_REPEAT_2; {calcula a média de 2 números dados repetidas vezes} Uses CRT; Var N1,N2,MEDIA : real; RESP : char; Begin clrscr; repeat write('digite os dois números: '); readln (N1,N2); MEDIA := (N1+N2)/2; writeln (MEDIA); write ('Deseja repetir o programa (s/n)? '); RESP := readkey; until (RESP='N') or (RESP='n') End. Adriano Mauro Cansian 85 Program Exemplo_2; Uses CRT; {Programa que soma os números pares compreendidos entre dois números lidos do teclado} Var par,numero_1,numero_2,soma:integer; Begin Clrscr; Soma:=0; Write('Primeiro Numero ---> '); Readln(numero_1); Write('Segundo Numero ----> '); Readln(numero_2); par:=numero_1; {Verifica se o primeiro número é par, se não for adiciona-se um} If par MOD 2 <> 0 then par:=par+1; Repeat Soma:=soma+par; par:=par+2; Until par>numero_2; Writeln;writeln; Write('Soma dos números pares entre '); Writeln(numero_1,' e ',numero_2,' = ',soma); end. Adriano Mauro Cansian 86 Prof. Dr. Adriano Mauro Cansian 43

Program Exemplo_3; Uses CRT; {Programa para cálculo de fatorial.} Label inicio,fim; Var n,i,fatorial:integer; Begin ClrScr; inicio: Write('N = (menor que 0 = fim) --> '); Readln(n); If n<0 then goto fim; Writeln; fatorial:=1; i:=1; if n>1 then Repeat i:=i+1; fatorial:=fatorial*i; Until i=n; Writeln('fatorial de ':30,n,' = ',fatorial); Writeln; goto inicio; fim: End. Adriano Mauro Cansian 87 Repetição automática FOR (1) A estrutura de controle FOR permite que um comando simples ou composto seja repetido um número específico de vezes. A sua forma geral é: FOR <var> := <vi> TO <vf> DO <comando(s)> Adriano Mauro Cansian 88 Prof. Dr. Adriano Mauro Cansian 44

Repetição automática FOR (2) Onde <var> é uma variável de controle, do tipo inteira, que assumirá inicialmente o valor inicial <vi> e será incrementada (somada) do valor 1 após cada repetição do laço. A repetição será finalizada quando o conteúdo de <var> for superior ao valor final <vf>. O <comando> também pode ser simples ou composto. Adriano Mauro Cansian 89 For-downto Uma outra forma da estrutura FOR é a seguinte: FOR <var>:= <vi> DOWNTO <vf> DO <comando> Neste caso, a variável de controle <var> será decrementada (subtraída) do valor 1 após cada repetição do laço e a repetição será finalizada quando o conteúdo de <var> for inferior ao valor final <vf>. Adriano Mauro Cansian 90 Prof. Dr. Adriano Mauro Cansian 45

Repetição automática FOR (3) A estrutura de repetição FOR é especialmente indicada para quando o número de repetições é previamente conhecido. Caso contrário, devemos utilizar o WHILE ou o REPEAT, dependendo do caso. Adriano Mauro Cansian 91 EXEMPLO: Program EXEMPLO_DE_FOR; {escreve os números inteiros de 1 a 100} Var N : integer; Begin for N := 1 to 100 do writeln(n) End. Observe, no exemplo acima, que não foi ne cessário utilizar um comando para atribuir um valor inicial a variável N, nem também um outro comando para incrementá-la com o valor 1. Isto é feito automaticamente pela estrutura FOR. Adriano Mauro Cansian 92 Prof. Dr. Adriano Mauro Cansian 46

Program Exemplo_2; Uses CRT; Var i : Integer; Begin ClrScr; For i:=10 downto 1 do Writeln(i); End. Adriano Mauro Cansian 93 Program Exemplo_3; Uses CRT; { Este programa escreve na tela os quadrados dos números de 1 até 20 } Var i : Integer; Begin ClrScr; For i:=1 to 20 do Begin Write('Valor de i --> '); Write(i:3); Write('... quadrado de i = '); Writeln(i*i:5); End; End. Adriano Mauro Cansian 94 Prof. Dr. Adriano Mauro Cansian 47

Program Exemplo_4; Uses CRT; {Este programa calcula a soma entre todos os números compreendidos entre dois números lidos do teclado } Label INICIO; Var i,numero_1,numero_2,soma : Integer; Tecla : Char; Begin INICIO: ClrScr; Write('Primeiro Numero --> '); Readln(Numero_1); Write('Segundo Numero ---> '); Readln(Numero_2); Writeln; Writeln; Soma:=0; For i:=numero_1 to Numero_2 do Soma:=Soma+i; Writeln('Soma entre ',Numero_1,' e ',Numero_2,' = ',soma); Writeln; Writeln; Write('Deseja Continuar? --> '); tecla:=readkey; If ((Tecla = 'S') OR (Tecla='s')) Then Goto INICIO; ClrScr; Write('Tchau...'); Adriano Mauro Cansian 95 End. Program Exemplo_5; {Programa para cálculo de fatorial de um número lido do teclado.} Var n,fatorial,i : Integer; Begin Clrscr; Write( Programa para calcular fatorial de N '); Write('Digite N (digite N menor que 0 para terminar) --> '); Readln(n); If n >= 0 then Begin; Fatorial:=1; If (n>0) Then For i:=1 to n do Fatorial:=Fatorial*i; Writeln('Fatorial de ',n,' = ',fatorial); End; Else Writeln( Valor Negativo!Programa Finalizado! ); End. Adriano Mauro Cansian 96 Prof. Dr. Adriano Mauro Cansian 48