You are on page 1of 33
SUMARIO INTRODUCAO A PROGRAMACAO... LL DeFINICR0 DE ALGORITWO, LJ Algoritmo x Programa: 2 LINGUAGEM DE PROGRAMACAO... 121 Lipos de Linguagens de Programagao. 1.2.2 Processo de Criacao e Execucao de wm Programa, 1.3” Crtvéeios De QUALIDADE DE UM PROGRAMA, [4A LINGUAGEM PascaL LA] Histirico 14.2 OTurbo Pascal 4 4 nd 4 3 ESTRUTURA DE UM PROGRAMA EM PASCAL... 2.1 CABECALHO DO PROGRAMA 9 22. AREA be Dectaracos, - 9 23 Conro po PRoarama. 10 2.4 EXEMPLO DE UM PROGRAMA EM PASCAL. a micoeal) VARIAVEIS E CONSTANTES. 3.1. IDENTIFICADORES.. 3.2 PALAVRASRESERVADAS, 33. COMENTARIOS... 3.4. TWOS bE Davos 34.1 Tipos de Dados Iniciras 34.2 Tipos de Dados Reais 843° Thos de Dao Cascio 344 Tipos Légicos.. 33° Vauavels.. 346 CONSTANTES, COPERADORES E EXPRESSOES. 4.1 PRIORIDADE DAS OPERACOES 42. Tos pr Exreessors, 43. ‘THOS DE OPERADORES.. Operador de Atribuigdo. Operadores Avitméiicos... Operator de Concuiomag de Operadores Relacionais... Operadores Ligicos 4.4 Fungdes meeveninias ESTRUTURAS DE DECISAO... SL AINSTRUCAO IE. THEN 5.2. AINSTRUCAOIE. THEN. ELSE. ESTRUTURAS DE REPETICAO (LOOPS) 6.1 INSTRUGAO FOR... 62 INsTRUCAO WHILE..DO 63 INSTRUCAO REPEAT, ,UNTIL.. VETORES, MATRIZES F REGISTROS 7.1 VEroRES., 72 MaTRUES, 73 Reciemor. PROCEDURES E FUNCTIONS .. 8.1 UnLWZachove Unt... 82. PROCEDURES... sem . o sn S21 Varidveis Globais e Locais. 31 83. PARAMETROS. 83.1 Passagem por Vator £32 Passagem por Referinca. 34 84 FUNCTIONS ARQUIVOS.... 9.1 DEFINK;RO DEUM ARQUIVO... 9.2 OPERACGES DE UM ARQUIVO. 9.3. FORMAS DE ACESSO EM UM ARQUIVO, 9.5.1 Acesso Seyiencial. 93.2 Acess0 Diret0 0. 9.3.3 deesso Indexado 9.4 ARQUIVOS DO'TIPO LEXTO. 9.5 ARQuIvoS COW Tio DEINIDO ». conn oo 9.6 ARQUIVO COM TIPO DEFNIDO DE REGISTRO 6 1 INTRODUGAO A PROGRAMAGAO 44 Ds igo de Algoritmo, E a descrigio, de forma légica, dos passos a serem executados no cumprimento de determinada tarefa. E a forma pela qual descrevemos solugdes de problemas do nosso mundo, afim de serem implementadas utilizando os recursos do mundo computacional. Como este possui severas limitagdes em relagdo a0 nosso mundo, exige que sejam impostas lgumas regras hisieas na forma de salucionar os problemas para que possamos utilizar 5 recursos de hardware e software disponiveis 1.4.4 Algoritmo x Programa Um algoritmo é uma sequéncia légica de agdes a serem executadas para se executar uma detemminada tarefa, Um programa é a formalizagao de um algoritmo em. uma determinada linguagem de programacao, segundo suas regras de sintaxe & seméntica, de forma a permitir que 0 computador possa entender a seqiiéncia de agdes. 4.2 Linguagem de Programagao Uma linguagem de programagio ¢ um conjunto de simbolos ( comandos, identificadores, caracteres ASCII, etc. ...) € regras de sintaxe que permitem a construgaio de sentengas que descrevem de forma precisa ages compreensiveis © executiveis para 0 computador. LINGUAGEM DE PROGRAMACKO = S{MBOLOS + REGRAS DE SINTAXE Uma linguagem de programago 6 uma notagao formal para desericto de algoritmos que sero executados por um computador. Como todas as notagdes formais, uma linguagem de programagdo tem dois componentes: Sintaxe e Semantica, A sintaxe consiste em um conjumw de regras formais, que especifican a composigo de programas a partir de letras, digitos, e outros simbolos. Por exemplo, regras de sintaxe podem especificar que cada parénteses aberto em uma expresso aritmética deve corresponder a um parénteses fechado, e que dois comandos quaisquer devem ser separadus por umn ponto-e-virgula. AS regras de seu sam 0 “significado” de qualquer programa, sintaticamente vilido, escrito na linguagem, 1.2.1. Tipos de Linguayens de Programagao Existem diversas linguagens de programago, cada uma com suas caracteristicas especificas e com niveis de complexidade e objetivos diferentes, como pode ser visto na tab. 1.1. LINGUAGEM. ‘CARACTERISTICAS: Tinguagem de Maquina Unica compreendida pelo computador Especifica de cada computador. Tinguagens de Baixo Nivel Utiliza—-mnemonicos para _representar celementares Ex.: Assembly Tinguagens de Alia Nivel Utila instrugdes proximas da Tinguagem humana de forma a facilitar 0 raciocinio. Ex. Uso Cientifico ; Fortran Propdsito Geral: Pascal, C, Basic Uso Comercial: Cobol, Clipper Uso especifico _: Lisp, Prolog TTADELA T-1 — TIPOS DE LINGUAGENS DE PROGRAMACAO E SUAS CARACTERISTICAS 1.2.2 Processo de Criagao e Execugao de um Programa Embora seja teoricamente possivel a construgio de computadores especiais, capazes de executar programas escritos em uma linguagem de programagio qualquer, os computadores, existentes hoje em dia sio capazes de executar somente programas em linguagem de baixo nivel, a Linguagem de Maquina Linguagens de Maquina sto projetadas levando-se em conta os. seguintes aspectos © rapidez de execugdo de programas; custo de sua implementagao; e © flexibilidade com que permite a construgio de programas de nivel mais alto Por outro lado, linguagens de programagio de alto nivel so projetadas em fungao de : * facilidade de construgio de programas; ¢ # confiabilidade dos programas. © PROBLEMA #: Como a linguagem de nivel mais alto pode ser implementada em um computador, cuja linguagem € bastante diferente e de nivel mais baixo ? SOLUGAO: Através da tradugdo de programas escritos em linguagens de alto nivel para a linguagem de baixo nivel do computador. Para isso. existem trés tipos de programas tradutores. :Montadores, Interpretadores e Compiladores. Vejamos o que cada um deles representa, MONTADOR Efetua a traducio de linguagem de montagem ( Assembly ) para a linguagem de maquina, da seguinte forma: © obtém a préxima instrugo do Assembly; © traduz para as instrugdes correspondentes em linguagem de méquina; © executa as instrugdes em linguagem de maquina; e # repete o passo | até o fim do programa INTERPRETADOR Efetua a tradugao a de uma linguagem de alto nivel para linguagem de maquina dda seguinte forma: © obtém prévim trugto do cédigo-fante em tinguagem de alta nivel; * traduz para as instrugdes correspondentes em linguagem de méiquina; + executa as instrugdes em linguagem de maquina; e © repete © passo I até o fim do programa COMPILADOR Efetua a traduedo de todo o cédigo-fonte em linguagem de alto nivel para as instrugdes correspondentes em linguagem de maquina, gerando 0 cédigo-objeto do programa, Em seguida € necessério 0 uso de um outro programa ( Link-Editor ) que & responsiivel pela jungdo de diversos cédigos-objeto em um dinico programa executivel. EDIGAO ‘COMPILACAO LINK-EDICAO ALGORITMO = CODIGO-FONTE = CODIGO.OBIETO > PROGRAMA EXECUTAVEL Possibilidades de Erros no Programa: + Erros de Compilagao : erros de digitagdo e de uso da sintaxe da linguagem. * Eros de Link-Edigo : erro no uso de bibliotecas de sub-programas necessdrias ao programa principal. + Erros de Execugao : erro na bgica do programa (algoritmo), 1.3. Critérios de Qualidade de um Programa Vejamos alguns eritérios para everevermos um programa com qualidade: Integridade: refere-se 4 precisio das informagdes manipuladas pelo programa, ou seja, os resultados gerados pelo processamento do programa devem estar corretos, caso contrario o programa simplesmente nao tem sentido; Clareza: refere-se a facilidade de leitura do programa. Se um programa for escrito com clareza, deveré ser possivel a outro programador seguir a légica do programa sem muito esforgo, assim como o proprio autor do programa entendé-lo apés ter estado um longo periodo afastado dele. © Pascal favorece a escrita de programas com clareza ¢ lesibilidade: Simplicidade: a clareza ¢ precisio de um programa sto normalmente melhoradas tormando seu entendimento 0 mais simples possivel, consistente com os objetivos do programa. Muitas vezes torna-se necessirio sacrificar alguma eficiéneia de processamento, de forma a manter a estrutura do programa mais simples, Eficiéncia: refere-se a velocidade de processamento e a correta utilizagiio da meméria. Um programa deve ter performance SUFICIENTE para atender as necessidade do problema e do usuario, bem como deve utilizar os recursos de meméria de forma moderada, dentro das limitagdes do problema; Modularidade: consiste no particionamento do programa em médulos menores bem identificaveis e com fungdes especificas, de forma que 0 conjunto desses médulos © a interacdo entre cles permite a resolucdo do problema de forma mais simples ¢ clara; e Generalidade: ¢ interessante que um programa seja tio genético quanto possivel de forma a permitir a reutilizacdio de seus componentes em outros projetos. 1.4 ALinguagem Pascal 1.4.1 Historico Origem: desenvolvida nos anos entre 1968 ¢ 1970 por Nicklaus Wirth na Universidade Técnica de Zurique, Suiga. Em 1970 € disponibilizado o primeiro compilador para a linguagem. Objetivo: desenvolver uma linguagem de programagao disciplinada de alto nivel para ensinar programagio estruturada. Esia linguagem foi batizada com 0 nome de Pascal, em homenagem a Blaise Pascal, filbsofo ¢ matematico francés que viveu entre 1623 ¢ 1662. Padronizacdo: ANSI ( American National Standars Institute ) € IEEE ( Institute of Eletrical and Eletronies Engineers ) Padirio de Fato: Borland International cria em 1983 0 Turbo Pascal, Atualizagies: durante os iltimos enos foram langadas diversas variagdes da linguagem Pascal-Padrao, implementando recursos que nao sto encontrados na estrutura padrdo da linguagem. Nas maos da Borland, jé foram langadas as verses 3.0, 4.0, 5.0 € 5.5 na década de 80. Durante a década de 90 foram langadas as versdes 6.0, 7.0 € 0 Tangamento da linguagem Delphi, para programagao em ambiente Windows. 1.4.2. O Turbo Pascal © Turbo Pascal € mais que um simples compilador da linguagem Pascal, ele & um Ambiente Integrado de Desenvolvimento ( IDE - Integrated Development Environment ), consistindo de um conjunto de ferramentas de desenvolvimento integradas. Entre as ferramentas que compdem 0 Turbo Pascal temos: Editor de Cédigo-Fonte Zompilador Link-Editor Depurador Ajuda On-Line da Linguagem e do proprio IDE Podemos citar alguns comandos principais do Turbo Pascal : Compilar o programa : ALT + F9 Compilar e Executar o Programe : CTRL + F9 Acessar 0 Menu : ALT + Letra realcada. Criar um novo programa : menu FILE | NEW Salvar o programa atual : F2 Sair do Turbo Pascal : ALT |X Ver tela com os resultados do programa executado : ALT + FS 2 ESTRUTURA DE UM PROGRAMA EM PASCAL Todo programa escrito em Pascal é subdividide em ts areas distintas: cabegalho do programa, area de declaragdes e corpo do programa. 2.1. Gabegalho do Programa Esta drea é utilizada para se fazer a identificagio do programa com um nome. O cabegalho de um programa é atribuido pela instrucdo program seguida de um nome. Ao final do-nome deve-se colocar 0 simboly ponto-e-virgula (-; ). Nao pode existir nenhuma variével no programa que tenha o mesmo nome dado ao programa. ‘Vejamos um exemplo: program CALCULA_AREA; Caso voeé tenha atribuido ao progrema o nome Soma e também tenha atribuido este nome a uma varidvel no programa, quando for executado apresentara um ‘mensagem de erro. 2.2 Area de Declaragées Esta dea 6 utilizada para validar o uso de qualquer tipo de identificador que nao seja predefinido, estando subdividida em sete sub-dreas: uses, label, const, type, var, procedure e function. Inicialmente, vamos estudar apenas a sub-drea var. As demais sero estudadas em capitulos posteriores. A sub-area var utilizada na declarago das variiveis que serio utilizadas durante a execugao de um programa, bem como, também o seu tipo. Desta forma, a linguagem Pascal efetua a reserva de espago na meméria para que as variiveis sejam utilizadas. A declarago das varidveis ¢ atribuida pela instrugdo var seguida da relagdo de varidveis. Apés os nomes de cada varidvel devera ser utilizado 0 simbolo dois-pontos (-:), © apos estes & mencionado o tipo de dado que a variavel ira receber, seguido de ponto-e-virgula, ‘Vejamos um exemplo: var NOME string: IDADE : integer; ALTURA : real; Caso as variiveis sejam de mesmo tipo, estas poderio ser relacionadas separadas por virgula. Vejamos um exemplo: A,B, ©: duteger; 2.3 Corpo do Programa 0 programa propriamente dito em Pascal esta escrito na area denominada corpo do programa, esta érea tem inicio com a instrucdo begin e ¢ finalizada pela instrucdo end seguida do simbolo ponto (.. ). O uso destas instrugdes caracteriza 0 que € chamado de bloco, como indicado abaixo: begin instrugdes; (ed end. Na area denominada corpo do programa, poderdo existir, dependendo da necessidade, varios blocos, 2.4 Exemplo de um Programa em Pascal Para se colocar em priltica 0 que foi explicado até este momento, considere o seguinte exemplo de um problema: “Desenvolver um programa que getue a leitura de dois valores numéricos. Faca a operagao de adigao entre os dots valores e apresente 0 resultado obtido.” Note que sempre estaremos diante de um problema, ¢ que este deverd ser resolvido primeiro por nés, para que depois seja resolvido por um computador. Primeiramente, voce deve entender bem o problema, para depois buscar a sua solugéo dentro de um computador, ow seja, vocé deverd “ensinar” a maquina a resolver seu problema, através de um programa, Desta forma, o segredo de uma boa ligica esti na compreensio adequada do problema a ser solucionado. Vejamos nosso problema citado acima: Algoritm 1. Ler um valor para a varidvel 2. Ler outro valor para a variavel 8, 3. Bfetuar a soma das variiveis A €B, colocando o resultado na varivel X; 4. Apresentar o valor da varidvel X apés a operagio de soma dos dois valores fornecidos. Completada a fase de interpretago do problema e da definigao das varidveis a serem utilizadas passa-se para a fase de codificagio de nosso programa para a inguagem Pascal. Programa em program ADICIONA NUMEROS; X : integer; A: integer: B : integer; begin readin(A) ; readin(B) ; Kis A+B; weiteln (x) ; end. Entrada e Saida dos Dados Voeé deve ter observado os comandos readin e wri chanados de entrada e saida dos dados, respectivamente, A entrada de dados via teclado e a instrucao writeln gera a sai In, Estes comandos sio cugao readin permite a de dados via video. Poderiam também ser utilizadas as instrugdes write e read. Mas qual a diferenga ene elas? E muito simples: a colocagdo da In indica line new, ou seja, nova linha. Ser realizado um “pulo” de linha apés a leitura ou exibigo dos dados. As instrugdes write e read permite ananter © cursor ua mesa link, upés a exibigo day mneusagens ow leitura de dados. 3. VARIAVEIS e CONSTANTES 3.4 lentificadores Os identificadores sio nomes a serem dados a varidveis, tipos definidos, procedimentos, fungdes ¢ constantes nomeadas. Devem seguir as seguintes regras de construgao: © iniciar sempre por uma letra (a - 2,A - 2)ouumunderscore( _ )s #0 restante do identificador deve conter apenas letras, underscores ou digitos (0. ~ 9). Nao pode conter outros caracteres; ¢ * pode ter qualquer tamanho, desde que os ps significativos. ciros 63 caracteres sejam Nao existe distingdo entre letras maitisculas ¢ minisculas no nome de um identificador. Por exemplo, os nomes ALPHA, alpha e Alpha sio equivalentes. tengo para o fato de que identificadores muito longos so mais faceis de serem lidos. pelas’as pessoas quando se usa uma mistura de letras maidisculas ¢ minisculas; por exemplo, SalarioMinimo é mais ficil de se ler do que SALARIOMINIMO. ‘Vejamos alguns exemplos de identificadores validos: PAGAMENTO Soma_Total MaiorValor Mediai _Nedia e alguns exemplos de identificadores invalidos: SQuantidade 0 simbolo % ndo & permitido 4vendedor — Ndo pode comegar com um ntimero Soma Total © Nao pode ter espagos entre as letras Observagdo : Um identificador deveré ficar inteiramente contido em uma linha do programa, ou seja voce ndo pode comegar a digitar © nome do identificador numa linha ¢ acabar em outro. 3.2. Palavras Reservadas Pascal reconhece certo grupo de palavras como sendo reservadas. Essas palavras tem significado especial e nao podem ser usadas como identificadores em um programa. A tab. 3.1 apresenta todas as palavras reservadas do Pascal Padrao: and [downto in packed rm arral else inline procedure | type asim End interface [program [unit begin File Label record ‘until ease For mod repeat ‘until ‘const Foward nil set uses ‘constructor | Funetion not shi var destructor [Goto jobject | shr while div IF of string. with do. implementation [or then xor ‘TADELA 3.1 PALAVRASRESERVADAS DO PASCAL 3.3 Comentarios Comentirios sfo textos escritos dentro do cédigo-fonte para explicar ou descrever alguns aspectos relativos ao mesmo. Os comentarios podem ser colocados em qualquer lugar do programa onde um espago em branco possa existir. ‘Vocé pode colocar comentirios de duas formas: ou envolvendo o texto entre chaves “{..}” ou entre “ (* .. *)”. Quando 0 compilador encontra o simbolo “{* ele salta todos os caracteres até encontrar um “}”, Da mesma forma, todos os caracteres que seguem “(*” sto pulados até ser detectado o simbolo "*)". Como resultado disso, qualquer uma das formas pode ficar dentro da outra; por exemplo {...(#..*)..} € um comentario. 3.4 Tipos de Dados Os dados sio representados pelas informagdes a serem processadas por um, computado. Um tipo de dados especifica as caracteristicas, ou seja os valores © operacdes possiveis de serem utilizados com um dado desse tipo. Toda varivel € constante usada em um programa tem um tipo associado a ela. A linguagem Pascal fornece ao programador um conjunto de tipos de dados predefinidos. 3.4.1 Tipos de Dados Inteiros Sto caracterizados tipos inteiros, os dados numéricos positives ou negativos, excluindo-se qualquer mimero fraciondric. Em Pascal, este tipo de dado pode ser referenciado por um dos seguintes identificadores: Tipo de dado inteiro Faixa de abrangénci “Tamanho(bytes) shortint de 128 até 127 T byte integer de 32.768 a 32.767 2 bytes Tongint de 2.147 AR3.648 a 2.147. 483.647 4 bytes byte de 0 até 255 T byte word de 0 até 65535 2bvtes ‘Vejamos um exemplo: var NumAlunos : integer; Cont,contl : integer; 3.4.2. Tipos de Dados Reais O tipo de dado real permite trabalhar com nimeros fracionérios, tanto positivos como negativos, sendo sua capacidade dz armazenamento maior que dos nimeros inteiros. Vejamos os tipos: ‘Tipo de dado real Faixa de abrangéneia ‘Tamanho(bytes) Teal de 2.9 639 até L738 Gbytes single de 15 e45 até 3.4038 bytes double de 5.0 6-324 até 1.76308 Bytes extended de 3.4 64.932 até I.1 4.932 10 bytes comp. de -9.2 e18 até 9.2 18 B bytes ‘Vejamos um exemplo: var Nota : veal; Salario, media : real; 3.4.3 Tipos de Dados Caracteres Sto considerados tipos caracteres, as seqdéncias contendo letras, nimeros simbolos especiais. Uma seqigncia de caracteres, em Pascal, deve ser representada entre apéstrofos (‘). Este tipo de dado é referenciado pelo identificador string, podendo armazenar de | até 255 caracteres. Podemos ainda especificar um tamanho menor do que 03 255 caracteres permitidos. Vejamosa sintaxe para criarmos uma variével do tipo string com tamanho limitado. Sintaxe: variavel : string[tamanho] ; ‘Vejamos um exemplo do uso de strings: var Frase : string; Nome : string[45]; Existe ainda o tipo char, utilizado da mesma forma que o tipo string, porém com uma pequena diferenga: é usado para strings de apenas um caracter. Vejamos um. exemplo do tipo de dado char: var Sexo : char; 3.4.4 Tipos Logics Sao caracterizados tipos légicos, os dados com valores true (verdadeiro) e false (false). Este tipo de dado também e chamado de tipo boleano, Ele é representado pelo identificador boolean, ‘Vejamos um exemplo da utilizagao do tipo de dado boolean: var Aprovado : boolean; Confirma : boolean; 3.5 Varidveis Variivel, no sentido de programagio, é uma regio previamente identificada, que tem por finalidade armazenar informagdes (dados) de um programa temporariamente. Uma varidvel armazena apenas um valor por vez. Sendo considerado como valor 0 contetido de uma variével, este valor esta associado ao tipo de dado da variavel. Sintaxe: identif [ , identif ] lidentif [ , identiz . + tipo-de-dado; Loy tipo-de-dado; 1 onde: ripo-de-dado & um dos tipos predefinidos ou um tipo definido pelo usuério: ‘Vejamos um exemplo: var Soma, Total, Salario : real; Idade, Contador : intege: 3.6 Constantes Uma constante é um valor que ndo pode ser alterado durante a execugao do programa, sendo que seu tipo é definido por seu conteiido. Sintaxe: const identificador = expressao; identificador = expressao; ‘Vejamos um exemplo: program Area Circulo; { Programa para calcular a érea de um circulo. } const PI=3.141519265; var Area, Comprimento, aio: real; begin writeln( ‘Digite o Raio : "); readIn( Raio ); Area = PI* Raio * Raio; Comprimento = 2 * Pl * Raio; writeln( “Area =", Area ); writeln( ‘Comprimento da Circunferencia end. Comprimento ); 4 OPERADORES E EXPRESSOES Um programa tem como earacterisiiea fundamental a capacidade de processar dados. Processar dados significa realizar operagdes com estes dados. O uso de operadores permite a realizagio de tais operagdes. Exempla: o simholo + & um operadar que representa a aperagia aritmétion de adigao. Uma expresso é um arranjo de operadores e operandos. A cada expressio vallida € atribuicio um valor numés Exemplo: 4 +6 &uma expressio cujo valor & 10. 0s operandos podem ser variaveis, constantes ou valores gerados por fungdes. Os operadores identificam as operagdes a serem efetuadas sobre os operandos. Cada tipo de dados possui um conjunto de operadores relacionados. Os operadores classificam-se em Unérios ¢ Bindrios, conforme tenham um ou dois operandos, respectivamente. 4.1, Prioridade das Operagées Se virios operadores aparecerem em uma expresso, a ordem de execucdo das operagies sera dada segundo os critérios abaixo * pelo emprego explicito de parénieses: ‘pela ordem de precedéncia existente entre os operadores: € ‘se existirem operadores de mesma ordem de precedéncia, a avaliagao seré feita da esquerda para a direita.. ‘Vejamos a ortiem de precedéncia dos operadores ( da maior para a menar ): ‘Operadores Categoria O Paréntesis not ‘Operador Ligico Unario 7 div mod Operadores Multiplicativos ‘and_or Operadores Légicos =occe ‘Operadores Relacionais 4.2. Tipos de Expressées Existem trés tipos basicos de expresses: Num ic uma expresso é numérica quando os seus operands sio numéricos Cinteiros ou reais ) ¢ o resultado também ¢ um valor numérico. Literais: Uma expressio € literal quando os seus operandos sao literais do tipo string (nfo pode ser char) ¢ 0 resultado também é um valor literal. S6 existe um éinico operador para se usar em expressdes literais, o operador Concatenacio( + ). Boolenas: Uma expresso é booleana quando seu resultado & do tipo boolean (TRUE ou FALSE), podendo seu operando serem de qualquer tipo de dados. Nas expressdes relacionais sio usados os operadores Légicos ¢ os Relacionais. 4.3. Tipos de Operadores Existem varios operadores para a realizacdo de expresses em Pascal. Veremos agora algumas das mais importantes. 4.3.1 Operador de Atribuigéo operador de atribuigdo & utilizado para atribuir o valor de uma expressto a uma variavel Sintaxe: identificador_variavel := expressao; ‘Vejamos um exemplo: A r= 10; Nome := “Josias"; 4.3.2. Operadores Aritméticos Os operadores aritméticos sao utilizados para efetuar operagdes aritméticas com niimero inteitos ¢ reais. A tab. 4.1 apresenta os operadores aritméticos existentes em Pascal. (Operador’ ‘Simbolo Subtragae Adiga0 = Multiplicagio Divisdo Real 0 Inteira ( truncada) Resto da Divisio Inteira Inverte Sinal = ‘Mantém Sinal ‘TABELA 4.1 ~ OPERADORES ARITMETICOS ‘Vejamos um exemplo: voreresawrd +B; ( errado, ¢ é real } Boowm» 2 8 43.3. Operador de Concatenagao 0 operador de concatenagaio efetua a jungao de duas varidveis ou constantes do tipo string, ‘Vejamos um exemplo: PreNome, SobreNome, NomeCompleto : string! 30]; begin { Suponhamos 0 nome Josias Lima Santos } PreNome “Josias*; SobreNome “santos”; NomeCompleto := PreNome + SobreNome; uwriteln( NomeCompleto ); NomeCompleto := “Jose° + “Maria”; writeln( NomeCompleto ); end. 4.3.4 Operadores Relacionais Os operadores relacionais sao utilizados para efetuar a comparagaio entre dados de mesmo tipo. Os operadores relacionai tab.4.2. Maior que ‘Menor que’ Maior ou igual Menor ou igual gual Diferente ‘TABELA 4.2 ~ OPER: ‘Vejamos um exemplo: is existentes em Pascal podem ser vistos na ibolo > = > <= = ADORES RELACIONAIS, Notal, Nota2 NomeAlunot, A,B,C NomeAluno2 begin a B c ; if B= A4+C then writeln( B); Notal := 5.0; Nota2 := 10.0; if Notal < Nota2 then writeln( Notal ); NomealunoL Maria J! NomeAluno2 := “MariaJo: i£ NomeAlunol < NomeAL! writeln( NomeAlunol end. string( 30 1; integer; ose ; se; une2 then 20 43.5. Operadores Légicos 0s operadores logicos sto utilizados para se analisar duas ou mais expresses interretacionadas. A tab. 4.3 exibe os operadores ldgicos existentes em Pascal Operador: E OU NAO ‘TABELA 4.3 — OPERADORES LOGICOS: ‘Vejamos um exemplo: var Notal, Nota2 : real; NomeAlunol, NomeAluno2 : string[ 30 ]; A, B, C : integer; 1; NomeAlunol NomeAluno2 “Maria Jose” “Mariadose”; if (B= A+) and ( NomeAlunoi <> NomeAluno2 ) then writeln( NomeAlunol, B ); if (A= C) or ( NomeAlunol = NomeAluno2 ) then writeln( NomeAlunol ); if not( A=) then writeln( NomeAlunol ); end. Abaixo, segue trés tabelas, chamadas tabela-verdade, contendo o resultado do uso dos operadores logicos sobre dois operandos. OPERADOR AND. ‘OPERANDO 1 | OPERANDO2 [ RESULTADO TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE 21 OPERADOR OR OPERANDO1 | OPERANDO2 | RESULTADO. TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE TRUE. FALSE FALSE FALSE OPERADOR NOT NDO | RESULTADO TRUE FALSE FALSE TRUE 4.4 Fungoes predefinidas © Pascal oferece um conjunto de fungdes predefinidas (built-in functions), que vvirios tipos de dados simples. As fungSes, na maioria das vezes, necessitam de dados como pardmetro (dados de entrada). Vejamos algumas dessas slo usadas com fungdes: Eunees Matemiticas: Nome Fungo ‘Objetivo Tipo Pardmetro | Tipo do Retorno abs(x) Calcul 6 valor absolato dex inteiro ou real [0 mesmo que x cost x) Calcula © coseno de x em radianos | inteiro ou real real exp(x) Caleula e*, em que e=2.7182818 € | inteiro ow real real sistema natural de logaritmos neperianos. In(x) | Calcufa o Togaritmo natural de x G0) | inteiro ow real Teal exp (ings) Retorna x elevado a y Inteiro ow real real {utilizando regras de logaritmos}. Sint) Caleula 0 seno de x em radianos Tnteiro ou real Teal sqrx) Caleula 0 quadrado de x inteiro ou real__| _o mesmo que x sqrt(x) Caleula a raiz quadrada de x (>=0) | inteiro ou real real odd(xy Determina se x é par ou impar inteiro Boolean ‘TRUE, X é par / FALSE, X é impar Tandom(x) | Retorna um ndimero pseudo-aleat6rio inteiro real entre 0.e x. Se x nfo for especificado relorna um valor entre 0.0 ¢ 1.0 Bi Retorna o valor de PLG.1415...) Nenium real 22 EungGes Literais: ‘Nome Fungao Objetivo Tipo Parametro | Tipo Retorno Tength( x) Determina o niimero de caracteres string, inteiro dex ‘coneai( xT, x2, x3,..) | Coneatena duas ou mais strings string, ‘string (sméx 255 caracteres) copy(xy, 2) | Retorna uma subeadeia da cadeia x, | string, inteiro, ‘string ‘com z caracteres, comegando no inteiro ccaractery. UpCaset x) Retoma x convertido para char char maitiscula Fungdes para Conversa ‘Nome Fungio Objetivo Tipo Tipo Parimetro | Retorno ‘trune( x) Trunca x para um nimero inteiro Teal inteiro int(x) Retoma a parte inteira de x real real Frac( x) Retorna a parte fracionaria dex Teal real Tound( x) ‘Arredonda x para um inteiro eal inteiro cchr(x) | Determina o caracter ASCII representado por x Tnteiro char Fungées e Procedimentos de Uso Geral: Nome Fungo ‘Objetivo Tipo Pardmetro | Tipo do Retorno sizeof x) Retoma o niimero de byte dex ‘qualquer tipo inteiro gotoxy(s.3) | Move o curso para a coluna x e linha inteiro 23 5 ESTRUTURAS DE DECISAO Imagine um programa que apresente a média escolar de um aluno. Até aqui muito simples; mas além de calcular a média, 0 programa deve apresentar uma ‘mensagem indicando se 0 aluno foi aprovaco ou reprovado. Esta variavel, que até entéo servia para céleulos, agora passa a ser uma varivel de controle, onde partir dela poderemos tomar uma decisio sobre o sams do alino, Fm Pascal existem dias. instrugdes para efetuar tomadas de decisio e desvios de operagdes: * a instrugdo de decisdo simples if..then; € + a instrugdo de decisio composta if..then.else, 5.1 Ainstrugao if..then A iinstrugdo if..then tem por finalidade tomar uma decisio ¢ efetuar um desvio no processamento, dependendo, & claro, da condigao atribufda ser verdadetra ou falsa. Sendo a condigio verdadeira, sera executada a instruglo que estiver escrita apés a instrugdo if.then. Se a instrugdo for falsa, serdo executadas as instrugdes que estejam apés as instrugdes consideradas verdadeiras. Sintaxe. if then ; Vejamos um exemplo de um trecho de programa com o uso da instrugtio then if (> 10) then wwriteln(“O valor da variavelX e 10” Caso venha a existit mais de uma instrugdo verdadeira para uma determinada condigao, estas deverio estar inseridas en um bloco. Um bloco € 0 conjunto de instrugdes estar entre begin ¢ end. Sintaxe: if then begin end; 24 ‘Observe que 0 end ¢ finalizado com um ponto-e-virgula (; ) € no apenas ponto. © uso de ponto ao final de um end ocorre somente na finalizagio de um programa, ‘Vejamos um exemplo de um trecho de programa com 2 utilizacio de um bloco de instrugdes: if (x > 10) then begin Writeln(“O valor da variavel X e 10”); xiexth writeln(’ valor da variavel X agora e11”); ‘Vejamos um exemplo completo de um programa com o uso da instrugio if...then. “Ler dois valores inteiros ¢ independentemente da ordem em que foram inseridos, estes deverdio ser exibidos em ordem crescente, ou seja, se forem fornecidos 5 € 3 respectivamente, deverdo ser apresentados 3 ¢ 5. O programa em questao deveré efetuar a troca dos valores entre as duas varidveis” Algoritmo, 1. Ler dois valores inteiros (estabelecer variaveis A ¢ B); 2. Verificar se 0 valor de A & maior que o valor de B: a. se for verdadeiro, efetuar a troca de valores entre as variaveis; b. se for falso, pedir para executar o que esta estabelecido no passo 3; 3. Apresentar os valores das duas variaveis, Programa em program ORDENA; var X, A, B: integer; begin write (‘Informe uma valor para a variavel A: *); readin(A); write (‘Informe uma valor para a variavel B: readin(B); writeln; if(A > B) then begin XA; (COs valores ordenanlus sau. *), write(A, * *,B); end. 25 5.2. Ainstrugéo if...then...else Assim como a instrugao if..then, a instrucdo if...then...else tem por finalidade tomar uma decisdo ¢ efetuar um desvio no processamento, Se a condico for verdadeira serd executada a instrugdo logo abaixo do if, Sendo a condigdo falsa, sera executada a instrugtio que estiver posicionada logo apés a instrugdo else. O conceito de blocos de instrugdes vale também para esta instrugao. Sintaxe: if then else ; Caso Venha a existir mais de uma instrugdo verdadeira ou falsa para uma condigao, estas deverdio estar inseridas em um bloco, Sintaxe: if then begin ; ; end else begin ; cinstrugSes para condicéo falsa>; end; Observe que nos dois casos abordados acima, qualquer instrugzio que antecede a instuydu else estd escrita sein v pomtu-c-virgula (,). Isto ucorte pelo ato de a instrugio. else ser uma extensio da instrugio i ocorre apés o processamento da instru ‘Vejanos umn exemplo, “Ler dois valores numéricas e efeter a adig&o. Casa 0 valor somade seja maior ow igual a 10, este deverd ser apresentado somando-se a ele mais 5. Caso o valor somado nao seja maior ou igual a 10, esta deverd ser apresemado subtraindo-se 7.” Algoritmo, 1. Ler dois valores (variaveis A e B); 2. Efetuar a soma dos valores A ¢ B, atribuindo © resultado da soma a uma varidvel X; 3. Verificar se X é maior ou igual a 10: a. se for verdadeiro, mostrar X+5; b. se for falso, mostrar X-7. 26 Programa em program ADICIONA_NUMEROS; begin write(‘Informe um valor para a variavel A: *); readin(A): write(“Informe um valor para a variavel B: *); readin(B); writeln; X= A+B; write (“0 resultado equivale a: *); if (X>=10) then writeln(X+5) else writeln(X-5) end, Podemos trabalhar com o relacionamento de duas ou mais con instrugio if...then. Para estes casos, é necessario trabalhar com os operador ligicos, c Ps Fe os anteriormente, Vejamos alguns exemplos Operador AND program TESTA-LOGICA-AND; var NUMERO : integer; begin write(“Informe um numero: °); readin(NUMERO), writeln; if (NUMERO >= 20) and (NUMERO <=90) then writeln('O numero esta na faixa de 20 a 90") else wrriteln(‘O numero esta fora da faixa de 20 a 90°); end. 27 Operador OR program TESTA-LOGICA-OR; var A,B :imteger; begin write(‘Informe um valor para a variavel A: *); readin(A): write(“Informe um valor para a variavel B: *); readin(B); writeln; if (A>0) or (B>0) then writeln(“Um dos numeros e positive’); Operador NOT program [ESTA-LOGICA-NOT, var A,B,C, X: integers begin write(“Informe um valor para a variavel A: *); readin(A); write(“Informe um valor para a variavel B: *); readin(B); write(“Informe um valor para a variavel X: *); readin(X); if not (X>5) then C=(A+B)*X else C=(A-B)*X; writeln(*O resultado da variavel C corresponde a:’, C) end. 28 6 ESTRUTURAS DE REPETIGAO (LOOPS) Existem situagdes onde & necessirio repetir um determinado trecho de um programa um certo njimero de vezes. Imagine que vocé tenha que executar um determinado bloco de instrugdes 5 vezes. Com os conhecimentos que vocé tem até agora, seria necessirio repetir as instrugdes CINCO vezes, tornando seu trabalho muito cansative. Assim, existem as estnumras de repeticho, que permitem que voo8 execute estas tarefas de forma mais simplificada. Podemos chamar as estruturas de repetigaio de lagos ou loops, sendo que podem existir dois tipos de lagos de repeti¢ao: + laos finitos: neste tipo de lago se conhece previamente 0 mlimero de repetigdes que serdo executadas; & * lacos infinitos: neste tipo de laco nao se conhece previamente o niimero de repetigdes que sero executadas. Sao também chamados de condi pelo fato de encerrarem sua execugo mediante uma determinada condigdo. 6.1. Instrugao for (© comando FOR executa repetitivamente um comando enquanto é atribuido ‘uma série de valores a uma varitivel de controle (contador do FOR). Sintaxe : for variavel instrugao; to/downto do ou for variavel begin instrugaol; instrugao2; instrugao3; end; to/downto do ‘Vejamos um exemplo da utilizagdo da estrutura de repetigdo for. ‘Ler dois valores inteiros. Realize a adigéio destes ntimeros, armazenando 0 resultado em uma terceira variével. Apresemte o valor encontrado. Repita esta operacdo 5 vezes. Algoritmo, Criar uma varidvel para servir como contador, que iré variar de 1 até 5; Ler dois valores (varidveis A e B); Efetuar 0 cileulo, armazenando o resultado em R; Apresentar o valor caleulado contido na varigvel R; Repetir os passos 2, 3 € 4 até que o contador seja encerrado, vaere 29 Programa em program EXEMPLO_FO! var A,B, R, I: integers begin for! begin write(‘Entre um valor para A: ); readin(A); write(‘Entre um valor para B: ’); readin(B); writeln; R=A+B; writeln(*O resultado corresponde a: °.R); writeln; en end, toSdo Quando executado 0 programa, o conjunto de instrugdes situadas abaixo da instrugio for serio executadas durante 5 vezes, pois a varidvel I (varidvel de controle) inicializada com o valor 1 € incrementada com mais | a cada vez que o processamento passa pela instrugao for. Este tipo de estruiura de repetigao pode ser utilizado todas as veres que se tiver necessidade de repetir trechos finitos, ou seja, quando se conhece 0 niimero de vezes que se deseja repetirtais instrugdes. 6.2 Instrugao while...do Esta estrutura de repetigdo se caracteriza por efetuar um teste logico no inicio de um Joop, verificando se & permitido executar 0 trecho de instrugdes abaixo dela. A estrutura while...do tem o seu funcionamento controlado por condigao, Desta forma, podera executar um determinado conjunto de instrugdes enquanto a condig2o verificada permanecer verdadeira, No momento em que a condigao se toma falsa, o processamento da rotina é desviado para fora do loop. Sendo a condigao falsa logo no inicio do loop, as instruyGes contidas nele sio ignoradas. Sintaxe: while do ; ou while do begin ; 30 ‘Vejamos novamente 0 exemplo da adigdo de dois mimeros, utilizado agora a instrugdo while...do. “Ler dois valores inteiros. Realize a adiciio destes mimeros, armazenando 0 resultado em wma terceira varidvel. Apresente o valor encontrado, Repita esta operagdo 5 vezes.” Algoritmo Criar uma varidvel para servir como contador, com valor inicial igual al; Enquanto o valor do contador for menor ou igual a 5, processar os passos 3, aes: Ler dois valores (varidveis A e B); Efetuar 0 célculo, armazenando o resultado em R; Apresentar o valor calculado contido na variavel RR; Acrescentar ao contador mais 1;¢ Quando 0 contador for maior que 5, encerrar o processamento, mayee Programa em Pase: program EXEMPLO_WHILE_DOI; var A,B, R, | :integer; begin while (I <= 5) do begin write(‘Entre um valor para A: ); readin(A); write(‘Entre um valor para B: ’); readin(B); writeln; R=A+B; writeln(‘O resultado corresponde a: °,R); writeln; Além da utilizagao das variéveis A, Be R, foi necessirio criar uma terceira variivel, no caso I, para controlar a contagem do niimero de vezes que o trecho de programa devera ser executado. Imagine ainda uma outra situagao, onde © usuario deseja executar a rotina do programa varias vezes, mas este ndo sabe quantas ve7es ao certo deverd executar 0 trecho de programa, Neste caso nao seria conveniente manter um contador para controlar o looping, e sim, seria melhor que o programa fizesse ao uswério uma pelgunts, solicitandy se ¥ miesniy deseja Ou du Continua executandy ¥ progiania ‘Vejamos 0 mesmo exemplo, agora sob esta nova situacao: 31 Algoritmo, 1. Criar uma variavel para ser utilizada como resposta;, 2, Enquanto a resposta for sim, executar os passos 3. 4 e 5; 3. Ler dois valores (varidveis A eB); 4, Efetuar 0 célculo, armazenando o resultado em R; 5. Apresentar o valor calculado contido na variivel Rs 6. Quando resposta for diferente de sim, encerrar 0 processamento. Programa em. program EXEMPLO_WHILE_DO2; var A,B, Rs integer; RESP string; begin RESP = ‘SIM’; while (RESP = “SIM’) or (RES! begi write(‘Entre um valor para A: ); readIn(A); write(‘Entre um valor para B: ’); readin(B); writeln; R=A+B; writeln(‘O resultado corresponde a: °.R); S’) do write(“Deseja continuar 22"); readIn(RESP); No programa acima, 0 contador foi substituido pela variével RESP, que enquanto tiver o seu valor igual a SIM ou igual a S, executard as instrugdes contidas entre as instrugdes begin © end do comando while...do, 63 Instrugao repeat...until Esta estrutura caracteriza-se por efeiuar um teste logico no final de um looping, sendo parecida com a estrutura while...do. Seu funcionamento é controlado também por decisdo, Esta instrugdo iri efetuar a execucao de um conjunto de instrugdes pelo menos uma vez antes de verificar a validade da condigao estabelecida, Desta forma, repeat iri processar um conjunto de instrugdes, no minimo uma ver, até que a condigao se torne verdadeira. Para a estrutura repeat um conjunto de instrugdes € executado enquanto a condi¢ao se mantém falsa e até que se tome verducteira 32 Sintaxe: repeat ; ; ; until ; ‘Vejamos novamente nosso exemplo da adigao, agora utilizando a instrugio repeat...until: Algoritmo 1. Criar uma variavel para servir como contador, com valor igual a 1; 2. Ler dois valores (varidveis A e B); 3. Efetuar o cileulo, armazenando 9 resultado em R: 4, Apresentar o valor calculado contido na varidvel R; 5. Acrescentar 0 contador com mais 1; 6 Repetir os passos 2, 3 e4 até que o contador seja maior que 5. program EXEMPLO_REPEATI; var A,B, R, I :integers begin T=; repeat write(“Entre um valor para A: ); readin(A); write(Entre um valor para B: ’); readin(B); writen; writeln(‘O resultado cortesponde a: °.R); wniteln; +1; until (> 5); end. Assim que 0 programa é executado, a varivel contador é inicializada com valor igual a 1, Em seguida a instrucdo repeat indica que todo trecho de instrugdes situado até a instrugtio untill sera executado repetidas vezes até que sua condigio se tome verdadeira, ou seja, até que I seja maior que 5. Vejumos 0 mesmo exemplo, agora considerando que 0 usuério enverraré a execugdio segundo sua vontade. 33 Algoritmo, 1. Criar uma variavel para ser utilizada como resposta;, 2. Ler dois valores (varidveis A e B): 3, Efetuar o cileulo, armazenando o resultado em R: 4, Apresentar o valor caleulado contido na varidivel R: 5 6 Perguntar ao usuario se deseja continuar executando o programa; e .. Repetir 0 passos 2, 3 € 4 até que a resposta do usuario seja ndo, Programa em. program EXEMPLO_REPEAT2; var A,B, Rs integer; RESP string; begin RESP repeat ‘SIM’. write(“Entre um valor para A: ); readIn(A); write(‘Entre um valor para readin(B); writeln; ) writeln(*O resultado corresponde a: °.R); writen; write(‘Deseja continuar Sim/Nio 72"); readin(RESP); writel until ( *SIM’) and ( ‘sim’) end. Assim que 0 programa é executado, a variivel RESP ¢ inicializada com o valor SIM, Em seguia, a instrugio repeat indica que todas as instrugGes situadas até a instrugdo until deverio ser executadas até cue sua condigdo se torne verdadeira, ou seja que 0 usuario responda algo diferente de SIM, ¢ também diferente de sim. 34

You might also like