Baixe o app para aproveitar ainda mais
Prévia do material em texto
PDF gerado usando o pacote de ferramentas em código aberto mwlib. Veja http://code.pediapress.com/ para mais informações. PDF generated at: Fri, 06 Dec 2013 10:35:56 UTC Pascal Conteúdo Páginas Introdução 1 Declarações 4 Comandos de Entrada e Saída 8 Expressões Aritméticas 10 Expressões Lógicas 11 Prioridades 12 Comandos de Atribuição 12 Estrutura Condicional 14 Estrutura de Repetição 22 Estrutura de Dados 29 Procedures 30 Functions 31 Arquivos texto 32 Referências Fontes e Editores da Página 34 Licenças das páginas Licença 35 Introdução 1 Introdução Introdução O que vem a ser linguagem de Programação Antes de falarmos em linguagem de programação, vamos falar primeiramente sobre o que é um programa. Chamamos de programas as sequências de instruções a serem seguidas (neste caso específico, pelo computador) para a realização de uma tarefa. Existem diversas formas de escrever um programa para o computador. Podemos fazê-lo diretamente em código de máquina (codificado em binário [1]) com o uso de mnemônicos e montadores (linguagens de baixo nível, como, por exemplo, assembly) ou com o uso de uma linguagem corrente, normalmente o inglês, e o uso de um interpretador que se encarrega de convertê-la em linguagem de máquina, o que é feito a cada comando quando ele for executado ( exemplo BASIC ). Um programa ainda pode ser feito por compilador (exemplo: COBOL, FORTRAN, PASCAL) que fará a conversão de todo o programa escrito em alto nível em um programa contendo o código objeto que, uma vez compilado, pode ser executado várias vezes sem depender mais do uso do programa compilador. Algoritmo Algoritmo é uma seqüência de procedimentos que são executados seqüencialmente com o objetivo de resolver um problema específico. Basicamente é um programa em linguagem mais próxima à nossa (alto nível). Exemplo de algoritmo: "Como fazer um bolo" Pegar Farinha 1 xícara Pegar Ovos ½ dúzia {ENTRADA} Pegar Leite 100 ml Pegar Fermento 1 colher pequena Misturar a farinha ao leite Bater os ovos {PROCESSAMENTO} Misturar os demais ingredientes Colocar no forno durante 20 minutos Retirar, Esfriar e comer {SAÍDA} Linguagem usada: Português (linguagem de alto nível) Elementos manipulados: ingredientes (ovos, leite, farinha, ...) Algoritmos são usados para rascunhos de programas, como forma de idealizar, organizando e desenvolvendo seqüências lógicas, em seguida são traduzidos para alguma linguagem de programação, Introdução 2 A linguagem Pascal Em cursos básicos de programação utilizamos a linguagem Pascal para praticar e executar algoritmos, pois esta linguagem foi criada com esta finalidade. História do Pascal Ano de 1971. O professor Niklaus Wirth projeta uma linguagem como trabalho escolar para estudantes de programação da Universidade Técnica de Zurique, Suíça. Essa linguagem vem a se chamar Pascal, homenageando o filósofo e matemático do século XVII, Blaise Pascal. A partir dessa época, diversas versões de Pascal foram implementadas, com destaque especial a Borland / Inprise, que construiu os melhores e mais populares compiladores Pascal. Turbo Pascal 1: Desde a sua primeira versão, o compilador pascal da Borland (chamado de Turbo Pascal) já possuía ambiente para digitação e depuração do código fonte, e fazia a compilação e linkedição do código em um único processo. Outra característica dos compiladores Turbo Pascal: são extremamente rápidos e geram executáveis enxutos, e com código nativo. Turbo Pascal 2 e 3: Foram acrescentadas algumas funcionalidades nessas versões, como o acesso a diretórios através do ambiente de programação, para a localização de arquivos. Foi incluído novos procedimentos e funções. Turbo Pascal 4: Foram introduzidas rotinas do DOS para leitura de diretórios, leitura e escrita de atributos de arquivos; ferramentas para acesso à memória e portas de hardware; facilidades para a construção de rotinas gráficas, com estilo de contornos e preenchimentos; foi implementado na versão 4 o conceito de unidade (Unit), fazendo com que um mesmo código fosse compartilhado entre vários programas fonte, e sem a necessidade da recompilação; esta versão ainda foi responsável pela implementação de novos tipos de dados e finalmente, a possibilidade de deixar o programa residente. Turbo Pascal 5: Ocorreu uma importante evolução no compilador - a depuração. O programa agora pode ser executado passo a passo, inclusive com o acompanhamento do conteúdo das variáveis. Turbo Pascal 5.5: Esta versão foi a responsável pela estréia do Pascal Orientado a Objetos, dando origem a primeira implementação do Object Pascal. Comandos Conjunto de palavras-chave de uma linguagem de programação que tem por finalidade dizer ao computador como ele deve executar uma tarefa. No exemplo de algoritmo descrito acima (receita de bolo), os comandos eram palavras-chaves representados por verbos da língua portuguesa, em computadores os comandos são usualmente palavras originária da língua inglesa. Exemplo: write, read, do, ... Compiladores Para que o computador execute o programa escrito em Pascal, é necessário traduzi-lo para a linguagem de máquina. Compiladores são estes tradutores, que além disso, ainda testam o código mostrando os erros. Principais compiladores usados: • Turbo Pascal 7 [2] - Clássico compilador de Pascal, Utiliza interface DOS; • Pascalzim [3] - Desenvolvido no Departamento de Ciências da Computação da Universidade de Brasília, Utiliza interface Windows, e tem como principal recurso a procura e substituição de palavras. • Free Pascal [4] - Compilador gratuito, compatível com Pascal e Object Pascal (linguagem usada no Delphi). É muito compatível com a linguagem usada no Turbo Pascal 7, e possui versões para sistemas Windows, GNU/Linux, Mac, DOS, OS/2, Haiku, e GNU/BSD. É um projeto de código livre (open source). Introdução 3 Bibliotecas Bibliotecas são um conjunto de funções e procedimentos chamadas por comandos nos programas. Por exemplo a biblioteca CRT responde ao comando clrscr (limpar a tela). No caso do compilador Turbo Pascal acessamos a biblioteca da seguinte forma: program teste; uses crt; var Observação: o compilador Pascalzim já acessa a biblioteca CRT, não sendo necessário acessá-la. Construção do programa em Pascal O programa se constitui num texto, que pode ser editado em qualquer editor de texto ou diretamente no compilador, sendo necessário ser salvo com a terminação .pas de pascal, em seguida compilado (traduzido para linguagem de máquina), para depois ser executado. Nos compiladores de hoje já é possível executar direto pulando todas estas etapas. O programa em Pascal se constitui basicamente de: {comentários entre chaves não são lidos pelo compilador} program Nome_do_programa; {identificação do programa} uses CRT; {acessar uma biblioteca,necessário no Turbo Pascal} var {declaramos as variáveis} a,b,c:real; {variáveis:tipo} begin {início do corpo do programa} read(a); {comandos dentro do corpo} c:=a; {comandos terminam com ponto e vírgula} end. {fim do corpo do programa com ponto} No decorrer do livro serão apresentados mais detalhes Exemplo de programa em Pascal: program nomey; uses wincrt; var nome:string; begin clrscr; write('Escreva um nome '); read(nome); writeln('O nome que voce escreveu foi: ',nome); readkey; end. Introdução 4 Referências [1] http:/ / Eletr%C3%B4nica_Digital/ Sistemas_de_Numera%C3%A7%C3%A3o#Sistema_bin. C3. A1rio [2] http:/ / gabriel. sg. urcamp. tche. br/ beraldo/ Documentos/ Tp7. zip [3] http:/ / pascalzim. tripod. com/ [4] http:/ / www. freepascal. eti. br/ Declarações Informações Informação é a matéria prima que faz com que seja necessária a existência dos computadores, pois eles são capazes de manipular e armazenar um grande volume de dados que vão gerar asinformações. • INFORMAÇÃO CONSTANTE – É aquela que não sofre nenhuma variação em seu conteúdo no decorrer do tempo. • INFORMAÇÃO VARIÁVEL – É aquela que pode sofrer variação no seu conteúdo no decorrer do tempo. As informações são divididas em quatro tipos primitivos: •• informação inteira. 15, 0, 9, -3 •• informação real. 1.67, 0.00, -2.45 • informação caractere. Formada por conjunto de caracteres alfanuméricos. “O menino disse não.” •• Informação lógica. Pode assumir somente duas informações. Verdadeira ou falsa. Identificadores São os nomes atribuídos para as constantes e variáveis que receberão as informações. Um identificador válido na linguagem Pascal é qualquer seqüência de caracteres que obedeça às seguintes regras: 1.1. Devem começar por um caractere alfabético( a, b, ..., z ) ; 2.2. Podem ser seguidos por mais caracteres e/ou numéricos, ou o caractere _ ; 3.3. Não é permitido o uso de caracteres especiais; 4.4. Têm que ser diferentes das palavras reservadas do Pascal, como os comandos, funções, etc. Exemplo: Identificadores válidos na linguagem Pascal: A Nota P1 Meu_Identificador Identificadores inválidos na linguagem Pascal: 1A E(13) A:B Declarações 5 Palavra reservada Identifica uma função determinada. Exemplo: (consulte a ajuda do seu compilador) APPEND TEXTCOLOR ARRAY CHR ASSIGN RED STRING AND THEN < TO BLUE TRUE CYAN TYPE ) UNTIL LIGHTRED VAR WHITE WHILE DIV WRITE ] WRITELN EOF Declaração A declaração de variáveis e constantes consiste em reservar um espaço na memória do micro para armazenar um certo tipo de informações, associando a este espaço um tipo de dados e uma identificação (nome da variável/constante). Constantes Valor que não é modificado durante toda a execução do programa. Ele é armazenado na memória para ser usado em cálculos e processamentos, mas não é modificado. Exemplo: o valor do PI, a nota mínima necessária para ser aprovado no semestre,etc. Declaramos as constantes da seguinte forma: CONST nome_da_constante = valor_da_constante ; Exemplos: CONST PI = 3.1415926; obs.: o ponto e vírgula finaliza o comando. Declaração de variáveis DECLARE Inteiro a Real x,y Real nota1, nota2, media1, notaRecuperacao, media2 Booleano sexo String Nome5, p Declarações 6 Variáveis Valor que pode ser alterado durante a execução do programa. Exemplo: salário, média final do aluno, etc. Declaramos as variáveis da seguinte forma: VAR nome_da_variável : tipo_da_variável ; Exemplos: VAR Idade: INTEGER; Salario: REAL; Sexo: CHAR; Nome: STRING; Tipos de dados No programa em Pascal temos três tipos de dados principais: Numéricos (inteiros e reais), caracteres (letras e símbolos) e lógicos (verdadeiro ou falso). Os tipos devem ser declarados no início do programa. Sintaxe: variável:tipo; variável_a,variável_b:tipo2; Exemplo: program exemplo; var nome:string; num,cont:integer; begin {corpo do programa} end; Numéricos Podem ser integer (inteiros) ou real (reais). Exemplo: PROGRAM exemplo; CONST { Declaração de constantes } PI = 3.1415926; VAR { Declaração de Variáveis } Raio,Area_da_Circunferencia : REAL; BEGIN { Comandos do Programa } write(‘Forneça o raio: ‘); readln (Raio); Area_da_Circunferencia := PI * ( Raio * Raio ); { Area = PI * R2 = PI * R * R } writeln(‘Área = ‘,Area_da_Circunferencia); Declarações 7 readln; END. Caracteres Podem armazenar letras (‘a’..‘z’; ‘A’..‘Z’), números (‘0’..’9’) ou outros caracteres especiais ( ‘@’,’#’, ‘$’, ‘%’, ‘*’, ‘\’, ...). Eles podem aparecer isolados (tipo char), ou agrupados formando palavras/frases (tipo string). Devem ser delimitados entre aspas e seu conteúdo é lido e/ou escrito literalmente. Usa-se char para um caractere e string para uma cadeia de caracteres. Sintaxe: letra:char; nome:string; Exemplos: ‘Nome’ (string) é diferente de Nome (variável) ‘1999’ (string) é diferente de 1999 (número) ‘1’ (char) é diferente de 1 (número) ‘begin’ (string) é diferente de BEGIN (comando Pascal) Lógicos Podem armazenar apenas um valor: verdadeiro(True) ou Falso(False). Este tipo de dados é usado em expressões lógicas, onde servem para testar ou indicar a resposta de alguma condição. Sintaxe: var variável1:boolean; Exemplo: program nota; {comentário entre chaves não é lido pelo programa} VAR {aqui são declaradas as variáveis} Aprovado, Reprovado : Boolean; BEGIN {corpo do programa} Aprovado := true; {a variável recebe um valor} Reprovado := False; END; Comandos de Entrada e Saída 8 Comandos de Entrada e Saída Entrada de Dados O comando de entrada é utilizado para receber dados digitados pelo usuário. Os dados recebidos são armazenados em variáveis. Esse comando é representado pela palavra-chave Read ou Readln. Sintaxe : Readln (Nome-da-variavel); Readln (Nome-da-variavel1, Nome-da-variavel2); Exemplo: Var X, Y : Integer; Begin Readln (X); Readln (Y); {As linhas acima tem a mesma função que as linhas abaixo, com apenas uma diferença que será explicado a seguir} Read (X); Read (Y); End. Exemplo: Var X, Y : Integer; Begin Readln (X, Y); {A linha acima tem a mesma função que a linha abaixo, com apenas uma diferença que será explicado a seguir} Read (X, Y); End. Diferença entre Read e Readln Read e Readln desempenham a mesma função, a unica diferença é que após a entrada de dados com Read o cursor fica na mesma linha, e no caso do Readln o curso vai para a linha de baixo. Saída de Dados O comando de saída de dados é utilizado para mostrar dados na tela. Esse comando é representado pelas palavras Write ou Writeln e os dados podem ser conteúdos de variáveis e/ou mensagens. Sintaxe: Write (Nome-da-Variavel); Writeln (Nome-da-Variavel); Writeln ('Mensagem'); Writeln ('Mensagem', Nome-da-variavel); Exemplo: Var X : Integer; Comandos de Entrada e Saída 9 Begin X := 12; Writeln ('Bem Vindo ao GNOIA'); Writeln ('O Valor de X é = ', X); {Podemos usar o comando Write Também, tem a mesma função do Writeln, com uma diferença que será explicada a seguir} Write ('O Valor de X é = ', X); End. Diferença entre Write e Writeln A diferença entre esses comandos é que o comando Writeln mostra o seu conteúdo e passa o cursor para a linha de baixo, enquanto o comando Write mantém o cursor na mesma linha. Exercícios 1. Desenvolva um programa em Pascal que escreva pedindo para o usuário digitar um nome, em seguida faça que o programa leia este nome, depois escreva este nome. Resolução: Program nome ; uses crt; var nome:string; Begin clrscr; {limpa a tela} write('Digite um nome '); read(nome); writeln(nome); readkey; {espera o usuário digitar alguma tecla} End. 2. Desenvolva um programa que leia 2 números inteiros, em seguida some esses números e escreva o resultado. Resolução: program somaacomb; uses crt; var a,b,c:integer; begin clrscr; write('Digite dois números inteiros '); read(a); read(b); c:=a+b; writeln(a,' + ',b,' = ',c); readkey; end. Expressões Aritméticas 10 Expressões Aritméticas EXPRESSÕES MATEMÁTICAS Chamamos de operadores matemáticos ou aritméticos o conjunto de símbolos que representa as operações básicas da matemática, a saber: + adição ; - subtração ; * multiplicação ; / divisão ; Exemplos: -2 + 2 ; ABC / 5 ; aula * ABC + XPTO – 8. Construa um algoritmo que calcule a média aritmética entre quatro notas quaisquer fornecidas pelo usuário. Program media; uses crt; var N1, N2, N3, N4: real; begin clrscr; writeln('Digiteas 4 notas'); readln( N1, N2, N3, N4 ); writeln('A média do aluno é: ',(N1+N2+N3+N4)/4); readkey; end. FUNÇÕES MATEMÁTICAS Existem comandos que executam funções matemáticas. Consulte a ajuda do compilador para uma lista detalhada. Dentre os principais temos: DIV Retorna o quociente inteiro da divisão. Sintaxe: num_inteiro:=(num1)DIV(num2); MOD Retorna o resto da divisão. Sintaxe: resto:=(num1)MOD(num2); Exemplo: Faça um programa para ler 2 números inteiros, dividi-los e escrever o resto de sua divisão. program resto; uses crt; var a,b,c:integer; begin clrscr; writeln('Digite 2 números inteiros'); Expressões Aritméticas 11 readln(a,b); c:=(a)mod(b); writeln('O resto da divisão do número ',a,' pelo número ',b,' é ',c); readkey; end. INT(x) – resulta a parte inteira de um número X. FRAC(x) – resulta a parte fracionária de X. ABS(x) – resulta o valor absoluto de X. Não importa se o número é negativo ou positivo, com ABS sempre retorna positivo. SQR(x) – resulta no quadrado de X. SQRT(x) – resulta na raiz quadrada de X (para X real não negativo) Exemplos (15)DIV(7) resulta 2 (15)MOD(7) resulta 1 INT(34.567) resulta 34 FRAC(546.34) resulta 34 ABS(-34) resulta 34 SQR(4) resulta 16 SQRT(64) resulta 8 Expressões Lógicas Operadores relacionais com expressões lógicas Estes operadores são usados para comparar valores e retornam um true (verdadeiro) ou false (falso) = ( igual a ) # ou <> (diferente) > ( maior ) < ( menor ) Operadores lógicos São usados em expressões lógicas adicionando mais opções NOT (NÃO) negação AND (E) conjunção OR (OU) disjunção Exemplo - if (num=10) or (num>10) then {condição lógica será executada se a variável num for >=10} Prioridades 12 Prioridades Prioridades Na resolução das expressões aritméticas, as operações e funções matemáticas guardam entre si uma hierarquia. 1- Parênteses mais internos. 2- Funções matemáticas. 3- * / 4- + - 5- Operadores relacionais; ( # - = - > - < ) 6- Operadores lógicos.( NÃO - E – OU ) Exemplo: Resolvendo passo a passo a expressão: - 4 / 2 + ABS( 5 – 3 * 5 ) / 2 – 4 / 2 + ABS( 5 – 15 ) / 2 {1- Parênteses mais internos, 3- multiplicação} – 4 / 2 + ABS( -10 ) / 2 {1- Parênteses mais internos} – 4 / 2 + 10 / 2 {2- Funções matemáticas} -2 + 5 {3- a divisão} 3 {resultado final} Comandos de Atribuição Atribuição de valores Podemos atribuir valores a variáveis e constantes que serão manipulados pelo programa. Atribuindo valores em constantes Uma constante recebe um valor no início do programa, e este valor não muda na execução deste programa. Ex: program test; const PI=3.14; nota_max=10; var Comandos de Atribuição 13 Atribuindo valores em variáveis Variáveis podem receber valor de uma expressão aritmética, de outra variável, ou ainda pelo comando read. Para atribuir valor a uma variável em Pascal usamos ":=" Exemplo: num:=2+2; {a variável num recebe o valor 4} a:=num*2; {a variável a recebe o valor 8} read(b); {a variável b recebe um valor digitado} Lembrando que a variável só pode receber um valor de acordo com o seu tipo declarado no início do programa com a palavra-chave var. No exemplo anterior program test; const PI=3.14; nota_max=10; var num,a:integer; b:real; begin num:=2+2; {a variável num recebe o valor 4} a:=num*2; {a variável a recebe o valor 8} read(b); writeln('Os números são PI=',PI,' a nota máxima é',nota_max); writeln('2 + 2 = ',num,' que multiplicado por 2 dá ',a); writeln('O número digitado foi ',b); end. Estrutura Condicional 14 Estrutura Condicional Estrutura Condicional Essa estrutura é conhecida também como estrutura de decisão ou de seleção, ela se caracteriza por execução de determinados códigos de programação dependendo da veracidade de uma condição. Neste tópico será apresentado as estruturas de condição simples, composta, aninhada (uma dentro da outra) e a estrutura Case. Estrutura Condicional - Simples Sintaxe: SE condição ENTÃO comando Notas: O comando só será executado se a condição for verdadeira. Uma condição é uma comparação que possui dois valores possíveis, verdadeiro ou falso. Sintaxe: SE condição ENTÃO INÍCIO comando1 comando2 comando3 FIM Notas: Aqui o comando também só será executado se a condição for verdadeira, a diferença dos dois exemplos acima é que, quando o número de instruções a serem executadas forem maior que um, então é necessário colocar as instruções dentro de blocos (Begin = INICIO e End = FIM). •• SE = IF •• ENTÃO = THEN •• INÍCIO = BEGIN •• FIM = END Exemplo com apenas uma instrução: Uses Crt; var X, Y : Integer; begin Writeln ('Entre com dois Números:'); { Mostra na tela a mensagem} Readln (X, Y); { Lê os dois números } If (X > Y) Then {Condição - SE X for maior que Y} Writeln ('X é Maior que Y, e seu valor é = ', X); end. Exemplo com mais de uma instrução: uses Crt; Estrutura Condicional 15 var X, Y : Integer; begin Writeln ('Entre com dois Números:'); { Mostra na tela a mensagem} Readln (X, Y); { Lê os dois números } If (X = Y) Then {Condição - SE X for igual a Y} Begin {INICIO - Repare abaixo que existe duas instruções, dois comandos Writeln, por isso estão entre BEGIN e END} Writeln ('X é igual que Y'); Writeln ('O Valor de X é =', X); End; {FIM} end. Exemplo utilizando operadores Lógicos: uses Crt; var X, Y : Integer; begin Writeln ('Entre com dois Números:'); { Mostra na tela a mensagem} Readln (X, Y); { Lê os dois números } If ((X > Y) And (Y <> 0)) Then {Condição - SE X for maior que Y E Y diferente de 0 - Repare no And} Begin {INICIO - Repare abaixo que existe três instruções, três comandos Writeln, por isso estão entre BEGIN = INICIO e END = FIM} Writeln ('X é Maior que Y'); Writeln ('Y é diferente de 0'); Writeln ('O Valor de X é =', X); End; {FIM} end. Notas: Repare no operador Lógico AND, só serão executados os comandos Writeln, se as duas condições forem verdadeiras. Se a variável X for maior que a variável Y e se a variável Y for diferente de 0 (zero). Exemplo utilizando operadores Lógicos: uses Crt; var X, Y : Integer; begin Writeln ('Entre com dois Números:'); { Mostra na tela a mensagem} Readln (X, Y); { Lê os dois números } If ((X > Y) Or (Y <> 0)) Then {Condição - SE X for maior que Y OU Y diferente de 0 (zero)- Repare no Or} Begin {INICIO - Repare abaixo que existe três instruções, três comandos Writeln, por isso estão entre BEGIN = INICIO e END = FIM} Writeln ('X é Maior que Y'); Writeln ('Y é diferente de 0'); Estrutura Condicional 16 Writeln ('O Valor de X é =', X); End; {FIM} end. Notas: Nesse caso acima utilizando o Operador Lógico OR (OU), serão executados os comandos Writeln, se uma das duas condições forem verdadeira. Se a variável X for maior que a variável Y OU Se a variável Y for diferente de 0 (zero). Estrutura Condicional - Composta Sintaxe: SE condição ENTÃO comando1 SENÃO comando2 Notas: O comando1 só será executado se a condição for verdadeira, caso contrário, se a condição for falsa, será executado o comando2. Sintaxe: SE condição ENTÃO INÍCIO comando1 comando2 comando3 FIM SENÃO INÍCIO comando4 comando5 FIM•• SE = IF •• ENTÃO = THEN •• SENÃO = ELSE •• INÍCIO = BEGIN •• FIM = END Exemplo com apenas uma instrução: Uses Crt; var X, Y : Integer; begin Writeln ('Entre com dois Números:'); { Mostra na tela a mensagem} Readln (X, Y); { Lê os dois números } If (X > Y) {Condição - SE X for maior que Y} Then Writeln ('X é Maior que Y, e seu valor é = ', X) {Entra nesse comando apenas se X for maior que Y - Repare que antes de ELSE não vai ";"} Else Writeln ('Y é maior ou igual a X, seu valor é = ',Y); Estrutura Condicional 17 {Entra nesse comando se Y for maior ou igual a X} end. Exemplo com mais de uma instrução: Uses Crt; var X, Y : Integer; begin Writeln ('Entre com dois Números:'); { Mostra na tela a mensagem} Readln (X, Y); { Lê os dois números } If (X > Y) {Condição - SE X for maior que Y} Then Begin Writeln ('X é Maior que Y'); Writeln ('O valor de X é =', X); End { Repare que não tem ponto e vírgula por que "End" está antes do "Else"} Else Begin Writeln ('Y é Maior ou Igual a X'); Writeln ('O valor de Y é =', Y); End; end. { Sempre no "End" do programa principal vai ponto final ".", e não ponto e virgula ";"} Estrutura Condicional Aninhada O if aninhado é simplesmente um if dentro da declaração de um outro if externo. É necessário saber exatamente a qual if um determinado else está ligado, para não ocasionar erro na lógica do programa. Exemplos de IF's aninhados: Uses Crt; Var X, Y, A, B : Integer; Begin Readln (X,Y,A,B); If (X > Y) Then { Entrará no Próximo If apenas se a variável X for maior que a variavel Y } | If (A > B) | | Then Writeln ('X é maior que Y e A é maior que B') {Sem ";"} | Else Writeln ('A não é Maior que B') {Sem ";"} Else Writeln ('X não é maior que Y'); End. { O caracter "|" serve para indicar qual IF pertence a qual ELSE} { Repare que antes do ELSE nao tem ";"} Exemplo de IF's aninhados: Estrutura Condicional 18 Uses Crt; Var X, Y, A, B : Integer; Begin Readln (X,Y,A,B); If (X > Y) Then | If (A > B) | Then Begin | | | Writeln ('X é maior que Y e A é maior que B'); | | | Writeln ('O Valor de X é = ', X); | | | Writeln ('O Valor de A é = ', A); | | End | Else Begin | | Writeln ('A não é Maior que B'); | | Writeln ('O Valor de B é = ', B); | End Else Writeln ('X não é maior que Y'); End. Notas: Repare que para cada BEGIN sempre terá um END, e tem que ficar atento sempre em relação a qual ELSE perfence a qual IF. Os programas acima para compilá-los é necessários tirar todos os caracteres "|" (pipe), que foi utilizado para mostrar a inter-relação entre BEGIN's - END's e IF's - ELSE's. Else Pendente Else pendente acontece quando ele se encontra "perdido" dentro do código, ou seja, ele não sabe a qual If pertence. Exemplo de Else pendente: Uses Crt; Var X, Y, A, B : Integer; Begin Readln (X,Y,A,B); If (X > Y) Then If (A > B) Then Writeln ('A é maior que B') Else Writeln ('A não é Maior que B'); End. Notas: O compilador adota que o Else sempre será do If mais interno. Exemplo de como resolver o problema do Else pendente: Uses Crt; Var X, Y, A, B : Integer; Begin Estrutura Condicional 19 Readln (X,Y,A,B); If (X > Y) Then Begin If (A > B) Then Writeln ('A é maior que B') Else Writeln ('A não é Maior que B'); End; End. Notas: Para que não haja duvidas a qual If o Else pertence utilize os delimitadores BEGIN - END. Estrutura Case O comando CASE é importante para a estruturação de um programa que possua diversas opções de execução, tornando-o bem legivel e estruturado, evitando o uso do IF de forma repetida. O comando CASE trás junto com ele uma restrição, onde, seletor tem que ser do tipo char, integer ou boolean. Sintaxe: CASE seletor OF alvo1 : comando1; alvo2 : comando2; alvo3 : comando3; END; Sintaxe: CASE seletor OF alvo1 : BEGIN ... instruções ... END; alvo2 : comando2; alvo3 : BEGIN ... instruções ... END; ELSE comando4; END; Exemplo: { Um simples exemplo de como se trabalha com a Estrutura Case } Uses Crt; Var X : Integer; Begin Readln (X); Case X Of 1 : Writeln ('Ola Mundo'); { E o valor de X for igual a 1, Estrutura Condicional 20 irá executar essa linha } 2 : Writeln ('GNOIA'); { X = 2, essa linha será executada } 3 : Writeln ('Software Livre'); { X = 3 - essa linha será executada } End; End. Exemplo: Uses Crt; Var Y, X : Integer; Begin Readln (X, Y); Case X Of 1 : Begin Y := 4; Writeln ('Entrou no Primeiro alvo'); End; 2 : Begin Y := 3; Writeln ('Entrou no Segundo alvo'); End; 3 : Writeln ('Entrou no Terceiro alvo'); Else Writeln ('Entrou no Else'); End; End. Exercícios 01- Faça um programa para ler três números e escrever se estes podem ou não formar um triângulo. Observação – Para formar os lados de um triângulo cada um dos valores tem que ser menor que a soma dos outros dois. Resolução: Program triangulo ; var l1,l2,l3:integer; Begin clrscr; writeln('Digite os lados do triângulo'); readln(l1,l2,l3); if (l1<l2+l3) and (l2<l1+l3) and (l3<l1+l2) then writeln('Os números formam os lados de um triângulo') else writeln('Os números não formam os lados de um triângulo'); readkey; Estrutura Condicional 21 End. 02- Faça um programa para ler três números e se estes poderem formar um triângulo dizer se o triângulo é “EQUILÁTERO”, “ISÓCELES” OU “ESCALENO”. Resolução: Program triangulo ; var A,B,C:integer; Begin | clrscr; | writeln('Digite os lados do triângulo'); | readln(A,B,C); | if (A<B+C) and (B<A+C) and (C<A+B) then | | begin | | | write('Os números formam os lados de um triângulo '); | | | if (A=B) and (B=C)and (C=A) then | | | | write('equilátero ') | | | else | | | | if (A=B) and (A<>C)or (B=C)and (C<>A)or(A=C)and (A<>B)then | | | | | write('isósceles') | | | | else | | | | | write('escaleno'); | | end | else write('Os números não formam os lados de um triângulo'); | readkey; End. 03- Faça um programa que leia as três notas, as faltas e o nome de um aluno e imprima sua situação. ( “APROVADO”, “REPROVADO POR FALTA” ou “REPROVADO POR MÉDIA” ) Observação – A média para aprovação é 5.0 e o limite de faltas é 17. Resolução: Program aluno; var nome:string; n1,n2,n3,media:real; f:integer; Begin clrscr; writeln('Digite os dados do aluno'); write('Nome: '); readln(nome); write('3 notas: '); readln(n1,n2,n3); if (n1<0) or (n1>10) or (n2<0) or (n2>10) or (n3<0) or (n3>10) then begin write('Notasinválidas, digite notas de 0 a 10!'); readln(n1,n2,n3); Estrutura Condicional 22 end; media:=(n1+n2+n3)/3; write('Quantidade de faltas :'); readln(f); if f<0 then begin write('Faltas inválidas! digite um número maior ou igual a 0!'); readln(f); end; write('O aluno ',nome,' está '); if (media>=5) and (f<18) then write('aprovado com média: ',media:2:2); if media<5 then write('reprovado por média: ',media:2:2); if f>17 then write('reprovado por falta: ',f:2); readkey; End. Estrutura de Repetição Toda vez que precisamos repetir determinado número de vezes uma determinada seqüência de comandos, usamos um laço de repetição, que corresponderia repetir o mesmo trecho um número X de vezes sem ter de escrever o mesmo trecho X vezes Exemplo: Calcular a média de 50 alunos (sem repetição) program media_notas; var NOME: string; N1, N2, N3, MEDIA: real; begin {1º ALUNO} read(NOME,N1,N2,N3); if (N1>=0) and (N2>=0) and (N3>=0) and (N1<=10) and (N2<=10) and (N3<=10) then begin MEDIA :=(N1+N2+N3)/3; writeln( 'O aluno de nome ',NOME,' tem a média ',MEDIA,' em suas notas '); end else begin writeln('Não são aceites notas negativas '); end; {2º ALUNO} read(NOME,N1,N2,N3); if (N1>=0) and (N2>=0) and (N3>=0) and (N1<=10) and (N2<=10) and (N3<=10) then begin MEDIA :=(N1+N2+N3)/3; Estrutura de Repetição 23 writeln( 'O aluno de nome ',NOME,' tem a média ',MEDIA', em suas notas '); end else begin writeln('Não são aceitas notas negativas '); end; {3º ALUNO} {50º ALUNO} read(NOME,N1,N2,N3); if (N1>=0) and (N2>=0) and (N3>=0) and (N1<=10) and (N2<=10) and (N3<=10) then begin MEDIA :=(N1+N2+N3)/3; writeln( 'O aluno de nome ',NOME,' tem a média ',MEDIA,' em suas notas '); end else begin writeln('Não são aceitas notas negativas '); end; end. Contador Utilizamos uma variável que será incrementada a cada repetição, isto é, a cada repetição contamos +1 na variável, até um valor de acordo com o número de vezes que queremos repetir No exemplo acima, como queremos 50 alunos, contaríamos 50 repetições Sintaxe: CONT:integer; ( Variável inteira que irá contar o número de repetições ) CONT:=1; ( Iniciação do contador, ele deve começar com algum valor ) CONT:= CONT+1; ( Incrementar o contador em +1, repare que em cada repetição ele irá aumentar +1) Testes lógicos Usamos testes lógicos para saber quando parar a repetição, ou seja, estabelecemos uma condição para a repetição continuar, caso contrário o programa ficaria preso na repetição eternamente Por exemplo, usando o contador, a cada repetição testamos o número do contador até que ele alcance quantidade desejada, caso o contador atinja a quantidade de vezes que queremos repetir, o loop (repetição) pára Exemplo: programa para fazer a tabuada de multiplicação do número 7: program tabuada; uses CRT; var contad:integer; Estrutura de Repetição 24 begin clrscr; contad:=0; {iniciamos o contador declarando seu primeiro valor} while contad<10 do {Enquanto cont<10, condição é testada a cada repetição} begin writeln('7 x ',contad,' = ',7*contad); contad:=contad+1; {incrementamos o contador a cada repetição} end; readkey; end. Comandos de repetição Em Pascal os principais comandos de repetição são While(faça enquanto) Repeat(repita) for (para repetir de um número até algum número} While (enquanto) Usando o while pedimos ao Pascal para repetir "enquanto" a expressão for verdadeira Sintaxe while <condição> do begin <comandos>; <comandos>; end; Veja o exemplo acima usando while: program media_notas; uses crt; var NOME: string; N1, N2, N3, MEDIA: real; CONT: integer; begin clrscr; CONT:=0; while CONT<=50 do begin CONT:=CONT+1; write ('Digite o nome: '); read (NOME); write ('nota 1: '); read (N1); write ('nota 2: '); read (N2); Estrutura de Repetição 25 write ('Nota 3: '); read (N3); MEDIA:=(N1+N2+N3)/3; if (MEDIA >= 6) then begin writeln('O aluno de nome ',NOME,' tem a média ',MEDIA,' em suas notas '); end else writeln('REPROVADO'); end; end. Repeat until (repita até) O comando repeat executa repetidamente uma sequência de comandos "até" (until) que uma dada condição seja verdadeira Sintaxe: repeat <comando1>; <comando2>; <comando3>; until <condição>; Observação: este comando não precisa de begin (início) e end (fim) para demarcar o corpo da repetição Exemplo: Faça um programa para pedir um número, em seguida escrever uma tabuada de multiplicação deste número, caso for digitado o número 0, parar o programa program tabuada; uses CRT; var num:real; cont:integer; begin repeat clrscr; write('Digite um número para ver sua tabuada de multiplicação '); read(num); cont:=0; while cont<10 do {temos aqui uma repetição dentro de outra} begin writeln(num:4:2,' x ',cont,' = ',(num*cont):6:2); cont:=cont+1; {a cada repetição o cont aumenta +1} end; readkey; {parada para ver o resultado até ser teclado algo} until num=0; {condição para parar a repetição principal} clrscr; write('Foi digitado o número 0! programa encerrado!'); Estrutura de Repetição 26 readkey; end. for to (para de até) O comando for, diferentemente dos comandos de repetição repeat e while, permite que uma sequência de comandos seja executada um número definido de vezes A variável usada para contador já recebe um valor inicial e é incrementada pelo comando Sintaxe: for contador:=ValorInicial to ValorFinal do begin comandos end; Exemplo: Programa para calcular a média de 3 notas de 10 alunos: program media_notas; var NOME:string; N1,N2,N3,MEDIA:real; CONT:integer; begin FOR CONT:=1 to 10 do {para cont de 1 a 10 faça} begin write('Digite o nome e as 3 notas do ',cont,'o aluno '); read(NOME,N1,N2,N3); if (N1>=0) and (N2>=0) and (N3>=0) and (N1<=10 00) and (N2<=10 00) and (N3<=10 00) then begin MEDIA:=(N1+N2+N3)/3; writeln('O aluno de nome ',NOME,' tem a média ',MEDIA,' em suas notas '); end else begin writeln('Notas invalidas!'); end; end; end. Estrutura de Repetição 27 Crítica Usamos uma crítica para conferir se foi digitado um valor correto, usando para isso um teste lógico, dentro de uma repetição (laço), de onde só sairá quando for digitado um valor desejado, ou seja, obrigando que seja digitado um valor válido Exemplo: Programa para calcular a média de 3 notas de 10 alunos, criticando a nota digitada: program media_notas; var NOME:string; N1,N2,N3,MEDIA:real; CONT:integer; begin clrscr; FOR CONT:=1 to 10 do begin write('Digite o nome e as 3 notas do ',cont,'o aluno '); readln(NOME,N1,N2,N3); while(N1<0) or (n1>10) or (N2<0) or (N2>10) or (N3<0) or (N3>10) do begin {repete enquanto as notas forem menores que 0 ou maiores que 10!} writeln('Notas inválidas! Digite notas de 0 a 10!'); readln(N1,N2,N3); end; MEDIA:=(N1+N2+N3)/3; writeln('A média do aluno ',NOME,' é: ',MEDIA:2:2); end; readkey; end. Exercícios 01 Construa um programa que leia um conjunto de dados contendo altura e sexo (MASCULINO ou FEMININO) de N pessoas e calcule e escreva: •• a maior e a menor altura do grupo e de quem é esta altura ( Se HOMEM ou MULHER ) •• a média de altura entre as mulheres •• O número de homens e a diferença percentual entre estes e as mulheres •• Critique as variáveis onde for necessário Resolução: program alturamf; uses CRT; var quant,cont,cont_m,cont_f:integer; sexo,sme_alt,sma_alt:string; alt,alt_maior,alt_menor,alt_media,soma_alt,dif:real; begin {inicializa as variáveis} Estrutura de Repetição 28 cont_m := 0; cont_f := 0; alt_menor := 10; alt_maior := 0; soma_alt := 0; writeln('Qual a quantidade de pessoas?'); readln(quant); while quant<1 do {obriga a quantidade de pessoas ser positiva} begin writeln('Quantidade inválida! Digite uma quantidade maior que 1!'); readln(quant); end; for cont:=1 to quant do begin writeln('Qual o sexo da ',cont,'o pessoa?<m> masculino ou <f> feminino'); readln(sexo); while (sexo<>'m') and (sexo<>'f') do begin writeln('Sexo inválido! Digite <m> para masculino ou <f> para feminino!'); readln(sexo); end; writeln('Qual a altura da ',cont,'o pessoa?'); readln(alt); while (alt<0 2) or (alt>2 5) do {obriga uma altura válida} begin {repete até a altura ser válida} writeln('Altura inválida! Digite uma altura entre 0 2 e 2 5!'); readln(alt); end; if alt<alt_menor then {testa a menor altura} begin alt_menor:=alt; {guarda a menor altura} sme_alt:=sexo; {guarda o sexo da menor altura} end; if alt>alt_maior then {testa a maior altura} begin alt_maior:=alt; {guarda a maior altura} sma_alt:=sexo; {guarda o sexo da maior altura} end; if sexo='m' then {testa se o sexo e m} cont_m:=cont_m+1; {conta a quantidade de homens} else begin cont_f := cont_f+1; {conta a quantidade de mulheres} Estrutura de Repetição 29 soma_alt := soma_alt+alt; {soma a altura feminina} end; end ; clrscr; writeln('Resultado:'); write('A maior altura é: ',alt_maior:2:2,'m de um'); if sma_alt='m' then writeln(' homem') else writeln('a mulher'); writeln('A média de alturas entre as mulheres é :',soma_alt/cont_f:2:2); writeln('o número de homens é: ',cont_m:3); write('A diferença percentual entre homens e mulheres é: '); dif:=(cont_m/quant)*100-(cont_f/quant)*100; if dif>0 then write(dif:2:2,'% a mais de homens'); else write(abs(dif):2:2,'% a mais de mulheres'); readkey; end. Estrutura de Dados Uses Crt; Var X, Y, A, B : Integer; Begin Readln (X,Y,A,B); If (X > Y) Then Begin If (A > B) Then Writeln ('A é maior que B') Else Writeln ('A não é Maior que B'); End; End. Procedures 30 Procedures uses crt; { O Procedimento fará a troca dos valores de duas variaveis } Procedure Troca (Var Valor_1, Valor_2 : Integer); Var Aux : Integer; Begin Aux := Valor_1; Valor_1 := Valor_2; Valor_2 := Aux; End; Var X, Y : Integer; Begin clrscr; writeln ( 'entre com o valor de x ' ); readln ( x ); writeln (' entre com o valor de y' ); readln ( y ); Troca (X, Y); Writeln ('Valor de X = ', X); Writeln ('Valor de Y = ', Y); readkey; End. Notas: •• A palavra reservada **Var**, será devidamente melhor apresentada na seção passagem de parâmetros. pronto para compilar no pascal Functions 31 Functions Define-se, de forma muito parecida com uma função matemática. As funções recebem valores (parâmetros) e retorna um valor como resultado, ao contrario do procedure(procedimento), uma function(função) pode ser atribuída a uma variável. Ex.: idade:= get_idade(joao); Sintaxe: function NomeDaFunção(Parâmetro1: Tipo; ParâmetroN: Tipo): Tipo de retorno; var {declaração de variáveis locais á função quando necessárias} begin {bloco de instruções} end; Código Exemplo: Function Pergunta(Titulo, Mensagem: String): Boolean; Var I: Integer; F: Tform; Begin if (Titulo = ' ') then Titulo:= Application.Title; F:= CreateMessageDialog(Mensagem, MtConfirmation,[MbYes,MbNo]); Try For I:=0 to F.ComponentCount -1 do If F.Components[i] is TButton then With TButton(F.Components[i]) do Case ModalResult of MrYes: Caption := 'Sim'; MrNo: Caption := 'Não'; End; F.Caption:= Titulo; If (F.ShowModal = MrYes) Then Pergunta:= True Else Pergunta:= False; Finally F.Free; End; End; Arquivos texto 32 Arquivos texto program alturamf; uses CRT; var quant,cont,cont_m,cont_f:integer; sexo,sme_alt,sma_alt:string; alt,alt_maior,alt_menor,alt_media,soma_alt,dif:real; begin {inicializa as variáveis} cont_m := 0; cont_f := 0; alt_menor := 10; alt_maior := 0; soma_alt := 0; writeln('Qual a quantidade de pessoas?'); readln(quant); while quant<1 do {obriga a quantidade de pessoas ser positiva} begin writeln('Quantidade inválida! Digite uma quantidade maior que 1!'); readln(quant); end; for cont:=1 to quant do begin writeln('Qual o sexo da ',cont,'o pessoa?<m> masculino ou <f> feminino'); readln(sexo); while (sexo<>'m') and (sexo<>'f') do begin writeln('Sexo inválido! Digite <m> para masculino ou <f> para feminino!'); readln(sexo); end; writeln('Qual a altura da ',cont,'o pessoa?'); readln(alt); while (alt<0 2) or (alt>2 5) do {obriga uma altura válida} begin {repete até a altura ser válida} writeln('Altura inválida! Digite uma altura entre 0 2 e 2 5!'); readln(alt); end; if alt<alt_menor then {testa a menor altura} begin alt_menor:=alt; {guarda a menor altura} sme_alt:=sexo; {guarda o sexo da menor altura} end; Arquivos texto 33 if alt>alt_maior then {testa a maior altura} begin alt_maior:=alt; {guarda a maior altura} sma_alt:=sexo; {guarda o sexo da maior altura} end; if sexo='m' then {testa se o sexo e m} cont_m:=cont_m+1; {conta a quantidade de homens} else begin cont_f := cont_f+1; {conta a quantidade de mulheres} soma_alt := soma_alt+alt; {soma a altura feminina} end; end ; clrscr; writeln('Resultado:'); write('A maior altura é: ',alt_maior:2:2,'m de um'); if sma_alt='m' then writeln(' homem') else writeln('a mulher'); writeln('A média de alturas entre as mulheres é :',soma_alt/cont_f:2:2);writeln('o número de homens é: ',cont_m:3); write('A diferença percentual entre homens e mulheres é: '); dif:=(cont_m/quant)*100-(cont_f/quant)*100; if dif>0 then write(dif:2:2,'% a mais de homens'); else write(abs(dif):2:2,'% a mais de mulheres'); readkey; end. Fontes e Editores da Página 34 Fontes e Editores da Página Introdução Fonte: http://pt.wikibooks.org/w/index.php?oldid=233456 Contribuidores: Ajraddatz, Albmont, Aniel bispo, Helder.wiki, Jocile, Jorge Morais, Marcos Antônio Nunes de Moura, SallesNeto BR, 16 edições anónimas Declarações Fonte: http://pt.wikibooks.org/w/index.php?oldid=231789 Contribuidores: Helder.wiki, Jocile, Marcos Antônio Nunes de Moura, 3 edições anónimas Comandos de Entrada e Saída Fonte: http://pt.wikibooks.org/w/index.php?oldid=213700 Contribuidores: Helder.wiki, Jocile, Marcos Antônio Nunes de Moura, 3 edições anónimas Expressões Aritméticas Fonte: http://pt.wikibooks.org/w/index.php?oldid=252240 Contribuidores: Jocile, 3 edições anónimas Expressões Lógicas Fonte: http://pt.wikibooks.org/w/index.php?oldid=213705 Contribuidores: Jocile Prioridades Fonte: http://pt.wikibooks.org/w/index.php?oldid=213706 Contribuidores: Jocile Comandos de Atribuição Fonte: http://pt.wikibooks.org/w/index.php?oldid=225962 Contribuidores: Jocile, 1 edições anónimas Estrutura Condicional Fonte: http://pt.wikibooks.org/w/index.php?oldid=257847 Contribuidores: Alciderlopes, Helder.wiki, Igna, Jocile, Jorge Morais, Kalvinklim, Marcos Antônio Nunes de Moura, Simeondahl, 11 edições anónimas Estrutura de Repetição Fonte: http://pt.wikibooks.org/w/index.php?oldid=263461 Contribuidores: Abacaxi, Alciderlopes, Cristiano Araujo, Defender, Helder.wiki, Jocile, Jorge Morais, Raylton P. Sousa, Voz da Verdade, 24 edições anónimas Estrutura de Dados Fonte: http://pt.wikibooks.org/w/index.php?oldid=207685 Contribuidores: 1 edições anónimas Procedures Fonte: http://pt.wikibooks.org/w/index.php?oldid=239998 Contribuidores: Marcos Antônio Nunes de Moura, 5 edições anónimas Functions Fonte: http://pt.wikibooks.org/w/index.php?oldid=254407 Contribuidores: Abacaxi, 3 edições anónimas Arquivos texto Fonte: http://pt.wikibooks.org/w/index.php?oldid=250824 Contribuidores: Abacaxi, 1 edições anónimas Fontes, Licenças e Editores da Imagem 35 Licença Creative Commons Attribution-Share Alike 3.0 //creativecommons.org/licenses/by-sa/3.0/
Compartilhar