You are on page 1of 241
tee ks t= ft i, Lb aia ot Ste Lal ta a) Fy tte i | Easy) And ores ae Pte) C5 Ide Lee ier Hace Fe eae tsi ep Aluno) ; Writely fetes ee ee ras al) ie Wi ae S ae dados BE ts Readin (K) 1s es eae Ensino Profissional - Nivel 3 Anu hugs hu Médulos 1+2°3°4°5 Linguagens de Programacao 6-7-8-9 Médulos 1°2+3+4+5 Programacao e Sistemas 6-7 de Informacao G Porto Editora CONTEUDO GERAL MODULO 4 INTRODUCAO A ALGORITMIA 1.1 PROGRAMAS E ALGORITMOS 1.2 OPERACOES BASICAS EM ALGORITMOS E PROGRAMAS. 113 ALGORITMOS COMO SEQUENCIAS LOGICAS DE ACCES MODULO 2 INTRODUCAO A LINGUAGEM DE PROGRAMACAO 2.1 INTRODUCAO A UM AMBIENTE DE PROGRAMACAO. 2.2 NOCOES BASICAS DE PASCAL 2.3 OPERADORES E FUNCOES PREDEFINIDAS EM PASCAL, MODULO 3 ESTRUTURAS DE CONTROLO 3.1 ESTRUTURAS DE DECISAO OU SELECCAO 3.2 ESTRUTURAS DE REPETICAO OU CICLOS 3.3 INSTRUGOES DE SALTO EM PASCAL, MODULO 4 SUBPROGRAMAS [PROCEDIMENTOS E FUNCOES) 4.1, SUBALGORITMOS E SUA TRADUGAO PARA PASCAL 4.2 BLOCOS DE UM PROGRAMA, VARIAVEIS GLOBAIS E VARIAVEIS LOCAIS 4.3 PROCEDIMENTOS E FUNGOES. 44 SUBPROGRAMAS, PARAMETROS E ARGUMENTOS MODULO 8 DADOS ESTRUTURADOS - TABELAS (ARRAYS) 5.1 INTRODUCAO AOS DADOS ESTRUTURADOS DO TIPO ARRAY 5.2 UTILIZAGAO DE ARRAYS EM PASCAL. 5.3 CADEIAS DE CARACTERES 5.4 ARRAYS BIDIMENSIONAIS OU MATRIZES- MODULO 6 DADOS ESTRUTURADOS ~ REGISTOS (RECORDS) 6.1 INTRODUCAO AOS REGISTOS [RECORDS] EM PASCAL 6.2 UTILIZAGAO DE RECORDS EM PROGRAMAS MODULO? PONTEIROS E ESTRUTURAS DINAMICAS 7.4 INTRODUCAO AO CONCEITO E UTILIZAGAO DE PONTEIROS 7.2 INTRODUCAO AS ESTRUTURAS DE DADOS DINAMICAS 7.3 PILHAS 7 FILAS, 75 LISTAS ORDENADAS MODULO 8 OPERACSES COM FICHEIROS 8.1. NOCAO DE FICHEIRO [FILE] E TIPOS DE FICHEIROS: 8.2 OPERACOES COM FICHEIROS DE TIPO TEXTO SIMPLES. 8.3 OPERACOES COM FICHEIROS DE TIPOS DEFINIDOS PELO UTILIZADOR INTRODUCAO A ALGORITMIA 1.1, PROGRAMAS E ALGORITMOS Fases da programacio Algoritmos e algoritmia Algoritrmos em linguagem informal, pseudocédigo efluxogramas Simbolos utilizados nos fluxogramas 1.2 OPERACOES BASICAS EM ALGORITMOS E PROGRAMAS Operagses basicas relativas a um sistema informatica lnstrucdes, vardveis e operadores Tipos de dados, constantes e variéveis Tipos de dados simples ou primitivos Constantes evariaveis Instrugbes de atribuigdo lnstrugées de input e output de dados Instrugbes de input ou entrada de dados Instrucdes de output ou saida de dados Expressées aritméticas Expressées com operadores relacionais e légicos 41.3. ALGORITMOS COMO SEQUENCIAS LOGICAS DE ACCOES ‘Sequéncias lineares e nao lineares: Claseifcagio dos estruturas de contralo Estruturas de decisa0 Exemplos de aplicasio de estruturas de decisd0 Estruturas de selecgie ou escolha mitipta Exemplos de aplicasio de estruturas de seleccdo miitipla Estruturas de repeticao controladas por uma condigao Condigdo de contrto n fina do ciclo Condigao de controto no inicio do ciclo Concetes de teragdo, contador eacumulador Estruturas de repeticao com contador automitico Resumo das instrugdes bésicas e estruturas de controto PROPOSTAS DE TRABALHO E AUTO-AVALIACAD " 2 12 13 1“ 16 18 18 19 2 20 2 2 2B 2 2B m% 5 26 % 2 28 30 2 33 3% 3% 35 36 38 4 42 MGDULO2 INTRODUCAO A LINGUAGEM DE PROGRAMACAO 2.1 INTRODUGAO A UM AMBIENTE DE PROGRAMACAO Linguagens de programacao e software de traducao Ambientes de programacao para a linguagem Pascal Comecar novos programas, abrir guardarfcheiros Verificar, compilar e correr um programa 2.2 NOCOES BASICAS DE PASCAL Estrutura genérica de um programa em Pascat ‘As principais partes constitutivas de um programa em Pascal O cabecatho A parte declarativa ‘A parte operativa ou de instrucdes Palavras reservadas, identificadores e caracteres especiais Palavras reservadas e identificadores predefinidos Identificadores definidos peto utilizador/programador Caracteres especiais Legibilidade dos programas e inclusao de comentarios Declaracao de constantes e variéveis Constantes Voridveis ‘Tipos de dados em Pascal Tipo integer (inteiro} Tipo Reat Tipo Char (Caracter} Strings ou cadeias de caracteres Valores ligicos eu booleanos: Subconjuntos. Instrugdes basicas em Pascal Instrucdes de escrita Instrugdes de leitura Instrusdes de atribuicao 47 50 51 82 82 82 33 33 3 56 56 55 56 7 88 88 88 Co 4 “2 “3 63 “8 8 66 66 66 “8 2.3 OPERADORES E FUNCOES PREDEFINIDAS EM PASCAL Operadores e expresses em Pascal Ordem de prioridade dos operadores em Pascal Funcoes predefinidas da linguagem Pascal PROPOSTAS DE TRABALHO E AUTO-AVALIACAO, MODULO 3 ESTRUTURAS DE CONTROLO 3.1. ESTRUTURAS DE DECISAO OU SELECGAO Classifcago das estruturas de contralo Estrutura de decisio it. Then.. lee. Exemplos de aplicacio da estrutura It Estrtura de selecgbo "Case..." Exemplos de aplicacao da estrutura Case 3.2. ESTRUTURAS DE REPETICAO OU CICLOS Ciclos com condigdo no final “Repeat. Until. Ciclos, iteragdes, contadores e acumuladores Outros exemptos de apticags 4o ciclo “Repeat...Until..” Cielo com condic30 no inicio "While... Do. Exemplos de aplicagao da estrutura “While...” Ciclo com contador automatice "For. T0...Do..” Exemplos de aplicagao do ciclo “For... To.. Do. Comparacdes entre ciclos com contadores 3.3 INSTRUCOES DE SALTO EM PASCAL PROPOSTAS DE TRABALHO E AUTO-AVALIACAD MODULO & SUBPROGRAMAS (PROCEDIMENTOS E FUNCOES) 4A SUBALGORITMOS E SUA TRADUCAO PARA PASCAL ‘Abordagem top-down e subalgoritmos - exemplificagao 1 0 n % 1% 82 82 82 8% 88 0 % 8 %6 98 100 101 10% 105 108 110 m2 "7 18 8 MODULO 5 4.2 BLOCOS DE UM PROGRAMA, VARIAVEIS GLOBAIS ELOCAIS Nogio de bloco de um programa Variaveis globais e locais Variaveis globais, ocais e meméria 4.3 PROCEDIMENTOS E FUNCOES Diferencas entre procedimentos e funcées, FuncGes e tipos de dados 4.4 SUBPROGRAMAS, PARAMETROS E ARGUMENTOS Utilizagdo de pardmetros e argumentes Pardmetros e argumentos em procedimentos e funcoes, Passagem de argumentos a parémetros por valor e por referéncia PROPOSTAS DE TRABALHO E AUTO-AVALIACAD DADOS ESTRUTURADOS ~ TABELAS (ARRAYS) 5.1 INTRODUGAO AOS DADOS ESTRUTURADOS DO TIPO ARRAY Tipos de dados estruturados em Pascat Concsto de array Declaracio de arrays em Pascal Declaracio de um aray directamente come varivel Declaracae de um array come tipo Arrays unidimensionais e multidimensionais, 5.2 UTILIZACAO DE ARRAYS EM PASCAL Utilizagdo de arrays em instrugses bisicas Utilizagdo de arrays com estruturas de repeticao ou ciclos Exemplificacao de programas com arrays dentro de ciclos Determinagae do maior e do menor valor num array Multiplicac3o de um array unidimensional por um factor Operacses entre dois arrays unidimensionais mi i 1225 wah 1% 126 126 128 130 130 132 134 138 us 1a 146 145 146 146 146 war 8 4s 150 150 152 156 156 MODULO 6 MODULO 7 CADEIAS DE CARACTERES Strings, cadeias de caracteres e arrays Rotinas e fungées predetinidas usadas com strings Rotinas efuncées predefinidas usadas com caracteres Tabela ASCII (para portugues - cédigo 860] 5.4 ARRAYS BIDIMENSIONAIS OU MATRIZES Iterag3o de um array bidimensional numa estrutura de ciclos ‘encaixados Exemplos de programas que utilizam arrays bidimensionais PROPOSTAS DE TRABALHO E AUTO-AVALIACAD DADOS ESTRUTURADOS ~ REGISTOS (RECORDS) 6.1. INTRODUGAO AOS REGISTOS [RECORDS] EM PASCAL Concsito de regist (record Definico de um record directamente como variavel Definisdo de um record como tipo de dados Designacdo e acesso aos campos de um registo 6.2 UTILIZACAO DE RECORDS EM PROGRAMAS Combinagao de record com arrays PROPOSTAS DE TRABALHO E AUTO-AVALIACAD PONTEIROS E ESTRUTURAS DINAMICAS 7.1 INTRODUCAO AO CONCEITO E UTILIZACAO DE PONTEIROS: Ponteiros ¢ estruturas dinémicas Declaragao de ponteiros em Pascal Operacdes bisicas com ponteiros Ponteiros com estruturas do tipo registo Alocacae dinamica de meméria 188 188 159 162 163 166 165 166 168 75 176 1% 7 7 178 190 182 186 107 188 188 188 190 192 193 7.2 INTRODUCAO AS ESTRUTURAS DE DADOS DINAMICAS 196g Exemplo de criagio de uma lista ligada simples 1965 i 7.3 PILHAS 198 F Explicagao do procedimento de inserir um n6 numa pitha 200 Explicagao do procedimento de remover um né de uma pitha 201 74 FILAS. 202 Explicagao do procedimento de inserir um né numa fla 204 Expicasao do procedimento de remover um né de uma fila 205 75. LISTAS ORDENADAS 206 Procedimentos nserir e Percorrer 208 Procedimente destinado a ordenar uma lista 209 Procedimento destinado a remover um elemento numa lista ordenada 210 PROPOSTAS DE TRABALHO E AUTO-AVALIACAO 212 MODULO ® OPERACOES COM FICHEIROS 25 8.1 NOCAO DE FICHEIRO (FILE) E TIPOS DE FICHEIROS 216 Text files ou ficheiros de texto (caracteres ASCII) 217 Typed-files ou ficheiros de tipos definidos pelo uilzador/programador 27 OperacSes com icheros de dados em geral 27 8.2 OPERACOES COM FICHEIROS DE TIPO TEXTO SIMPLES ne 1) Dectaragao de varidveis de fchsiros do tipo texto 28 2) Associagao de uma variével de fcheira com um nome de ficheiro 218 31 Criagdo fisica de um ficheiro de tipo texto e sua abertura para escrita 219 4) Escrita de informacao num ficheiro de tipo texto 219 5] Fecho de um ficheiro de tipo texto 20 6} Reabertura de um ficheiro de tipo texto para leitura dos seus dados 220 7) Leitura dos dados num ficheiro de tipo texto {8} Reabertura de um ficheiro de tipo texto para acrescento dos seus dados Exemplo de um programa que opera com um ficheiro do tipo texto simples 8.3. OPERACOES COM FICHEIROS DE TIPOS DEFINIDOS PELO UTILIZADOR 1) Declaracao de variaveis de fichelros de tipos definidos pelo utitizador 2) Associago de uma varidvel de fcheiro com um nome de ficheiro 3) Cria¢do de um novo ficheiro de um tipo definido pelo utilizador 4) Escrita de informacao num ficheire de um tipo definido pelo utitizador 5] Fecho de um ficheiro de tipo definido pelo utilizador 6) Reabertura de um ficheiro de tipo definide pelo utilizador para acesso aos dados 7) Leitura dos dados num ficheiro de um tipo defi pelo utitizador £8) Determinacao da posicdo pretendida num ficheiro definido pelo utitizador 9) Acrascentar dados num ficheiro definido pelo utilizador 10} Alterar dados num ficheiro definido pete utiizador Exemplo de um programa estruturado para trabathar ‘com um ficheiro de dados PROPOSTAS DE TRABALHO E AUTO-AVALIACA BLIOGRAFIA 21 221 222 226 225 228 226 226 227 27 228 29 230 231 232 238 240 INTRODUCAO A NMI) UO 1.1 PROGRAMAS E ALGORITMOS 1.2 OPERACOES BASICAS EM ALGORITMOS E PROGRAMAS 1.3 ALGORITMOS COMO SEQUENCIAS LOGICAS DE ACCOES OBJECTIVOS Bee ee ooo 1 Identificar e construir algoritmos. EO Me et See Ec ee ne ee eee ee aS ERE eerste Deere eee eee eae ee pete Peete od ier ere 2 1.1. PROGRAMAS E ALGORITMOS Fases da programacao fie Oo pad Fie... Principais fases da programacae. As setas que apontam de baixo para cima significam que, em doterminadas fases, pode ser necessério voltar a fases anteriores e, em seguida, retomar 0 percurse mais légico. A actividade de programacso ¢ um proceso constituldo por varias fases ou etapas distintas: 1. Definicéo do problema; 2. Planificacao da resolucdo; 3. Codificacao ou escrita do programa; 4. Teste e depuracéo; 5. Documentacao; 6. Manutencao. 1. Definigao do problema. Para comecar, ha que definir 0 problema que se pretende resol- ver. Essa definicao deve ser feita da forma mais clara e completa possivel. Isto quer dizer que nao se pode partir para a fase seguinte da resolugéo de um problema sem ter um enunciado preciso de todos os aspectos da situacéo-problema a resolver. 2. Planificagdo da resolucao. Em seguida, devemos recorrer a uma estratégia de abor-; dagem do problema que seja 0 mais ade- quad possivel 4 obtencao de uma solucao. E nesta fase que surgem os algoritmos. Um algoritmo é um conjunto ou sequéncia finita e ordenada de acc6es que conduzem a solu- cao de um determinado problema. 3. Codificacdo. Uma vez definido um algo- ritmo adequado & solucao do problema, a fase seguinte — a codificacao — fica bastante facilitada, uma vez que se trata, entéo, ape- nas de transpor as indicacoes do algoritmo para instrugdes na linguagem de programa- 0 que se utilizar. 4, Teste e depuracao. Apés obtido o codigo do programa, ha entao que testa-lo com diversos tipos de dados e em diferentes situa- GOes (se for 0 caso), de modo a poderem detectar-se eventuais erros, falhas ou omis- soes, 5. Documentacao. A documentacao de um programa pode visar dois tipos de destinaté- rios: programadores e utilizadores. Para os programadores a documentacao pode, em ‘rande parte, ser incluida no proprio codigo e visa facilitar a sua compreensdo e eventual retoma para alteracdes ou melhoramentos por parte dos mesmos ou de outros progra- madores. Para os utilizadores a documenta- @o visa faciltar a aprendizagem relativa a0, modo de operar com 0 programa 6. Manutengéo. Finalmente, a fase de manu- tencao diz respeito a possiveis alteracoes que sejam necessarias fazer ou a aperfeicoamen- tos que se revelem tteis de introduzir. Esta fase tende a ocupar uma percentagem cada vez maior no trabalho dos profissionais de programacao. Algoritmos e algoritmia Fase de concepcao PROGRAMAS E ALSORITHOS. Fase de implementacao FI6.12. ‘A separacao entre algoritme e programa permite-nos distinguir e separar as fases de farmulag3o do algoritme ede implementaco do programa. Desta forma, & possivel conceber um algoritmo deixando para mais tarde os detalhes relativas & sua implementagao com a utilizacao de uma linguagem e ferramenta de programacae. Como referimos na pagina anterior, um algoritmo é uma sequéncia finita e logi- camente ordenada de accées para se che- gar a solugao de um problema Um algoritmo tem de consistir num numero finito de accdes e essas accoes tem de estar ordenadas segundo uma certa légica ~ com vista a solucao adequada do problema. Além disso, a definicdo das accées tem de ser clara e precisa, sem ambiguidades; isto quer dizer que um algoritmo nao pode estar sujeito a diferentes interpretaces (como, por vezes, acontece na nossa linguagem comum). Se estas caracteristicas se verificarem, pode- mos dizer que um algoritmo correctamente formulado permite-nos chegar sempre aos mesmos resultados, desde que os dados ou condicées de partida sejam os mesmos A algoritmia, ou seja, a formulacao de algo ritmos, permite-nos separar duas fases distin- tas na resolucao do problema 11 =a fase da concepsao ou formulacéo do ‘algoritmo; ~ a fase da implementagao do algoritmo Enuma linguagem ou ferramenta de progra- Emacdo. Desta forma, ¢ posstvel conceber algoritmos ¢ deixar para mais tarde as questdes relaciona- das com a sua implementacao numa determi- nada linguagem de programacao. Um mesmo algoritmo pode servir de base a codificagao de um programa em diferentes linguagens e ambientes de programacao ou com diferentes técnicas de implementacao. Podemos ter algoritmos tao diversificados como 0s seguintes exemplos: +a substituicao de uma lampada fundida por uma em bom estado; + a substituicdo de um pneu num automével, +a resolucdo de uma operacdo de matema- tea; * acriacao de uma base de dados; etc Em qualquer destes exemplos podemos defi- nir ou estabelecer uma sequéncia ordenada de operacées ou procedimentos que conduzi- rao ao fim em vista — um algoritmo -, ou seja, um esquema para a resolucso do pro- blema. 13 % Algoritmos em linguagem informal, pseudocédigo e fluxogramas ‘egio 1 E : Condigéo Fise Cantgto F289, Verdadeico ‘ego? (_ Aecaox ‘eqao¥ Blaco de = [iereer eqaoz poo Fit. Representacao esquemética de algorimos como sequéncias de acces: 3 esquerds, uma seqk acedes las acces sequem um s6 caminho possivel) direita, dois exemplos de seq ncia linear de Uineares (as acg6es a realizar padem seguir caminhes diferenciados, consoante determinadas condicées Consideremos os seguintes algoritmos que traduzem formas de resolucao de problemas da nossa vida quotidiana, A) Substituir uma lampada fundida 1. Preparar uma lémpada nova 2. Retirar a lampada fundida 3. Colocar a lampada nova. 4, Ligar o interruptor. ®) Substituir um pneu furado 1. Preparar o pneu sobresselente. 2. Colocar 0 macaco na posicao adequada 3. Levantar 0 carro. 4, Retirar 0 pneu furado. 5. Colocar 0 pneu sobresselente Sequéncias de operac6es como estas podem ser consideradas algoritmos formulados em linguagem informal. Dizemos linguagem informal porque utilizamos a nossa lingua- gem natural e ndo uma linguagem conven- ional com maior rigor. 0s algoritmos pensados para programas de computador exigern uma formulacao com maior rigor € para isso existe linguagens formais. As linguagens de programacao, tal como as formas de escrita convencionais, utilizadas na Matematica ou em outras cién- das, podem considerar-se linguagens formais. Em algoritmia, para além das linguagens de programacao, sao usadas outras linguagens e formas de representacao das instrucdes que indicamos nos algoritmos, designadamente: + pseudocédigo; + fluxogramas; * outros tipos de diagramas. Consideremos o seguinte algoritmo (em lin- guagem informal} Calcular a drea de um rectangulo 1. Obter os valores do comprimento e da largura 2. Calcular: drea = comprimento x largura 3. Apresentar o valor da érea. PROGRAMAS E ALSORITHOS. Simbolo de inicio ude fim Entrada ou saida de dados Processamento interno imbolo de decieao Lina de fluxo Conector o| OOOO = ‘Area | Leitura ‘Area Comp * Larg; ——— | Atribuigdo i Subtraceio Escrever (Areal; —— | Escrita i Multiplicagao Eat i Divisio. Fo.19. eae ‘Algoritmo com uma declaragao de variaveis ¢ trés exemplos de basic Hleitura, atribuicdo e escrita Consideremos de novo o algoritmo apresen- tado na pagina 15 e aqui também reproduzido nna figura 1.9. Pretende-se calcular e escrever a area de um rectangulo apés a obtencSo dos valores do comprimento e largura Neste algoritmo muito simples podemos ver exemplos das trés operagdes basicas referi- das na pagina anterior: Operacées: Instrugées: 1) Ieitura ou input 2) atribuigao 3) escrita ou output Ler (Comp, Larg) ‘Area < Comp * Larg ; Escrever (Area) ; Em cada uma dessas instrugdes sao usadas variaveis: Varidveis: Correspondéncias: Comp Comprimento larg Largura Area Area Essas mesmas variaveis so declaradas logo no comeco do algoritmo (no seu cabecalho), ste caso com a seguinte declaragao Varidveis Area, Comp, Larg : Inteiros ; Operadores aritméticos, Estes ‘operadores traduzem operacies de cAlculos aritméticos que os sistemas Informaticos podem realizar e que so habitualmente indicadas em algoritmos para programas de computador. Com esta declaragao anunciamos que vamos utilizar trés variéveis com dados numéricos do tipo inteiro, ‘As variaveis utilizadas num algoritmo ou pro- grama sdo representadas por palavras, letras ‘ou abreviaturas escolhidas pelo programador. € recomendavel que os nomes escolhidos sejam facilmente identificaveis por quem ler © algoritmo ou o programa. Na instrugdo de atribuigéo aqui apresen- tada (Area — Comp * Larg), ¢ efectuado 0 Célculo da area do rectangulo. Para que esse célculo seja efectuado, ¢ utilizado 0 opera- dor de multiplicar (o asterisco *). 0s operadores aritméticos correspondentes 5 operacdes de adigao e subtracao so uti- lizados em algoritmia e programacao da mesma forma com que sao conhecidos na matematica (+ e -). J8 05 operadores da multiplicacao e da divi- S40 costumam ser representados por outros caracteres: * para a multiplicacao e / para a divisdo (ver tabela da figura 1.10) Nota: Estes operadores (e outros que verermos apor- ‘tunamente) so utilizados dentro de express6es; por isso, voltaremos a falar deles quando as abordarmos. 9 20 Tipos de dados, constantes e variaveis Em Pascal Eee ol Principais simples Linguagem c Char’ ; "| = Tipos de dados simples ou primitivos A grande maioria das operacdes que podem ser realizadas nos sistemas informaticos é, na realidade, efectuada sobre dados. Isto remete-nos para a questao — igualmente fun- damental — de sabermos quais os tipos de dados com que pretendemos ou podemos trabalhar. Os principais tipos de dados utilizados em algoritmia e programacao sao 0s seguintes: » caracteres, cadeias de caracteres ou texto; ‘= niimeros (podendo estes ser de diferentes subtipos); + dados do tipo légico ou boolean. Cadeias de caracteres. H4 dados que sdo do tipo texto ou cadeias de caracteres (strings), or exemplo: “Hoje ¢ dia 30”. Para este tipo de dados também se utiliza, por vezes, a designacéo dados alfanuméricos - 0 que quer dizer que sdo dados em que entram caracteres alfabéticos ou letras e onde podem entrar também algarismos (caracteres numé- ricos), porém, sem que estes ultimos sejam tratados como numeros, mas como simples caracteres, como 0s outros. ingle Double 6.1.11. {nao tem} Principais tipos de dados primitives considerados em relag3o aos sistemas informatices. Dados numéricos. Uma outra familia de tipos de dados é constituida pelos diferentes tipos numéricos. principal divisdo dos tipos de dados numéricos ¢ a que os subdivide em: + inteiros ~ numeros inteiros (negativos, zero e Positivos); por exemplo: 10; -10; 2000; etc.; + reais ~ numeros reais (em que figuram par- tes decimais); por exemplo: 1.5; -1.5; 0.12! etc. Nota: Nas linguagens de programacao ¢ utlizado 0 onto como sinal decimal; por essa razéo, também se utiliza este sinal em notacéo algoritmica Dados légicos ou booleanos. Um outro tipo de dados que também é utilzado com muita fre- ‘quéncia em algoritmia e programacao ¢ o tipo légico ou também chamado booleano. Este tipo de dados caracteriza-se por admitir de cada vez apenas um entre dois resultados pos- siveis: verdadeiro (true) ou falso (false). Estes so 0s tipos de dados simples ou tipos primitivos. A partir destes tipos de dados pri- mitivos podem constituir-se outros tipos de dados mais complexos: dados estruturados (que serao abordados nos médulos 5 ¢ 6). Constantes e variaveis constante @=0.19 Variavet QE— 10 S iG. 1.12. 112. OPERAGDES BASICRS EM ALGORTNOS E PROGRAMAS Meméria RAM Constantes e variaveis. Uma constante é um dado que permanece inalterado no algoritmo ou programa. Uma varidvel, como o préprio nome indica, pode variar no seu valor. Num algoritmo ou programa, constantes @ varidvels so designadas por identificadores [nomes}; na meméria do sistema informiatico, as variéveis, correspondem a determinado endereco da RAM onde se podem quardar valores, Em algoritmos e programas de computador 0s dados podem surgir sob a forma de cons- tantes ou de variaveis. Entende-se por constante um dado que perma- nece inalteravel do inicio ao fim do algoritmo. Pelo contrério, uma varidvel é um dado que pode softer alteracoes de valor ao longo do algoritmo. As constantes podem surgir: sob forma directa, ou seja, valores numé- ricos, alfanuméricos ou outros, expressos literalmente pelo que sao; por exemplo: 0.75; “Janeiro”; etc.; ~sob a forma de identificadores, ou seja, nomes que identificam ou representa determinados dados ou valores; por exemplo: Constante Taxa = 0.17 ; define uma constante através do nome Taxa e com o valor de 0.17; Constante Nome = “Ana Matias” ; j — define uma constante com o identificador Nome e 8 qual se associa a string “Ana Matias”. Os dados do tipo string, cadeias de caracteres ou alfanuméricos costumam ser incluidos dentro de aspas ou apéstrofes; isto evita que possa haver confusso entre identificadores strings. Um identificador é um nome que é asso- ciado (pelo programador) a um dado ou a outro tipo de elemento em programacao. As varidveis, por sua vez, surgem sempre designadas através de identificadores, ou seja, nomes que as identificam. Em termos de meméria RAM, 0 nome com que uma varivel é identificada fica associado ‘a um determinado endereco ou posicao de meméria (ver figura 1.12). Para além disso, cada variével surge associada a um determinado tipo de dados (inteiro, real, string, booleano, etc.). Por exemplo: Variavel Idade : Inteir =define uma variavel com 0 nome Idade e sendo do tipo inteiro - 0 que obriga a que 05 valores que Ihe sejam atribuidos tenham de ser desse mesmo tipo, 2 2 Instrucées de atribuicao Custo € 10; Prex € Custo * 1.15; Nome € “Ana Matias"; ©)—Expressao FIG. 1.13. Exemplos de instrucdes ou eperacées de atribuiga0 de valores a varidveis em pseudocédigo. Os nomes. dac varidvels aparecem a esquerda do sinal ireita deste sinal surgem os valores a atribuir a Como vimos, uma variével ¢ associada a um determinado endereco de meméria RAM. € através desse endereco que o processador vai poder efectuar as operacdes de leitura ou de escrita de valores nessa mesma varidvel. Tam- bém vimos que cada varidvel é definida como sendo de um determinado tipo de dados. Em termos computacionais isso vai traduzir-se no seguinte: = para cada varidvel é guardado um certo espaco ou quantidade de bytes, de acordo com 0 tipo de dados; por exemplo: para uma varidvel definida como inteiro podem ser reservados dois bytes; como os dados de cada varidvel sao trata- dos como sendo de determinado tipo, as operagdes que podem ser efectuadas com esses dados estao limitadas as operacoes previstas para esse mesmo tipo de dados; por exemplo: se definirmos uma variével como sendo do tipo inteiro, ndo poderemos utiizé-la com valores que contenham casas decimais. Quando ¢ atribuido um valor a uma varidvel, esse valor é guardado em RAM no endereco que foi associado a essa varivel e ai perma- nece até que Ihe seja atribuido um outro valor. 0.1.16, Diagrama sintactico da instrugde de atribuigo em pseudocédigo. Do lado esquerdo do sinal ¢ escreve-se o nome ou identificador da varidvel e do lade direito desse mesmo sinal escreve- se 0 valor ou 8 expressao a atribuir a varidvel. A instrugde termina com um sinal de ponte e virgula (i). Chamam-se instruges de atribuigéo as ‘operacées internas de um programa ou algo- ritmo que atribuem valores as variveis. Por exemplo: 1) | Nome < “Ana Matias” ; indica que a variavel Nome recebe a string ou cadeia de caracteres "Ana Matias”; 2 Custo — 10; indica que a variavel Custo recebe valor 10; 3) | Prex — Custo * 1.25; indica que a variavel Prex recebe © pro- duto da variével Custo por 1.25. sinal que representa a operagdo de at buicao varia consoante a linguagem de pro- ‘gramacao. Por exemplo: em Basic ou em lit guagem C é utilizado o sinal de igual Pascal ¢ utilizado um sinal composto por dois pontos seguido de igual (=). Em algoritmia costuma usar-se = \guagens Sinal de atribuicao Basic e C = Pascal =oue Algoritmia 112. OPERAGDES BASICRS EM ALGORTNOS E PROGRAMAS Instrucdes de input e output de dados Leitura ow entrada de dados —+/ Ler (Dado) FIO. 1.16. Eserita ou pylons rnomes de varive Diagrama sintéctic representativo da instrugSo de leitura ou entrada de {dados. Depois da palavra LER segue-se, dentro de parénteses, um ou mais, is Ineste Ultimo caso, ullza-se a vrgula como separador! Escrever (Dados) FIG.1.15. Simbolos habitualmente usados em fluxogramas para representar as operacdes de entrada ede saida de dados. Em ambos os casos ulliza-se tum parateleogramo: a] com uma seta antes para indicar uma operagao de entrada; b} com uma seta depots para indicar uma operacao de saida, 0.1.17. Diagrama sintact de dados. Depois parénteses) uma Instrucdes de input ou entrada de dados Um programa de computador ou um algo- ritmo tém de ter em conta a interaccdo com 0 exterior ou as pessoas que podem fornecer os dados com que se vao efectuar as operacées. Uma operacao de input, entrada ou leitura de dados por parte de um programa ou em relacdo a um algoritmo é feita, usualmente, através de instrucées que recorrem a varidveis. Em algoritmia podemos representar as opera- Goes de input ou entrada de dados por pala- vras como Ler ou Obter (ou Read, em inglés). Vejamos os seguintes exemplos: Obter (Nome) ; Ler (Quantia, Total) ; Em ambos os casos pretende-se a entrada de dados para as variaveis indicadas. Na primeira instrucao - Obter (Nome); ~ pre- tende-se obter ou ler a entrada de um dado {por parte do utilizador para a variavel Nome Na segunda instrucdo - Ler (Quantia, Total); pretende-se ler a entrada de dois dados do itilizador para as duas varidveis indicadas. ico representative da instrugao de eserita ou entrada da palavra ESCREVER podem incluir-se [dentro de ‘ou mais expressdes, identificadores, ete Instrucées de output ou saida de dados A saida ou escrita (output) de dados por parte cde um programa ou algoritmo pode ser feita em relacéo a diferentes tipos de cispositives, como: ‘© monitor (ecra), uma impressora, um disco, ete. Este tipo de operagao, em termos de algorit- mos, pode ser representada por palavras como: Escrever, Apresentar, Imprimir, etc (Em inglés e em linguagens de programacdo podemos ter: Write, Print, etc.) Por exemplo: Escrever (“Ola Mundo! ") ; Apresentar ("Total =", T); No segundo exemplo apresentado, temos uma instrugao de escrita en que incluimos 20 mesmo tempo uma string dentro de aspas ("Total = ")e uma variavel (1), dlaro que a string sera escrita tal como é apresentada e, em vez do nome da varidvel (1, serd escrito 0 seu valor. Nota: Por norma, quando se pede para escrever algo dentro de aspas ("..") ou apéstrofes ('.), isso deve ser entendido como texto, string ou cadeia de carac- teres. Por outro lado, quando queremos mandar cescrever o valor contido numa variavel, escrevemos ‘o nome dessa variével (sem utilizar aspas). 23 2 Expressoes aritméticas Expressio aritmética Custe * 0.25 Exempos de wlzngae do Grande parte dos célculos que se pretendem efectuar em algoritmos ou programas de computador é representada por expressdes matematicas. Para que os célculos de uma expresso mate~ matica sejam efectuados num programa de computador, normalmente, € necessario incluir essa expressao: —numa instrugao de atribuicao ou numa instrugao de escrita (output). Por exemplo, para que, num programa, seja calculada uma expressao como a seguinte: Custo * 0.25 IG. Exemplo de uma expressie aritmética e de instrugdes om que ela é incluida. Para que os Clculos de uma expressao aritmética sejam ‘efectuados num programa de computador & necessério incluir essa expresso numa instrugao de atribuigao ou de eserita [output 41) no primeiro caso, a instrugdo Escrever indica apenas o valor da expressdo Custo * 0.25 (supondo, por exemplo, que Custo é 10, seria escrito 2.5); 2) no segundo caso, a instrucao faz escrever uma string (“Lucro ="), seguindo-se o valor a alcular da mesma expressao (Custo * 0.25). A ordem pela qual so efectuadas as opera- ‘GBes aritméticas em instrugdes de programa- Gao obedece aos mesmos principios das pric ridades que vigoram na matematica A ordem de prioridade dos operadores arit- méticos é, em termos genéricos, a seguinte: € 0 seu resultado seja guardado em algum sitio, € necessario que essa expressao seja incluida numa instrugao de atribuigao como, por exemplo: Lucro < Custo * 0.25 ; Neste caso, a variavel Lucro (a posicao de memoria que the esta associada) recebe 0 valor obtido com a realizacao dos célculos indicados na expressao Custo * 0.25. Uma expressao aritmética também pode ser incluida directamente em instrucdes de escrita, Vejamos os seguintes dois exemplos Escrever (Custo * 0.25) ; Escrever ("Lucro = “, Custo * 0.25); 1.° Exponenciagao (sinal 4) 22 Multiplicagao (*) e diviso () 3.° Adicao (+) e subtraccao (-) A utilizagao de parénteses permite alterar a ordem de prioridades referida. Tal como acontece também na matematica, quando existem parénteses numa expresso, a priori- dade das operacoes é transferida para o inte- rior dos parénteses. Consideremos a seguinte expressdo 2*(V+5) ~a prioridade das operacoes ¢ transferida para a operacao indicada dentro dos parén- teses (V + 5). 112. OPERAGDES BASICRS EM ALGORTNOS E PROGRAMAS Expressées com operadores relacionais e légicos Cerner Operador ado NOT | Negagéo aves SSeS AND | Conjunese «| Menor do que OR | Disjungao > | Major do que NoT ‘AND oR <= | Menor ou igual EE iy Sas >= | Motor ou iguat VAs] |SVANIIRVAN Avan) |ORVNTORVT © | biterente ae ae shad cde ell ce aad ek epv pre lLe iy Ly N | inctuido em ESE (ESRI 0.1.49. 0.1.20, Operadores relacionais ou de comparacto. As expresses usadas em algoritmia e pro- gramacao podem ser de dois tipos: '* numéricas ou aritméticas; + booleanas ou logicas. ‘As expressdes numéricas sao aquelas que utilizam apenas operadores aritméticos (+, - *, /), sendo 05 operandos também de tipo numérico (inteiros ou reais) e podendo ser dados directos ou identificadores (constantes ou variaveis); por exemplo: 100 * (1 +0.15) 100 * (custo - desconto) + 1000 Uma expressdo booleana ¢ uma expressdo onde se empregam operadores de compa- ragdo e/ou légicos e se espera obter um resultado légico, ou seja: verdadeiro (true) ou falso (false). Nota: O terma “booleano” deriva do matematico G. Boole, que desenvolveu a Logica Matematica, mais, precisamente, a Légica Bivalente (que também & ‘conhecida por Logica Booleana). Nesta logica opera #-se apenas com dois valores: verdadeira e falso ou 1 Ze 0, Esta logica é um dos pilares em que assenta 0 Huncionamento dos computadores e tem também Barande utiizacao em algoritmia Principais operadores légicos ¢ respectivas tabelas de verdade. Vejamos os seguintes exemplos de expres- s6es booleanas: 1) | Valor > 0 Esta expressao utiliza apenas um operador relacional ou de comparacao (>) e é uma expresso booleana porque 0 seu resultado sera um valor légico “verdadeiro” ou “falso”, conforme a variavel Valor for ou nao maior que 0. 2) | (Nota > }0) AND (Nota <= 20) Esta expresso utiliza operadores relacion: (o= <=) e um operador légico (AND) e por isso também é uma expresso booleana; neste caso, a expressdo assumira o valor “ver- dadeiro” se 0 valor de Nota for maior ou igual a 10, simultaneamente, menor ou igual a 20; portanto, os dois termos ligados pelo operador AND tém de ter simultaneamente o valor “ver- dadeiro”; caso contrario, 0 valor global assu- rmido pela expresso seré "falso”. Nota: Este tipo de expressées é utilizado principal- mente em estruturas de decisao condicional ou em controlo de estruturas de repeticéo ou ciclos (mate ‘ia que sera abordada um pouco mais adiante. 1.3. ALGORITMOS COMO SEQUENCIAS LOGICAS DE ACCOES Fio.1.21. Representago esquemstica de um bloco de uma sequéncia linear de accoos Sequéncias lineares e nao jeares Um algoritmo, como ja vimos, consiste numa sequéncia ordenada de acces (ins- trugdes ou operacdes). Uma sequéncia de ins- trugdes pode ser linear ou nao linear. NNa figura 1.21, temos uma representacao em pseudocédigo e fluxograma de uma sequén- cia linear de acces. Sequéncia linear quer dizer que as operacdes sao executadas na ordem exacta em que estao indicadas ~ umas apés as outras, linearmente Para além das sequéncias lineares existem estruturas de ordenacao ldgica das ope- Tages, em que estas ngo tém de ser execu- tadas sempre numa mesma ordem (ver exem- plo da figura 1.22). Na verdade, em algoritmia e programacao, temos a considerar como muito importantes as sequéncias nao lineares de accoes. Estas podem ocorrer por via de: * estruturas de controlo — formas de con- trolar a sequéncia de operacdes através de decisdes condicionais; + instrugées de chamada a rotinas ~ ins- trucdes que passam a ordem de execuc4o do algoritmo principal para subalgoritmos ou subprogramas. Consgso ‘gio io. 1.22. Exemplificagao de uma sequéncia nao linear. Classificacao das estruturas de controlo Num algoritmo ou programa € muitas vezes necessario: 1 = jogar com determinadas condigées, para decidir se se deve executar uma ou outra acco ou acgdes — neste caso, teremos instrugdes ou estruturas de decisdo ou de seleccao; 2~repetir uma série de instrucdes um deter- minado numero de vezes ou enquanto se verificar uma certa condicdo — neste caso, ‘teremos estruturas de repeticao ou ciclos. Assim, as estruturas de controlo das sequén- cias de um algoritmo ou programa podem classificar-se em (ver quadro da figura 1.23): 1 estruturas de decisdo ou seleccao; 2~estruturas de repeti¢ao ou ciclos. Quanto as estruturas de decisdo ou seleccio, podemos ter dois subtipos: 1.1 ~ estruturas de decisao com base numa condigao ~ “SE... ENTAO... SENAO...” (IF... THEN... ELSE...); 1.2 ~ estruturas de seleccao ou escolha mul- tipla ~ SELECCIONAR... CASO... (SELECT... CASE...) 3, ALGORITMOS COMO SEOUENCIAS LOGCAS DE ACKOES Estruturas de controle } ao FIG.1.23. Classificacao das principais estruturas de controto usadas em algoritmia e programacéo. A estrutura de decisio com base numa condigao ~ “SE... ENTAO... SENAO...” (IF... THEN... ELSE...) ~ existe em todas as lingua- gens de programacao (e também noutros tipos de software, como, por exemplo, em folhas de calculo). Esta estrutura permite, com base numa condicéo colocada a seguir a SE (IF), decidir sobre a execucao ou nao de determinada acco ou optar entre duas alter- nativas colocadas a seguir a ENTAO (THEN) e a SENAO (ELSE), sendo esta ultima opcional. Aestrutura de seleccdo ou escolha multi pla - SELECCIONAR CASO... (SELECT.. CASE...) - permite optar, mediante uma variavel que desempenha a funcao de selec- tor, entre um certo nimero de alternativas (casos) possiveis. Quanto as estruturas de repeticao - tam- bém conhecidas por ciclos -, podemos ter dois tipos principais 2 ~ciclos controlados por uma condicéo; 2~ ciclos controlados por um contador. Nos ciclos controlados por uma condigao, as instrugbes englobadas no ciclo serao exe- cutadas um numero indeterminado de vezes, dependendo da condicao de controle (uma ‘expresséo ou varidvel booleana); nestes casos, © ciclo pode repetir-se de duas formas posst- veis: —enquanto a condicao de controlo se man- tiver com valor de verdade; que a condicao de controlo passe a ter um valor de verdade Nos ciclos controlados por um contador, a execucao da instrucao ou instrucées engloba- das nessa estrutura de repeticao é controlada por uma varivel, chamada varidvel de con- trolo ou contador. Esta variavel parte de um determinado valor inicial e vai assumindo valores sucessivos até atingir um valor final que determina o fim do ciclo, desempenhando assim a funcao de contador ~ visto que conta o nlimero de vezes que o ciclo deve ser executado. 27 28 Estruturas de decisdo Procurar pneu sobresselente Se [Pheu sobresselente ests em bom estado) Entao Preparar 0 macaco; Tiraro pneu furado; Colocar o pneu sobresselente Senao Mandar vir ajuda Fimse Algoritmo em fluxograma Procurar preu sobresselente Prev sobresselente ‘om bom estado? Sim Nio Preparar 0 macaco Mandar vie Tiar 0 pneu furad jude CColocaro pneu sobresselente O FI0.1.24, Exemplo de um algoritmo estruturado com “SE... ENTAO... SENAO.. Aesquerda temos 0 algoritmo em Linguagem informal {ou préxima de pseudocédigol e direita o mesmo algoritme representado em fluxograma. A estrutura de decisao com base numa condi- cao costuma ser indicada como estrutura SE (IF) ou entao formulada como: “SE... ENTAO... SENAO..." (IF... THEN... ELSE...) Esta estrutura permite decidir entre executar ou nao uma determinada acco ou seleccio- nar entre duas alternativas possiveis. A decisao € tomada com base numa condi- 80 ou expresso légica (ou booleana). Esta condic3o ou expressao légica surge imediata- mente a seguir a palavra SE (IF). Como ja sabemos, as expressdes légicas ou booleanas s8o aquelas cujo resultado pode ser apenas um entre dois possiveis: verda- deiro (V) ou falso () Assim, se a condicao ou expresso assume valor de Verdadeiro (V), sera executada a acco ou bloco de accbes indicadas a sequir 8 palavra ENTAO (THEN). Se essa mesma condicéo ou expressao assu- mir 0 valor de Falso (F), entao poderao ocor- rer duas situacoes: —€ executada a accao ou bloco de accoes que so indicadas apés a palavra SENAO (ELSE); no é feito mais nada dentro da estrutura de decisao e passa-se & proxima accao apos essa estrutura Isto € assim porque a parte associada & pala- vra SENAO é opcional - pode ser incluida ou omitida na escrita desta estrutura As figuras 1.25, 1.26 e 1.27 representam a estrutura de decisdo condicional ("SE... ENTAO... SENAO...") de diferentes formas; a— em pseudocddigo (figura 1.25); bem fluxograma (figura 1.26); ¢—em diagrama sintactico (figura 1.27). Se Entao [Sendo ] FimSe Fi0.1.25. Estrutura “SE... ENTAO... SENAO...” representada em pseudocédigo. 3, ALGORITMOS COMO SEOUENCIAS LOGCAS DE ACKOES | sr Falso Condica Verdadeira ENTAD SENAO Bleco de Bloco de instrugSes instrugses. | FIG. 1.26. Estrutura “SE, fluxograma, ENTAO... SENAO...” representeda em Expresso Bloco de © Aiea Bloco de acces | FIG.1.27. Diagrama sintdctico da estrutura “SE... ENTAO... Em todas as representacdes (das figuras 1.25, 1.26 e 1.27) pode ver-se que a parte da estrutura de decisio que esta associada & palavra SENAO é opcional Na representacéo em pseudocédigo, a parte associada a SENAO aparece incluida dentro de parénteses rectos - 0 que designa qualquer coisa que deve ser encarado como opcional Na representacao em fluxograma, temos uma seta que parte da condicao (quando esta assume valor Falso) e que vai dar ao final da estrutura sem indicar qualquer acco ~ por- ‘tanto, pode nao ser executada nenhuma accao no caso de a condigdo de controlo ser falsa. No diagrama sintactico, temos, apés o pri- Imeiro bloco de accées, duas continuacdes spossiveis: uma que aponta o fim da estrutura (FIMSE); —outra que conduz a parte SENAO, onde esta indicado um outro bloco de acces. 0 facto de a estrutura de decisao condicional ter uma parte opcional (a parte associada a0 temo SENAO) traduz-se na existéncia de duas variantes desta estrutura: a) decisdo simples (que nao contém a parte SENAO) — neste caso, s6 ¢ indicado um bloco de accdes € este 56 sera executado se a con- dicao de controlo for verdadeira; senao, nao @ executada nenhuma accdo e passa-se a0 fim da estrutura (FIMSE); b) decisao composta (em que é indicada a parte SENAO) — neste caso, se a condicao de controlo for falsa, ha um outro bloco de acces que deverd ser executado antes de se atingir o fim da estrutura, 29 30 Exemplos de aplicacao de estruturas de decisao Variaveis Nota1, Nota2 : Inteiros ; Inicio Escrever ['Qual a nota do 1° exame?’); Ler (Notat); Se [Notal >= 10] Entao Escrever {“Aprovado’): FimSe Escrever ["Qual a nota do 2° exame?"|; Flo.1.28, Exempla de um algoritmo - em pseudocédigo & fluxograma - que utiliza a variante mais simples da estrutura de dacisa0 “Se... Entao..."[sern “Sendo... Varidveis Nota, Nota2: Inteiros ; Inicio Escrever ["Qual a nota do 1° exame?"); Ler (Notat}; Se [Notal >= 10] Entdo Escrever {"Aprovado’l: Senao Escrever {"Reprovado"); Fimse 129. Exemplo de um algoritma - em pseudocédigo & fluxograma - que utiliza a variante completa da estrutura de dacisao “Se... Entao... Senao.. Na figura 1.28, temos um exemplo de um algo- ritmo que utiliza a variante mais simples da estrutura de decisdo “Se... Entao...” ~ faltando, neste caso, a parte relativa ao “Sendo...” ‘Apes a introducao de um valor para a variével, Notal, surge a estrutura de decisao assim: Se (Nota1 >= 10) Entao Escrever ("Aprovad A condicao ou expresso logica (Notal >= 10) pode assumir: = valor Verdadeiro (V) ~ caso em que € exe- cutada a accao indicada por: Escrever (“Aprovado"); Ezerover Qual 91 Nota?) Ler tNotath Ezcrever "Qual 1 Nota") Ler {Nota - valor Falso (F) — caso em que nao se executa nenhuma accao dentro da estrutura e se pas- sara ao que vier a seguir (depois de FimSe). Na figura 1.29, temos um exemplo da variante da estrutura de decisdo completa com “Se... Entao.,.Sendo...". Neste caso, se acondicao (Nota >= 10) assumir: -valor Verdadeiro (V) ~ continua a ser exe- cutada a accao indicada por: Escrever ("Apro- vado"); = valor Falso (F) ~ sera executada uma outra acco, indicada por: Sendo Escrever ("Reprovado"). Varidveis Nota, Nota2: Inteiros ; Inicio Escrever ("Qual a nota do 1° exame?"); Ler (Notatl; Se [Notai >= 0) E (Notat <= 20] Entéo Se (Nota1 >= 10] Entéo Escrever {"Aprovado"); Sendo Escrever ("Reprovado’); FimSe Sendo Escrever {Nota invalida."); FimSe 0bs.: Qualquer um dos algoritmos na pagina anterior presenta um pequeno problema se for introduzido para a variével Notal um valor superior a 20, este valor serd aceite como nota valida, sendo executada a acco: Escrever (“ Aprovado"). No segundo algoritmo, se for introduzido um valor inferior a zero, também é aceite e, neste caso, execu: tada a accdo: Escrever ("Reprovado") Em algoritmia e programacéo surgem muitas vezes, situacoes em que pretendemos controlar os valores introduzidos de mado a evitar valores que considera- ‘mos invalidos ou impréprios. Na figura 1.30, ¢ apresentada uma nova ver~ sao do algoritmo anterior em que se procura rectificar a falha acima referida, Nesta versao, surge-nos uma primeira estrutura SE com 10) Se (Notat >= 0) E (Notat <= Neste caso, estamos perante uma condicéo ou expressdo légica que podemos considerar composta por duas partes unidas pelo opera- dor Iégico E (AND). Isto remete-nos para a necessidade de conhecermos com precisio. as tabelas de verdade do operador légico E ou AND (aplicado a estas expressdes); © valor l6gico global da expressao. 3, ALGORITMOS COMO SEOUENCIAS LOGCAS DE ACKOES Fie, 1.20, Algoritmo com uma estrutura “Se... Entlo... Sendo...” {que contém dentro de si uma outra estrutura deste tipo. As linhas a vermetho indicam de onde a onde vai cada uma dessas estruturas, v F F F v F F F F 131. Tabela de verdade para encontrar o valor légico da ‘expressio (Notal >= 0] E(Notal <= 20] Na figura 1.31, vemos como interpretar a expressao (Nota >= 0) E (Nota <= 20). E claro que, com a pratica, a avaliacdo deste tipo de expressdes deve ser efectuada men- talmente sem grandes dificuldades. 0 algoritmo da figura 1.30 coloca-nos tam- bem uma outra situacao: dentro da primeira estrutura “Se... Ent&o... Sendo...”, surge-nos uma outra estrutura deste tipo completa- mente dentro da primeira. Esta situacao esté posta em realce através de duas linhas a vermelho que indicam cada uma dessas duas estruturas. As indentacoes ‘ou espacos deixados no inicio dos paragrafos também se destinam a ajudar a leitura das referidas estruturas. A segunda estrutura “Se... Entdo... Sendo.. esta completamente dentro da parte relativa a “Entao..." da primeira. Isto quer dizer que a segunda estrutura $6 seré tida em conside- racdo se a condicao da primeira estrutura assur 0 valor Verdadeiro (V), ou seja, se se verificar: (Nota! >= 0) E (Nota! <= 20) = como efectivamente pretendiamos, para evitar as notas fora do intervalo de 0 a 20. 31 32 Estruturas de seleccao ou escolha multipla Seleccionar Caso Nota >> [Sexeccionan caso} [Vara em E lista devalores> : : ; [Sendo | FimSeleccionar “SENAO Bloco de vane antral instrugées| Flo. 1.32. Estrutura de selecglo miltipla em pseudecédigo. Diagn FIG. 1.33. rama sintéctico da estrutura de selee¢o miltipla, <> Geer) Gerd) 1 Gers) Geniah Obs. A estrutura de selecc3o pode admi- tir uma opcao “Sendo...” (“Else...") semelhante 3 que surge na estrutura “Se... Entéo... Sendo...". Se, numa estru- tura de seleccdo multipla, for incluida uma clausula “Sendo...", entao as acces loca de instrugies 1 loca de instr. N loco de Bloco de [4 instr 2 rnela indicadas serao executadas apenas no caso de a varidvel ou expresso de selecgao nao assumir nenhum dos valores indicados nos casos considerados ante- riormente. instr 2 FIG. 1.36, Estrutura de seleccdo miltipla em fluxograma Enquanto que as estruturas de decisao sao controladas por condigdes ou expressdes logi- Cas que apenas podem assumir valor V (Ver- dadeiro) ou F (Falso), as estruturas de selec- 40 ou escolha multipla sao controladas or variaveis ou expresses que podem assu- mir uma multiplicidade de valores. A expresso que controla uma estrutura de seleccéo geralmente nao é do tipo légico ~ uma vez que assim s6 poderia assumir dois valores possiveis ~, mas de outros tipos (caracteres ou valores numéricos inteiros) que podem assumir miltiplos valores. Geralmente, utiliza-se uma variavel do tipo inteiro ou caracter. Essa variavel funciona, entao, como selector - determinando a seleccdo da acco a executar de acordo com © valor que assum. ‘As opcoes de acces a considerar numa estru- tura de seleccao séo apresentadas dentro da estrutura com a seguinte forma genérica: : A parte indicada por refere-se ao valor ou valores que queremos indicar em cada um dos casos ou opcées de accoes @ executar. Para cada opcao podemos ter um 56 valor ou diversos; neste ultimo aso, 05 diferentes valores de uma opcdo devem ser separados por virgulas (ver exem- plo da figura 1.35) A parte indicada por refere-se as acces ou operacées a executar no caso de a varidvel (selector) ou expresso de seleccéo assumir 0 valor ou algum dos valores indicados nessa parte da estrutura. i 2 Escrever ("Mau NTT [ALGORITMOSCOMOSEGUENCASLOSCASDEACGES 33 7 Variavel Nota :Inteiro: f Escrever ("Qual a nota numérica?'); Ler (Nota); Seleccionar Caso Nota 01,234 5.6,7,8,9 10, 11, 12, 13 : Escrever ("Suficiente"); 14, 15, 16,17 : Escrever ('Bom’); 18, 19, 20 : Escrever ("Muito Bom") Sendo Escrever {Nota invalida’) FimSeleccionar Fim Escrever ("Mau"l: Escrever ("Mediocre"); FIG. 1.28. Exemplo de um algoritmo que utiliza uma estrutura de seleccio para converter uma nota quantitativa em qualitativa. A direita, 0 mesmo algoritmo em fluxograma Se nie for ‘enhur dos valores Exemplos de aplicacao de estruturas de seleccao miltipla © algoritmo apresentado na figura 1.35 utiliza uma estrutura de selecgao para converter una ‘nota quantitativa numa informacao qualitativa. Depois de ser pedida a introduco de uma nota numérica e de esta ser captada pela variével Nota, inicia-se a estrutura de seleccdo com essa ‘mesma varidvel a funcionar como selector: Seleccionar Caso Nota Em seguida, e até ao final da estrutura, sao apresentados 0s varios valores que a varidvel Nota pode assumir e as correspondentes accées que pretendemos que sejam executa- das em cada caso. Neste exemplo, temos, para cada caso, uma lista de valores possiveis; por exemplo, no pri- meiro caso, temos 0s valores: 0,1,2,3,4 Para estes valores esta prevista a accao: Obs.: Uma série de numeros inteiros consecutivos do precisa de ser apresentada com tados os seus ‘elementos e pode ser representada apenas pela indi- cacao do primeiro e do ultimo separados por dois pontos (.); por exemplo: 0, 1, 2, 3, 4 pode ser subs- tituido por 0..4 Em seguida, surgem os outros casos que pre- tendemos considerar, nomeadamente: notas de 5 a 9 — para escrever “Mediocre”; notas de 10 a 13 para escrever “Suficiente"; notas de 14 a 17 — para escrever “Bom”; notas de 18 a 20 - para escrever “Muito Bom”. No exemplo apresentado, esté também incluida a clausula opcional “Sendo...” na instrucao: Sendo Escrever ("Nota invélida”); Esta instrucdo ser considerada apenas no caso de a variavel Nota nao assumir nenhum dos valores incluidos nas listas anteriores que consti- tuem esta estrutura de seleccdo, ou seja, neste aso, se 0 valor de Nota nao for nenhurn dos valores inteiros compreendidos entre 0 e 20. 36 Estruturas de repeticao controladas por uma condicao Repetir ANE que — loco de Verdadsira FIG.1.26. FIG.1.97. Estrutura de repeticao “Re Estrutura de ropeticao “Repetir.. Até que..” om lem pseudocédigo. fluxograma. REPETIR| Instrucio ‘ave UE, Condicdo ou Expresso Fie. 1.38, Diagrama sintéctico da estrutura “Repetir.. te que. Condicao de controlo no final do ciclo Nesta seccao, iremos abordar as estruturas de repetigao controladas por condic6es ou expresses logicas. Estas estruturas ou ciclos podem apresentar duas variantes principais: a-estrutura de repeticdo com a condigéo de controlo no inicio do ciclo; b-estrutura de repeticao com a condicéo de controlo no final do ciclo. Nas figuras 1.36, 1.37 e 1.38, sao apresenta- das as representacbes formais da estrutura de repeticao com a condigao de controlo no final do ciclo ~ conhecida como *Repe- tir. Até que...”. — em pseudocédigo; — em fluxograma; — em diagrama sintactico. O que as representagoes formais traduzem em relacao 2 estruturas de repeticso deste tipo € 0 seguinte: ~a palavra que indica 0 inicio do ciclo € a palavra "Repetir” (Repeat); —segue-se um conjunto ou bloco de instru- oes que deverd ser executado até que a condigao ou expressao légica — no final da estrutura ~ assuma o valor Verdadeiro (). Como esta condicéo é avaliada somente no final da estrutura, isso implica que as instru- es nela indicadas seréo executadas de certeza, pelo menos, uma vez. Essas mes- mas instrucdes continuarao em execucao — ‘em ciclo - até que essa mesma condicao ou expressao assuma 0 valor de Verdadeiro (V). 3, ALGORITMOS COMO SEOUENCIAS LOSCAS DE ACKOES. Enquanto a a Bloco de rover = _____} rimazer feeeaeetaet ras, ra Elita dereptsbo"Engatn.fane." Poneman xr de reps “nquant smpenutactag rane -(eraunra))—[ eae ontpease | (re) -[ wave | =( FIG. 1.41. Diagrama sintéctico da estrutura “Enquanto... Fazer. Condicao de controlo no inicio do ciclo Nas figuras 1.39, 1.40 e 1.41, so apresentadas as representacoes formais da estrutura de repeticéo com a condicao de controlo no inicio do ciclo ~ conhecida como “Enquanto.. Fazer. — em pseudocédigo; em fluxograma; em diagrama sintactico. © que as representagdes formais traduzern em relacao a estruturas de repeticao deste tipo € 0 seguinte: ~a palavra que indica 0 inicio do ciclo € a palavra "Enquanto” (While); ~segue-se a condigao ou expresso légica que controla a execucao das accées dentro do ciclo; —56 depois da condicao de controlo do ciclo 6 que surgem as acces a executar. Como estas accdes indicadas s6 serao execu- tadas enquanto a condicdo se verificar, pode acontecer algo que ndo acontecia no ciclo com a condigdo no final: pode acontecer que a acc6es indicadas no ciclo nao sejam execu- tadas sequer uma Gnica vez, bastando para isso que a condicdo de controlo seja falsa logo na primeira avaliacao. Temos, entao, a seguinte diferenca funda- mental entre os dois tipos de estruturas de repeticao: =no ciclo "Repetir... Até que...” —em que a condicao é avaliada no final -, temos a cer- teza de que as instruc6es indicadas sero executadas pelo menos uma vez; =no ciclo "Enquanto... Fazer...", pode acontecer que a condicéo ~ que é avaliada logo no inicio do ciclo ~ ndo se verifique e, esse caso, as acc6es indicadas nao sero executadas nenhuma vez. 35 36 Conceitos de iteracao, contador e acumulador Variéveis Contador : Inteiro ; Parcela, Soma : Reai Inicio Soma 0; Contador Repetir Escrever {"Introduza um valor numérico"); Ler (Parcelal ; ‘Soma « Soma + Parcela ; Contador « Contador + 1; ‘Até que (Soma > 1000) Escrever [’Numero de parcelas =", Contador]; Escrever ['Valor da soma =~, Somal ; Escrever ["Média =", Soma / Contador} ; Fim, Vejamos um exemplo de aplicacao de um ciclo “Repetir... Até que...”. No algoritmo apresentado na figura 1.42, pretendemos efectuar uma soma de varias parcelas a intro- duzir consecutivamente pelo utilizador, até que © valor acumulado (somat6rio) seja maior que 1000. No final, serao apresentados os valores das variévei = Contador ~ correspondente ao numero de parcelas introduzidas; = Soma ~ correspondente ao somatério ou valor acumulado das parcelas introduzidas. Com base nos valores dessas duas variaveis, (Soma e Contador) sera calculada e apresen- tada a média dos valores introduzidos (divi- dindo 0 valor de Soma pelo valor de Conta- dor). Este algoritmo, contendo uma estrutura de repeticdo ou ciclo, vai-nos permitir esclarecer os conceitos de iteracao, contador e acu- mulador, que sao tipicos dos ciclos. Coniador €0 : Eaeee lord soma Sol Ezerever (Média =", Soma/Contador] Fo. 1.42. Exemplo de um algoritmo com uma estrutura de repeticao em que so utlizadas variaveis com as fungdes de contador e de acumuladar. Comecemos pelo conceito de iteragao que significa repeticio. Em algoritmia e progra- mago 0 termo iteragao é usado para desi nar cada uma das vezes que as accoes dentro de um ciclo so executadas (repetidas). Um contador — no contexto das estruturas de repeticao - é uma variavel que conta o nimero de iteracées ou repetigées de um ciclo, Analisando © algoritmo apresentado na figura 1.42, vernos uma variavel a que demos o nome de Contador. Antes de entrarmos na estrutura de repeticao atribuimos zero (0) a essa variével Dentro do ciclo, temos a instrucao: Contador Contador + 1 ; Esta instrugo atribui variavel Contador valor que ela tinha anteriormente depois de somado com uma unidade. Assim, esta var vel efectua uma contagem do numero de vvezes que as acces dentro do ciclo so execu- tadas, ou seja, 0 numero de iteragées do ciclo. Cre cr 3, ALGORITMOS COMO SEOUENCIAS LOSCAS DE ACKOES. 12 0 500 0 aes © @ PO ae fo 1100 ees FIG. 143. Representago esquematica da evolugao dos valores das variaveis Contador, Parcela e Soma dentro do ciclo incluido no algoritme apresentado na figura anterior, supondo que os valores introduzidos para a varisvel Parcela foram os apresentados na tabela, Vejamos agora 0 conceito de acumulador. Como ja vimos, no algoritmo existe uma variavel a que chamamos Soma e que se des- tina a efectuar 0 somatério ou valor acu- mulado das parcelas introduzidas. E como é que esse somatério é efectuado? Antes do ciclo, atribuimos zero (0) a variavel Soma. Dentro do ciclo temos a instrucao: Soma «Soma + Parcela ; Nesta instrucao, a varidvel Soma recebe 0 valor que tinha anteriormente depois de adi- cionado com 0 valor que Parcela tiver nesse momento, Como isto se passa dentro de um ciclo, o que realmente acontece & que a variével Soma vai acumulando 0 somatério dos varios valores que forem sendo introduzidos até que o ciclo termine. No final, a variével Soma acumulou 0 soma- storio de todos os valores introduzidos através ida variavel Parcela. a varidvel Soma desempenha aqui o papel de sacumulador Na tabela da figura 1.43, podemos ver uma representacao da evolugdo dos valores das variaveis Contador, Parcela e Soma dentro do ciclo, supondo que os valores introduzidos para a variavel Parcela foram: 500; 400 e 200. A instrucéo Contador < Contador + 1 faz ‘com que a variével Contador passe, na pri- meira iteracao, de 0 para 1; na segunda itera- G40, de 1 para 2; e assim sucessivamente. A instrugdo Soma < Soma + Parcela, por sua vez, faz com que a variavel Soma passe, a primeira iteracao, de 0 para 500 (0 pri- meito valor introduzido para Parcela). Na segunda iteracao, a varidvel Soma con- ‘tém, inicialmente, 0 valor 500. Mas a instru- Bo acima referida faz com que a esse valor seja adicionado o novo valor de Parcela que é 400. Por isso, no final da segunda iteracao, a variavel Soma fica com o valor 900. Na terceira iteragao, a varidvel Soma recebe a soma do seu valor (900) com o terceiro valor de Parcela (200), passando assim para 1100 — (© que faz com que o ciclo termine. 37 38 Estruturas de repeticao com contador automatico Para contador ¢ V_inicial Até V_Finat Fazer FimFazer Flo. 1.44, Estrutura de repetigo com contador automatico em pseudocédigo Contador € Valor iical Q Verdadsiro Bloco de acces t Contador € Contador +1 ————_ FIG. 148. Estrutura de repeticao com contador automatico em fluxograma, Varivet }-©— ers |} xe Expresso vaterFat F) —+( Para) — Gea ¢ L=>_! FIG. 1.46, Diagrama sintactico da estrutura de repetice com contador automatics. Em programacdo e algoritmia nao existem apenas estruturas de repeticao ou ciclos controlados por condicoes, mas também con- ‘ttolados por contadores automaticos, Nas figuras 1.44, 1.45 e 1.46, sao apresentadas as formalzac6es deste tipo de estrutura ou ciclo. Em muitas linuagens de programacao este tipo de ciclo costuma ser conhecido por ciclo “For”, uma vez que esta a palavra com que se inicia Em portugues pode usar-se a palavra “Para” Segue-se a indicacdo da variavel que ird desempenhar o papel de contador ou varia- vel de controlo do ciclo. Nas formalizacoes das figuras acima apresentadas, este tipo de variavel surge designado por Contador. A varidvel Contador - variavel de controlo ou contador ~ recebe um valor le, ao longo da execucao do ciclo, vai sendo incre- mentada automaticamente até atingir um determinado valor final. Isto 6 indicado no proprio cabecalho do ciclo Para Contador — V_inicial Até V_final Neste caso, a variavel Contador nao necessita de ser incrementada com uma instrucéo como: Contador < Contador + 1; Na verdade, isso é feito de forma automatica, pois faz parte da propria estrutura do ciclo. Quando se atinge a ultima instrucao indicada no ciclo, a incrementacao da varidvel de con- trolo do ciclo € feita automaticamente e volta-se 0 cabecalho do ciclo, para comparar o valor da variével de controle com o valor indicado em \V_final. € como se fosse avaliada a condicao: Contador inal Enquanto a variavel de controlo mantiver um valor inferior ou igual ao valor de V_final, © ciclo continua em execucao. Quando o valor da variavel de controlo assumir um valor superior ao valor de V_final, 0 ciclo termina Variéveis Conta, PTotal, Jogada Int i PTotal 0; Para Conta = 1 Até5 Fazer LancarDado ; Ler Uogadal ; PTotal « PTotal + Jogada ; FimFazer Escrever ("Total de pontos =", PTotall ; Fim FI0.1.47. Exemplo de um algoritmo em pseudocédigo e em fluxograma que representa uma estrutura de repeticlo (ou cielo} controlada por um contador automatico, Para exemplificar um ciclo com contador automatico vamos supor a seguinte situacao: Pretendemos escrever um algoritmo que simule o langamento de um dado num total de 5 vezes; partimos de um total de pontos de 0 (variavel PTotal) e queremos que 0 algo- ritmo simplesmente nos calcule o total de pontos obtidos no final dos 5 lancamentos do dado, somando os pontos que forem obtidos em cada lancamento (variavel Jogada). 0 algoritmo é apresentado na figura 1.47 € a sua parte fundamental comeca com: 3, ALGORITMOS COMO SEOUENCIAS LOSCAS DE ACKOES. + Conta € 1 Verdadeiro Langer dado PTotal € PTotal + Jogada + Conta € Conta + 1 Escrever Total de pontos®; PTotal De cada vez que é executada a ultima instru- ¢40 do ciclo, a variével Conta é incrementada automaticamente em uma unidade, Em seguida, volta-se ao cabecalho do ciclo para avaliar se o contador ainda nao ultrapas- sou o valor final (neste caso, avalia se a varié- vel Conta é menor ou igual a 5: Conta ). Enquanto esta condicao se verificar, 0 ciclo continua. Quando deixar de se verificar (ou seja: Conta > 5), 0 ciclo termina, Dentro do ciclo, a instrugao: Para Conta <1 Até 5 PTotal — PTotal + Jogada ; Esta linha de pseudocédigo é o cabecalho de um ciclo com contador automatico. Neste caso, Conta desempenha a funcdo de conta- dor. Este cabecalho diz-nos que 2 variavel Conta comeca com o valor 1 e progride até 5. Assim, através da leitura do cabecalho do ciclo, ficamos a saber que 0 bloco de acc6es entre Fazer e FimFazer) ira ser executado 5 evezes. vai-nos permitir efectuar 0 somatério dos pontos obtidos ao longo dos 5 lancamentos; a variavel PTotal funciona aqui como um acu- mulador. Obs.: Nao se deve escrever nenhuma instrugdo que altere o valor da varidvel contador (neste caso, Conta) dentro do ciclo, uma vez que isso poderia alterar © numero previsto de iteracoes. 39 40 INTRODUCAO A ALGORITMIA Resumo das instrucées basicas e estruturas de controlo Variavel : Tipo = permite declarar uma ou mais: Varidveis N = Inteiro ; XYZ: Reais ; declara uma variével N como inteiro e trés variaveis IX, Y, Z] Ler Wart [. Var2. J} Instrucao de leitura -permite ler 0 ou 0s valores introduzidos para uma ou mais varidveis. Ler IX.¥, ZI: procede 8 leitura dos valores a introduzir para trés varidveis [X, 2) Escrever (Expr1[, Expr2 .. I] Instrucao de escrita = permite escrever varios tipos de dados ou expressées. Escrever ("Valor ="); procede & escrita da cadeia de caracteres dentro de aspas. seguida pelo valor contido na variavel X Varx < Expressao Instrucdo de atribui ~atribui & variavel indicada do lado esquerdo do operador = © valor contido na expressao indicada do lado direito Xe 100*Y; ~atribui & varidvel X 0 produto resultante de 100 com o valor da variavel ¥ (que deve ser conhecido no momento em que 6 efectuada esta operacao) Se Entao - [Sendo ] Fimse Estruturs ~a partir de uma condi¢ao ou ‘expressio légica, decide entre executar ou n3o um bloco de acces ou decide entre execu- tar um primeiro e um segundo bloco de accdes. SeN >= 10 Entao Escrever "Aprovado") Senao Escrever {"Reprovado") Fimse ~avalia a condicao IN >= 10) e, se esta se verificar. escreve “Aprovado"; senao, escreve “Reprovado’ Seleccionar Caso -walores> : -ealores> : [senao | FimSeleccionar Estrutura de seleccdo milla = selecciona, com base no valor assumida por uma expresso ou variavel [selector], uma entre varias opgdes de acces ‘ou blocas de acces, para cada caso de valores apresentados como possiveis. Seleccionar Caso N 1, 2: Escrever ('Reduzido"); 3: Escrever {"Médio"); 4, 5: Escrever ("Elevado’) FimSeleccionar; parte do valor assumido pela variével N para seleccionar qual das opcdes de acces dever’ ser executada [por exemplo, se Nfor3 é escrito Médio") "13. ALGORITMOS COMO SEOUENCIASLOGICAS DE ACCOES Enquanto Estrutura de cepeticao (ou ciclo} ‘com base numa condicao a ava- Enquanto Saldo >=0 Até que Fazer liar no inicio ere Escrever {"Valor?"l: FimFazer Ler (Valor I; Saldo < Saldo - Valor: FimFazer ~ avalia uma condicdo ou expres~ | - avalia a condicao (Saldo >~ 0}; so légica e, enquanto esta se | se e enquanto esta condicao se verificar, procede 8 execucao | verificar, executa as instrucdes das acgées ou bloco de instru- | indicadas no bloco entre Fazer 8es indicado entre as palavras |e FimFazer. Fazer e FimFazer. Repetir Estrutura de repeticao {ou ciclo) | Repetir ‘com base numa condicao a ava- liar no fim = procede & execucao das acces ‘0u bloco de instrugdes indi- cado entre as palavras Repetir © Até que; em sequida, & ava- liada uma condicao; se esta se verificar,o ciclo termina, sen3o, ‘ciclo continua. Escrever ("Vator?"); Ler (Vator |; Soma «= Soma + Valor; ‘Até que Soma >= 1000 ~ executa as instrugbes indica- das no bloco entre Repetir e Até que; avalia a condigaa (Soma >= 100} e, se esta se verificar. 0 ciclo termina: sendo, continua, Fazer FimFazer Estrutura de repeticio [ou ciclo} controlada por um contador automatico ~ utiliza uma variével (Cont), que comega num valor inicial e & incrementada até um valor final , assim, contrala 0 ndmero de iteragdes ou repeti¢ao das acces ou bloco de instruct do ciclo, Para Contac XAté Z Fazer Escrever ("Valor Ler (Vator |; Soma « Soma + Valor FimFazer ~ a variavel Conta 6 iniciada com © valor X e ira ser incremen- tada automaticamente até a0 valor de Z; enquanto 0 valor de X nao for superior ao de Z, as instrugées indicadas no bloco do ciclo sero executadas repetidamente, 4 7) PROPOSTAS DE TRABALHO E AUTO-AVALIACAO 1. Considera as principais fases que devem. ser tidas em conta no desenvolvimento de um projecto de programacao. 1.1. Enumera essas fases, 1.2. Representa essas fases num diagrama com setas indicando a ordem em que esas fases devem ser consideradas. 1.3. Por que razdes ha necessidade de, em algumas das fases consideradas, incluir ‘selas de retorno para fases anteriores? 2. Considera os diferentes tipos de operado- res usados em algoritmia e programacao. 2.1. Indica como se representam ou escre- ver 0s principais operadores: a-aritméticos: b~relacionais ou comparativos: lagicos, 2.2. Representa as tabelas de verdade dos ‘operadores ldgicos AND e OR. 3 Considera um algoritmo capaz de catcular © apresentar o volume de um tanque paralelepipédico a partir dos valores necessarios para esse efeito [compri- mento, largura e altura) - valores esses que devern ser pedidos ao utilizador. 3.1. Escreve, em linguagem informal, 0s pas: S08 ou principais operacdes do algo. ritmo, 3.2. Escreve 0 algoritmo em pseudocédigo, utilizando as convencées habituais. 3.3. Representa 0 algoritmo através de um fluxograma, utilizando os simbolos habi tuais. a f 4, Considera as seguintes instrucdes de atri- buigdo em pseudocédigo: XreP+aes X2E(P+a)*5 X3CP+5°Q/2 XbO(P+5*Q)/2; Indica quais os valores que s2o atribuidos a cada uma das varidveis indicadas D&I, X2, x3 eXé), supondo que P= 3 5. Considera as seguintes linhas de pseudo- cédigo: Varisveis P, Q : Reais, Inicio Pes ger; Pears acP+s PeP/3 Escrever ("P =", P, Fim 5.1. Indica, passo a passo, quais os valores das variaveis P e Q ao longo da sequén cia de instrucées. Indica, também, como serdo apresentadas os dados na ultima 5.2. Escreve, em substituigao da dltima ins- trugo, uma outra que a] apresente o valor da diferenga entre Q @P. Indica qual é esse valor, tendo em conta as instrugdes anteriores: blatribua a variével P 0 quadrado da soma do seu valor anterior com 0 valor de Q. Indica esse valor, tendo em conta as instrucdes anteriores, 6 Considera o algoritmo em pseudocédigo a seguir apresentado, Variveis N, Q: Inteiros ; Inicio Escrever | “Introduza um némero” |; Ler(N1; QeNtN; SeN<=10 Entao Escrever |"Odobro de”, N, FimSe ; Escrever | “0 quadrado de *.N,” 6", Q): Fim. sN*21; 6.1. Representa o algoritmo em fluxograma 6.2. A partir do pseudocédigo apresentado, indica exemplos de: al uma instrugao de input au entrada: bl uma instruc0 de atribuicao de um valor a uma variavel; ] uma instruco de output ou saida; 4) uma expressao lagica ou booleana 6.3, Indica quais seriam as saidas ou output do algoritmo apresentado para cada um dos seguintes valores introduzidos para N. al 10 100; d-1 64, Altera a estrutura de decisdo existente no algeritme de modo que seja tido em conta o seguinte: ala condicao deve exprimir: N entre 0 linclusivel e 20 (inclusivel;, bla cittima instrucao de escrita do algo- ritmo deve passar para dentro da estrutura de decisdo e ser executada no caso de nao se verificar a sua con. digdo de controle, 7. Con: jera o algoritmo representado no fluxograma da figura 1.48. [erect [rev] (ew) é D Fluxograma com uma estruture de controle, 7.1, Traduz © fluxograma para pseudocédigo. 7.2. Indica 0 output do algoritma no caso de ‘valor introduzido para a varidvel V ser: alo; bli, 4; dl) a; 0-8 7.3. Substitui a condicao ou expresso boo- leana existente no algoritmo por outra {que corresponda a: V menor ou igual 2 0 ‘ou maior ou igual a 5. 7.4. Indica 0 output do algoritmo, depois de modificada a condi¢ao conforme refe- Fido na alinea anterior, para os seguin- tes valores V: alo; bl, <4; dl) at #5. rs) a f 8 Considera 0 algoritmo abaixo apresen- tado, correspondente ao seguinte pro- blema: dado um nivel classificativo ~ 9% Considera o algoritmo representado na figura 1.49 correspondente ao seguinte problema: determinar 0 menor numero niimero inteiro de 1 5, a introduzir pelo _inteiro positivo cujo quadrado é superior a |: ter esse nivel parauma -N- um nmero inteiro introduzido pelo qualitativa, tendo em contaa _—_tilizador. : 1 e 2 correspondem a “Reduzido"; 3 corresponde a “Médio"; 4 e 5 correspondem a “Elevado”. Inicio) ) ae aaa “Introduza um ndimero inteiro" Variaveis N: Inteiro ; Inicio Escrever { “Introduza o nivel numérico 1 Ler IN); Seleccionar Caso N 1,2: Escrever [ “Reduzido” }; 3: Escrever { "Médio" }; 4,5: Escrever | "Elevado" }; Sendo Escrever { “Nivel invalido” } FimSeleccionar Fim. FI6.149. Fluxograma com uma estrutura de controle, 8.1. Representa o algoritmo em fluxograma. 9.1. Converte o fluxograma em pseudocé- 8.2. Indica qual o output do algoritmo para os age, seguintes valores de N. 9.2. Indica como funciona e qual 0 output do algoritmo para cada um dos seguintes valores introduzids para N alN=4; bIN=0; oN 8.3. Converte o algoritmo apresentado para um que faca a mesma coisa, mas utili- zando estruturas de deciséo condicional fem ver da estrutura de selecgo miltipla alt; bl4; lO; d} 100. 93, Reescreve a ou as instrusées do algo- ritmo de mado a impedir que o valor introduzido para N seja um numero negativo. 8.4. Considera a instrucao: Ler (NI. Rees. creve 0 pseudocédigo do algoritmo de modo que s6 se possa passar desta ins: be telcbee lelhattel ba abted 9.4, Escreve um algoritmo semethante ao al um valor maior ou igual a 1 © menor ou igual a5 bl um dos seguintes valores: 1, 2,3, 60u anterior, mas que calcule 0 maior inteiro positive cujo quadrado seja infe. rior ao nimero introduzido INI, tendo este iltimo que ser obrigatoriamente maior que 10. 10.Considera o algoritmo apresentado na figura 1.50. G 2) ‘Qual o seu saldo” |» + [Baldo] Satde > 0 Verdadeiro [“Quantia a levantar?” J» Toa + / Quanta / + Saldo € Saldo - Quantia | “O seu saldo actual é”, Saldo /—» Cm) Fo. 1.50, Fluxograma com ums estrutura de controlo, 10.1. Indica qual o tipo de estrutura de con: tralo existente no algoritmo e qual a expressao que a controle. 10.2. Converte 0 fluxagrama em pseudocé- digo. 10.3. Explica o que aconteceria com o algo: ritmo para as seguintes entradas de valores para Saldo e Quantia al Saldo = 100; Quanti a b)Saldo=0; Quantie «J Saldo= 100; Quanti 00, 10.4. Supondo que era introduzido 100 para Saldo © 50 para Quantia, indica um segundo valor para Quantia que: al termine o ciclo; I continue o ciclo. 10.5. Reformula o algoritmo da figura 1.50 de modo que passe a ter em conta o seguinte: ~ parte-se de um saldo de 100 [nao intro. duzido pelo utilizador, mas incluido directamente no pseudocédigo) = a quantia a levantar é pedida dentro de um ciclo que repete até que 0 valor introduzido (para Quantia} seja supe rior a De inferior a Saldo, 11. Considera um algoritmo que seja capaz de avaliar se um dado numero inteiro e positivo é impar (um numero é impar se 0 resto da sua divisao por 2 for igual a 1). 11.1. Formula o algoritmo em pseudocddigo, 11.2. Reformula 0 algoritmo anterior de modo que ele funcione dentro de uma estrutura de repeticao londe é pedida a introducdo de niimeros para avaliar se cada um deles € ou nao impar] - que termina quando 0 ndmero introduzido for ou negativo, 12. Formula um algoritmo em pseudocédigo que calcule 0 somatério dos nimeros impares situados entre 0 e um outro niimero inteiro positive a fornecer pelo utilizador. 13.Considera um algoritmo que calcule os primeiros M miltiplos de um numero N, em que Me N sao niimeros inteiros posi- tivos a fornecer pelo utilizador. 13.1. Formula o algoritmo em pseudacédigo. 13.2, Reformula o algoritmo anterior de modo que ele calcule também 0 somatério dos primeiros M miltiplos de N. 14, Formula um algoritme em pseudocédigo que peca a introducao de seis valores de temperaturas [podendo ter casas deci- mais) e que seja capaz de calcutar e apre- sentar a amplitude térmica dessas tem- Peraturas, ou seja, a diferenca entre a maxima ea minima. rs ME) Leer Cen-\ LINGUAGEM DE a PU 2.1. INTRODUCAO A UM AMBIENTE DE PROGRAMACAO 2.2. NOGOES BASICAS DE PASCAL 2.3. OPERADORES E FUNCOES PREDEFINIDAS EM PASCAL ca [3 Ree Ee eC ee eee cee Pete eee Sa en econ Ce eo Cece eee ee eee eee) oars Te eee eect Ores Cue Bee Te rere Ce Ree CC ae eee ee ee eee oe Cee ae ered oe 48 2.1. INTRODUCAO A UM AMBIENTE DE PROGRAMACAO Linguagens de programacao e software de traducao Programa X12 s Yor Tava, Cust: Reat; AAA Begin PICT Writein (Venda ane Paks Pee rorto1001 001010111010 [Ae 0101110100101000110101 ene HAROWARE ee Fie.21. Enquanto as linguagens de baixo nivel [Assembly) estao em correspondéncia directa com o cédigo- ‘maquina (linguagem de zeros e uns), as linguagens de alto nivel situam-se mais préximas da nossa compreensao e mais distantes da maquina, MOV AL, OH Div BL. ADD AL, DL Para se escreverem programas de computa- dor foram inventadas linguagens de progra- macao. Uma linguagem de programacdo é um sistema de escrita para enunciar as opera- Ges 2 executar por um computador. As linguagens de programacao costumam ser divididas, numa primeira andlise, em lingua- gens de baixo nivel ¢ linguagens de alto nivel (ver figura 2.1). As linguagens de baixo nivel so as que esto mais proximas do hard ware ou nivel de maquina e as linguagens de alto nivel sa0 as que estao mais préximas da linguagem humana. As linguagens de alto nivel sao assim cha- madas por se elevarem muito acima do nivel da linguagem-méquina ou do hardware e se aproximarem da linguagem humana (inglés). Como exemplos de linguagens de alto nivel muito divulgadas, temos: Pascal, Basic, C, etc. Um programa comeca por ser escrito em texto inteligivel para os programadores. Programa 10101100] jexecutavel| 10111001 Hardware Fio.22. Um programa comeca por ser escrito em texto ou cédigo-fonte e¢ nessa forma que, geralmente, & {guardado em disco. Para que esse programa seja convertido em cédiga-maquina torna-se necesséria a intervene de sofeware espectico ~ software de traducio. Esse texto, antes de ser convertido para cédigo-maquina, costuma ser chamado de programa-fonte ou cédigo-fonte. 0 mesmo programa, depois de convertido ou traduzido em cédigo-maquina, passa a ser designado por programa executavel. Depois de se escrever um programa numa lin- guagem de programacao, para o converter em c6édigo-maquina, executavel pelo com- putador, torna-se necessério utilizar software de tradugao, que pode ser de dois tipos diferentes: +s interpretador ~ que traduz instrucao por instrugéo, a medida que o programa vai sendo lido e executado, ficando assim o programa dependente do software que efectua essa traducio; + compilador ~ que traduz a totalidade das instrucdes de alto nivel para um programa em cédigo-méquina, o qual podera ser exe- cutado independentemente do software que faz a traducao. ‘24. INTRODUGAO AUM ANGIENTE DE PROGRAMACAO, Ambientes de programacao para a linguagem Pascal A linguagem de programacao que iremos aqui adoptar é Pascal. Esta linguagem foi criada em 1970 pelo suico Nikiaus Wirth. 0 nome Pascal foi-Ihe dado ern homenagem ao matematico e filésofo francés Blaise Pascal, que viveu no século XVII e foi o inventor da primeira calculadora mecanica. A linguagem Pascal ¢, sem duvida, uma das mais utilizadas em todo o mundo para intro- ducao & programacao. Existem actualmente diversos ambientes de programacdo para a linguagem Pascal. Um ambiente de programacao ¢ um pacote de software que contém um conjunto de ferra- mentas destinadas a apoiar o desenvolvi- mento de programas, aplicacdes ou projectos de software (ver figuras 2.3 e 2.4). FG.23. ( Free Pascal 6 um ambiente de programacio para a linguagem Pascal, ‘compativel com o Turbo Pascal da Borland. Tem a vantagem de ser gratuito e de existirem versées para os sistemas operatives mais usados (Windows, Unix, Linux et) 0 Turbo Pascal é um ambiente de programa- cao e compilador para a linguagem Pascal criado pela Borland como produto comercial, nna década de 80 do século XX. Actualmente, a Borland jé ndo comercializa este software, ura vez que foi substituido pelo Delphi, ambiente de desenvolvimento de Pascal para Windows. Mas as versbes do Turbo Pascal até 5.5 podem ser obtidas gratuitamente nos sites da Borland, O Free Pascal € um ambiente para Pascal que € compativel com 0 Turbo Pascal da Borland e pode ser obtido gratuitamente, por exempio, em www. freebyte.com/programming/pascal 0 Pascalzim ¢ um outro ambiente de progra- mago gratuito para Pascal criado na Univer- sidade de Brasilia, Esta disponivel no seguinte site: pascalzim.tripod.com FI0.24, (O Pascalzim foi desenvolvido na Universidade de Brasilia a pensar ro ensine de programacéo em Pascal. Tema particularidade interessante de estar apresentado fem portugués. No entanto, tem algumas limitagdes em relagzo 30 Uso da tatalidade da linguagem Pascal, como, por exemplo, ndo permitir trabalhar com ficheiros {be dados de tipos definidos pelo utilizador/programador. 50 F Fie. 25, ambiente de programacao Free Pascal com o quadro “Open a file ‘onde podemos procurar e abrir ficheiros de progremas guardados em disco, FI6.26. ambiente de programacio Pascalzim ‘com o quadro “Abi” ‘onde podemas pracurar e abrir ficheiros de programas guardados em disco. Comecar novos programas, abrir e guardar ficheiros Para comecar um novo programa, basta entrar no ambiente de trabalho e utilizar a rea livre da janela (a azul ou a branco, con- soante 0 ambiente adoptado e a configura- Zo definida). Para abrir ficheiros de programas em disco: a—no Free Pascal — pede-se, no menu “File”, © comando “Open”, que nos abre 0 qua- dro de didlogo “Open a file”, a partir do qual podemos procurar 0 ficheiro que nos interessa (figura 2.5); b—no Pascalzim — pede-se, no menu Arquivo, ‘© comando “Abrir”, que nos abre o quadro de didlogo com o mesmo nome, a partir do qual podemos procurar 0 ficheiro desejado (figura 2.6), Para guardar 0 trabalho corrente num ficheiro em disco: a—no Free Pascal ~ pede-se, no menu “File”, ‘0 comando “Save” ou “Save As..."; b—no Pascalzim — pede-se, no menu Arquivo, o.comando “Salvar” ou “Salvar Como..." ‘As opcées “Save As..." ou “Salvar Como...", como se sabe, permitem-nos guardar 0 traba- tho com um nome diferente ou num outro local. Semon FI6.27. Free Pascal, corn 0 menu “Run”, a partir do qual pedemos fazer correr 0 programa, bem como outras ‘operacdes possiveis, ais como uma verficacao do programa passo a I Ree ar en fern leet herceeeeeeeeeeeeneneneeneeneeeee ge [So eyaye Fie.28, “Compilar”, a partir do qual poderes fazer programa com o comando “Executar’ Verificar, compilar e correr um programa Para verificar se um programa esta bem escrito, de acordo com as regras de sintaxe da lingua- gem e do compilador, podemos fazer um teste de compilacao ou tentar correr 0 programa Para correr um programa a~em Free Pascal ~ pede-se, no menu “Run”, 0 comando “Run” ou usam-se as teclas Ctrl + F9; 'b — em Pascalzim — pede-se, no menu “Com- pilar, o comando “Executar” ou tecla F9, Se 0 programa nao contiver erros, seré execu- tado numa janela propria do ambiente de programacao. Para aceder a esta janela ano Free Pascal (figura 2.7) - podera ser Necessario usar as teclas Alt + F5 ou, no menu “Debug”, 0 comando “User Screen”; b=no Pascalzim (ver figura 2.8) ~ a janela onde sao executados os programas encontra-se ao lado da janela principal do ambiente de programacéo. 52 2.2. NOCOES BASICAS DE PASCAL Estrutura genérica de um programa em Pascal Telus (‘Tatroduee cmprinent Programa Recténgulo; Variéveis Comp, Larg, Area :Inteiros ; Inicio Escrever ["introduza comprimento:" ; Ler (Comp |: Escrever {"introduza largura:" Ler(Larg]: Area Comp * Larg : Escrever ["A area do recténgulo é”, Areal : Weite ('Introduza comprimento: Fie.29, Um programa muito simples para calculo da rea de um rectangulo, no ambiente de programacao Pascalzim, Program Rectang ; Var Comp, Larg, Area : Integer ; Begin Read ( comp) ; Write (‘Introduza largura| Read ( barg ) ; Area : = Comp * Larg ; Write (‘A area do rectangulo 6 ', Area) ; Fim, End. FIG.210. Pseudecddigo e programa em Pascal que pede as medidas dos lades de um rectangulo e calcula a sua rea, As principais partes constitutivas de um programa em Pascal Consideremos 0 programa apresentado nas figuras 2.9 e 2.10. Trata-se de um programa muito simples que visa calcular a area de um rectangulo a partir das medidas do compri- mento e da largura, a introduzir pelo utilizador. Neste programa simples, temos a considerar as seguintes partes constitutivas (em Pascal): ~0 cabecalho — constituido pela palavra Pro- gram, seguida de um identificador ou nome do programa (neste caso: Rectang); =a parte de declaracées (declaration part) constituida pela declaracao de variaveis e, eventualmente, outros elementos necessa- rios a0 programa; a parte de instrucdes (statement part) — 0 bloco principal do programa constituido por um conjunto maior ou menor de instrucdes e eventuais estruturas de controlo. 0bs.: Em programas mais complexos podemos ter ‘outros elementos, como, por exemplo, subprogramas. Programa em Pascal O cabecalho Program Rectang © cabecalho de um programa é simples- mente a indicacéo de um nome para 0 pro- grama, antecedido da palavra Program. Em Turbo Pascal, Free Pascal ou Pascalzim, o cabecalho de um programa € opcional, 0 que significa que pode ser omitido sem que isso afecte 0 programa. Assim, podemos dizer que as duas partes principais de um programa em Pascal so a parte declarativa e a parte operativa Aparte declarativa Var Comp, Larg, Area : Integer ; A palavra Var indica 0 comeco da declaracao de variaveis. Comp, Larg e Area sao identifi cadores de varidvels, ou seja, nomes atribut- dos pelo programador as varidveis que vao ser utilizadas na parte operativa do pro- grama. A palavra Integer designa um tipo de dados, neste caso, nimeros inteiros. Uma regra absolutamente obrigatéria na pro- gramacéo em Pascal ¢ que nao se pode usar ?nomes de varidveis nas instrucdes de um pro- Egrama que nao tenham sido incluidos previa- Emente na parte declarativa. Program Nome do_ programa; Begin clnstruges> End Fr.2.1. Estrutura bisica de um pragrama em Pascal. As duas partes principais de um programa em Pascal sao: a parte declarativa ou de declaracées e a parte ‘operative ou de instrusées. A parte operativa ou de instrucdes A parte das instrugdes do nosso programa (bem como de qualquer programa em Pascal) comeca com a palavra Begin e termina com a palavra End seguida de um ponto final (). 0 tipo e a quantidade de instrucées incluidas nesta parte podem ser maiores ou menores, consoante 0 que pretendemos do programa (e também consoante a forma como o pro- grama for estruturado, pois podem remeter- -se muitas instrugées para subprogramas ou rotinas, evitando assim tornar esta parte muito extensa) No caso do programa apresentado no nosso exemplo, temos apenas os trés tipos mais conhecidos de instrucdes basicas: ~instrugdes de escrita ~ instrugdes comeca- das com a palavra Write (Escrever); ~instrugées de leitura ~ instrugdes comeca- das com a palavra Read (Ler); ~instrugdes de atribuicao ~ instrugdes em que ¢ utilizado 0 operador := (operador de atribuicao); no exemplo, temos apenas a seguinte instrucao: Area := Comp * Larg; a qual atribui a variavel Area 0 produto de Comp por Lara 53 5h Palavras reservadas, identificadores e caracteres especiais Program Rectang ; Var Comp, Larg, Area : Begin Write (‘Introduza comprimento') ; Integer ; Read ( Comp ) ; Write (‘Introduza largura') ; Read ( Larg ) ; Area : = Comp * Larg ; Write (‘A rea do rectangulo € ', Area) ; End. Fio.2.12, Programa em Pascal que pede as medidas do comprimenta e da largura de um rectingulo e calcula a sua area, Palavras reservadas e identificadores predefinidos Continuemos a analisar © programa que cal- cula a area de um rectangulo a partir das medidas do seu comprimento ¢ da sua lar- gura, a introduzir pelo utilizador (reproduzido na figura 2.12). Podemos ver que algumas palavras surgem escritas a negro. Isto acontece por convencéo nossa endo por nenhuma regra da lingua- gem de programacao. Mas esta convengao corresponde a algo que queremos desde jé sublinhar: como qualquer outra linguagem de programacao, a lingua- gem Pascal contém um conjunto de palavras reservadas ou palavras-chave (key words) € as palavras a negro representam essas pala- vras. As palavras reservadas ou palavras-chave sdo termos especificos da linguagem que tém um significado bem determinado e que ndo podem ser usadas senao com esse mesmo significado. € neste aspecto que as palavras reservadas se distinguem dos outros termos da linguagem que podem ser redefinidos e utiizados com significados diferentes. Como exemplos de palavras reservadas temos, no nosso programa, as seguintes Program — que indica o cabecalho do pro- rama, Var — que assinala a declaracao de variaveis. Begin ~ que indica 0 comeco do programa ou de um bloco de instrucoes End ~ que assinala o fim do programa ou de um bloco de instrucées. Uma segunda categoria de palavras proprias da linguagem Pascal utilizadas no nosso programa cde exemplficacéo so os identificadores pre- definidos — que correspondem a termos esco- thidos ao nivel da implementacao da lingua- gem para assumirem determinados significa- dos. Como exemplos de identificadores prede- finidos usados no programa temos: Integer — que define o tipo de dados Inteiro; Write — instrugao de escrita ou output; Read - instrucdo de leitura ou de input. "22, NOGOES BASICAS DE PASCAL Identificadores definidos pelo utilizador/programador evra Fo. 2.13, Letra Diagrama sintéctico da definicao de um identiicador valida ern Pascal. Um identiicador [de uma varidvel, constante ou outro elemental ter de comesar por uma letra, podendo seguir-se outras letras, algarismos ou o underscore (_) Outros tipos de identificadores sao aqueles que © programador (ou utilizador da lingua- gem de programacao) define por si proprio, or exemplo, para nomear ~0 proprio program. — as constantes, as varidveis ou novos tipos de dados; = subprogramas; ~etc No nosso programa, temos os seguintes exemplos de identificadores definidos pelo programador/utilizador =o identificador do programa: Rectang; — trés identificadores de variaveis: Comp, Larg e Area. diagrama da figura 2.13 representa a defi- nigdo de identificadores. A escrita de iden- tificadores obedece a certas regras; por exemplo, um identificador tem de: —comecar por uma letra alfabética (maids- cula ou minuscula); 05 caracteres seguintes podem ser letras, algarismos ou 0 underscore (_); nao podem ser usados espagos nem outros caracteres além dos mencionados, incluindo os caracteres acentuados. Exemplo de identificadores nao validos: Area = por conter um cardcter acentuado (A); 2lado — por comecar por um algarismo; Area do rectangulo = por ser constituido por varias palavras ou conter espacos entre si e também por con- ter caracteres acentuados. Embora haja liberdade de escolher os identifi cadores conforme se quiser — desde que respei- tando as regras mencionadas -, é recomenda- vel utilizar identificadores que sejam sugestivos acerca do que se pretende designar com eles. Por exerplo Altura seré preferivela A ou Alt ladol sera preferivela Lou Lt Em Pascal ndo se faz diferenca entre maitis- clas e minusculas no que diz respeito a iden- tificadores — diz-se que nao ¢ case sensitive. Assim, podem escrever-se os identificadores & mesmo as palavras especificas da linguagem de varias formas. Por exemplo, os termos em cada uma das seguintes linhas sao perfeita- i Exemplo de identificadores validos: mente equivalentes entre si area ladot —lado2 BEGIN Begin begin = area_rectangulo dia_do_mes ano2010 ALTURA Altura altura 55 56 1} Chavetas - para incluir coments rios Program Rectang }%( céleulo da dea de | targ , Are; + Virgulas - separa dor de elementos, delimitadores de argumentos em certas instrucbes, fungoes, ete Read larg) + Area := Comp *arg + - 7 Ponto e virgula — separador de um rectangulo } instrugdes Dois pontos ~ neste caso, para numa série em, Begin indicar o tipo das, declaragies, varidveis mgiicuvas Write ( ' Introduza comprimento * Somes Read ( Comp) ; " Apéstrofes - . delimitadores (1 Parénteses - Write (‘Introduza largura') ; de strings. '= Sinal de atribuicao snd Fie.2.16, ETA EN cone a eee eres + Asterisco - opera dor de multiplicar Um programa em Pascal em que foram colocados em destaque alguns dos caracteres especiais mais, frequentemente utilizados. Caracteres especiais Alguns caracteres que surgem nos programas assumem um significado especfico, tal como as palavras reservadas, ou seja, 0 seu emprego tem sempre um determinado efeito. Alguns desses caracteres tém uma fungao de separadores entre os identificadores ou as instrug6es, outros sao operadores, etc. Seguem-se alguns dos caracteres especificos mais frequentemente usados em Pascal: + (ponto e virgula) — é um dos caracteres utili- zados com maior frequéncia num programa, como indicador de separacao ou demarcacéo entre duas instrucoes; . (virgula) - surge igualmente com frequéncia, com a fungao de separar diferentes elemen- tos dentro de uma lista de identificadores ou argumentos, por exemplo: a separar as varia- veis declaradas na linha comecada por "Var"; a separar dois argumentos diferentes numa instrugao de escrita "Write"; () (parénteses) ~ sao utilizados também com. muita frequéncia, principalmente: a) em pro- cedimentos ou fungées, onde server para englobar 0 ou 0s argumentos a considerar; b) em express6es, onde assumem as fungoes habituais nas expresses matematicas. * (apéstrofe) - usado para delimitar caracteres ou uma string; {} (chavetas) ~ usadas para incluir comenté- rios no programa; 11 (duas barras obliquas) — usadas também. para inserir comentarios num programa; este caso, 0 comentario 56 pode ser escrito na mesma linha apés estes caracteres; (dois pontos e igual) — operador de atribui- a0; +-*/ — operadores aritméticos "22, NOGOES BASICAS DE PASCAL Legibilidade dos programas e inclusao de comentarios 4 var Con tara, Acta © my Program Rectang 1 Var Comp , Lary, Area + Integer + Begin Weite (‘introdusa comprimento') ; Read ( Comp): Weite (VIntroduza laxgura!) ; Read ( Larg) + Area : = Comp * larg : Write ("A area do rectangulo € *, Area) + nd Na escrita de programas em Pascal, desde que se utilizem as regras sintacticas estipula- das, existe uma grande margem de liberdade na distribuicdo do texto pela pagina ou ao longo das linhas do programa — diz-se que, em Pascal, temos um formato livre. No entanto, como é evidente, hd formas de dispor o texto que beneficiam a sua legibili dade © outras que a prejudicam. Vejam-se os exemplos apresentados na figura 2.16 £ habitual utilizarem-se indentacdes no texto {de um programa (deslocamentos dos pardara- Jfos em relagiio a margem), de forma a pr em Edestaque determinadas partes do mesmo. Isto pode ajudar muito a legibilidade do programa. FI6.2.15. Um programa em Pascal em que se utlizam indentacdes do texto e ‘comentérios para tornar o programa mais facil de compreender. Program Rectang : Var Comp , targ , Area: Begin Integer : Write (‘Introduza comprimento') ; ‘Road ( Comp) ; Write ('Introduza largura') ; Read (Larg) ; Area: = Comp * larg ; Write (1A area do rect&ngulo é', Area) ; na FI0.2.16. (O mesmo programa em Pascal apresentado com diferentes dicposicdes do texto - em que a primeira favorece muito mais @ sua leitura do que a segunda, Outra questao importante é a insergo de comentarios explicativos no texto do programa. Em Pascal os comentarios sao inseridos entre cchavetas {...} ou apds duas barras obliquas // bs: Pode pensar-se que os comentarios s8o desne- ‘essirios para quem conheca suficientemente bem a linguager; porém, esses comentarios podem aju- dar outras pessoas que venham a trabalhar no mesmo programa ou até 0 préprio autor, quando, passado algum tempo, volar a esse programa, com a intengdo de the introduziralguma alteracao. © tempo que eventualmente se perde na escita de comentérios explcativos pode bem ser compensado ‘em ganhos na recuperacao do mesmo programa para justamentos ou outas utiizagoes 87 58 Declaracao de constantes e variaveis A parte declarativa de um programa inclui_ A declaragao de uma constante comeca com? as varidveis que vao ser utilizadas no pro- a palavra Const, seguida pelo identificador ou; grama, mas também pode incluir outros ele- _nomes da constante. A declaracao completa-; mentos, como constantes, definicdo de _-se com o sinal de igual (=) e 0 valor que preten-: tipos de dados, subprogramas, etc. Para demos atribuir a constante. Por exemplo: ' j8, vamos limitar-nos as constantes e &s varia- veis. const comp = 50; declara uma constante com 0 nome Comp e Constantes © valor 50. Quando quisermos utilizar essa constante na Num programa podemos querer trabalhar parte das instrugdes do programa, apenas com dados que permanecem inalterados 20 temas de escrever 0 seu nome, & semelhanca longo de todo o programa. Nesse caso, deve- Y sf mos declaré-los como constantes. A declara- 40 Aue fazemos com uma qualquer variavel <@o de constantes tem a vantagem de poder- mos garantir que um determinado valor é Variaveis mantido inalterado ao longo do programa. Obs.: Se necessitarmos de utilizar o mesmo pro- COmo jé vimos, as varivels desempenham grama com um valor diferente para uma certa cons- UM papel fundamental num programa, pois ¢ tante, basta alterar 0 seu valor no cédigo da declara- através delas que as instrucdes manipulam 20 e, assim, todas as instrugoes em que esse valor valores que podem variar com o decurso das {or ulizado irdo ser automaticarente actualzadas. _operacées. Suponhamos que, no nosso programa de cAl- _Obs.: Em Pascal as variaveis tm de ser decleradas na culo da drea de um rectangulo, queriamos _ seccao declarativa do programa, pois, caso contro, atribuir um valor constante a0 comprimento 0 compilador acusara erro. Para cada varisvel decla- (por exemplo, 50) e apenas considerar como ada num programa € reservada em memoria uma variavel a largura. O programa poderia ser certa quantidade de espaco, de acordo com 0 tipo escrito como é apresentado na figura 2.17. de dados com que a varvel édeclarada, Program Rectang? ; >| Exemplo de declaracdo de uma constante fonet Comp = 50 Exemplo de utilizacao de uma constante ea eee numa expressao e instrucao de atribuicao Begin Write (1Introduza a medida da largura') Read ( larg) + +(Const)-gedenticador Valor Write ("A rea do rectangulo *, Area) ; End, Fi6.2.17. Fi6.2.18. Programa em que se exemplifca a declaraglo e Diagrama sintactico da dectaracdo de constantes em utiizagao de uma constante em Pascal Pascal "22, NOGOES BASICAS DE PASCAL FiG.2.19. Uma declaracao de variéveis em Pascal comeca com a palavra Var, seguida do ou dos identificadores das variaveis a declarar e do tipo de dados a que pertencem essas varidveis. Se tivermos mais do que uma variavel de um. mesmo tipo, podemos inclui-las numa mesma declaracéo, separadas por virgulas Entre os identificadores das varidveis e 0 res- pectivo tipo, ¢ obrigatério colocar-se o sinal de do's pontos (:). No final de cada declaracao, @ necessario inserir um sinal de ponto e virgula Se tivermos variaveis de diferentes tipos, ent3o devemos separar os diferentes tipos de vatiaveis utilizando o sinal separador ponto e virgula (;). Veja-se 0 diagrama da figura 2.19. No programa apresentado como exemplo na figura 2.17, temos a seguinte declaracai Diagrama sintactico da declaracao de variaveis em Pascal. Adeclaracao Inicia-se com a palavra Var, seguindo-se lum ou mais identificadores ou names de varidveis lseparados por virgulas} O tipo de dados a que a varidvel ou varidve's pertencem é indicado a seguir 2 dois pontos (‘A declaragao termina com ponta evirgula (i) Consideremos agora a seguinte declaracao: Var Nome : String ; Idade : Integer ; Peso, Altura : Real ; Nesta declarago séo declaradas: a varidvel Nome como sendo do tipo String; a variavel Idade como integer, as variaveis Peso e Altura ‘como sendo do tipo Real As variaveis destinam-se a receber valores ¢ a poderem ser utilizadas com esses valores. As instrugdes que atribuem valores as varidveis sao as instrug6es de atribuicao. Na figura 2.20, pode ver-se o diagrama sit tactico da instrucao de atribuicéo. Enquanto no pseudocédigo utilizavamos o sinal < para representar a atribuicdo de um valor a uma varidvel, em Pascal usa-se o sinal := (dois pon- 108 e igual) para esse efeito. Por exemplo’ 1)| Nome + tana; Var Larg, Area : Integer ; Ai sao declaradas as varidveis Larg e Area como sendo do tipo Integer (inteiro) atribui a variavel Nome a string ‘Ana’; 2)| tdade Ano_corrente - 1995 atribui a variavel Idade a diferenca entre 0 valor contido na varidvel Ano_corrente e 1995. Varidvel Erie.220. §Diagrama sintactico da instrugao de atribuigao de um valor a uma varidvel 59

You might also like