Escola Sec. de S.

João do Estoril Novembro de 1998

Ensino Recorrente - Programação de Computadores

Algoritmo
Para iniciar este capítulo vamos falar de culinária. Algo que, aparentemente, não terá nada a ver com programação. Vamos, então, analisar uma receita culinária. Para iniciar, verificamos que é composta de duas partes: uma que descreve os ingredientes e a outra (preparação) que explica como confeccionar os scones. A preparação consiste na descrição sequencial dos passos da confecção. Observemos que a descrição dos passos da preparação é ordenada, isto é, tem de ser feita na ordem apresentada. Ninguém amassa tudo e só depois peneira a farinha. Este tipo de descrição pode ser aplicada a muitas outras situações do dia-a-dia. Por exemplo, na montagem de um kit seja de mobiliário, seja de modelismo; Receita de Scones trazem sempre instruções de montagem que mostram a ordem ingredientes: •farinha de trigo - 12 colheres de sopa das peças a montar. •açúcar refinado - 3 colheres de sopa Encontra, ainda, no manual da •leite - 6 colheres de sopa •manteiga - 1 colher de sopa sua impressora quando explica a •fermento em pó - 1 colher de sopa mudança da fita, do cartucho de •1 ovo inteiro •uma pitada grande de sal tinta ou do toner conforme o tipo Preparação: de impressora que se trata. a farinha com o fermento para um alguidar. A este tipo de apresentação dá- Peneira-secima todas as outras coisas e amassa-se Põe-se em se o nome de algoritmo. Assim, a muito ligeiramente, só para ligar tudo, sem bater nem receita de scones apresentada é o cansar a massa. e colocam-se num tabuleiro forrado Fazem-se bolinhas algoritmo da sua confecção. As de alumínio. instruções de montagem de um kit Depois de cozidos, abrem-se de lado e mete-se-lhes um bocado de manteiga. são o algoritmo da montagem desse kit. Se analisarmos os diversos algoritmos, verificamos que contêm características comuns. São elas: - descrição sequencial (ordenada), cada passo corresponde a uma acção elementar clara, não devendo ocasionar ambiguidade na sua interpretação; - tem um número finito de passos. É apresentado, seguidamente, o algoritmo do cálculo do múltiplo de um número.

Algoritmo do cálculo dos múltiplos de um número: 1. Anotar o limite dos múltiplos (limite) 2. Anotar o número do qual se quer saber os múltiplos (número) 3. O primeiro múltiplo é o próprio número (múltiplo = número) 4. Enquanto o múltiplo for menor que o limite indicado fazer: 4.1. Anotar o múltiplo 4.2. O novo múltiplo será igual ao múltiplo anterior mais o número (múltiplo = múltiplo + número) 5. Fim do algoritmo.

Alexandre Alcobia

Unidade 1 - Algoritmia

1

Ensino Recorrente - Programação de Computadores

Escola Sec. de S. João do Estoril

Criar um programa de computador
Do que foi dito anteriormente, conclui-se que para fazer um programa devemos ter claro o algoritmo do nosso problema. Portanto, primeiro há que estudar o problema e elaborar o seu algoritmo. Uma vez estabelecido o seu algoritmo podemos, então, passar para a sua implementação numa linguagem de programação e assim testar o programa no computador. Concluindo, a construção de um programa comporta duas fases (ver figura): - fase de resolução do problema consiste na formulação do algoritmo eficaz para a resolução do problema posto; - fase de implementação - consiste na tradução do algoritmo para a linguagem de programação escolhida.

Algoritmo do cálculo dos múltiplos de um número num computador: 1. Entrar pelo teclado o limite dos múltiplos (limite) 2. Entrar pelo teclado o número do qual se quer saber os múltiplos (número) 3. O primeiro múltiplo é o próprio número (múltiplo = número) 4. Enquanto o múltiplo for menor que o limite indicado fazer: 4.1. Apresentar no ecrã o múltiplo 4.2. O novo múltiplo será igual ao múltiplo anterior mais o número (múltiplo = múltiplo + número) 5. Fim do algoritmo. program Multiplos (input,output); {Este programa está escrito num dialécto do PASCAL}; uses Crt; var Limite : integer; Numero : integer; Multiplo : integer; begin clrscr; write (‘Qual o valor de que se quer achar os múltiplos ‘); readln (Numero); write (‘Qual é o limite da sequência? ‘); readln (Limite); writeln (‘ Os múltiplos de ‘,Numero:3:2, ’ são: ‘); Multiplo := Numero; while Multiplo < Limite do begin writeln (Multiplo:3:2); Multiplo := Multiplo + Numero; end; end.

2

Unidade 1 - Algoritmia

Alexandre Alcobia

Escola Sec. de S. João do Estoril

Ensino Recorrente - Programação de Computadores

Exercícios
1. Construa o algoritmo para calcular a área de um rectângulo.
Algoritmo área do rectângulo 1. Entrar pelo teclado o valor do lado1 2. Entrar pelo teclado o valor do lado2 3. Calcular a área A = lado1 x lado2 4. Apresentar no ecrã o valor da área

2. Algoritmo do calculo da hipotenusa de um triângulo rectângulo.
Temos que saber a fórmula:

hipot = cateto12 + cateto22
Além da fórmula, temos que dar ao computador os valores dos catetos do triângulo.

3. Algoritmo da transformação dos valores da temperatura de graus Fahrenheit para graus Célsius.
Tente o leitor resolver este problema, sabendo que a fórmula a aplicar será:

celsius =

5 × ( fahr − 32) 9

4. Explique o que entende por algoritmo.

Alexandre Alcobia

Unidade 1 - Algoritmia

3

Ensino Recorrente - Programação de Computadores

Escola Sec. de S. João do Estoril

Linguagem algorítmica
Temos vindo a usar a linguagem comum como a linguagem de desenvolvimento de algoritmos. A linguagem algorítmica deve ser formal, isto é, a descrição tem de obedecer a regras de lógica precisas e sem ambiguidades. Mas por outro lado, não se torna necessário que o código seja muito rígido como acontece na linguagem do computador podendo, por exemplo, as frases serem escritas em letras maiúsculas ou minúsculas e as expressões matemáticas escritas na forma vulgar. Assim, vamos estabelecer algumas regras e criar uma linguagem algoritmica que é conhecida por pseudolinguagem ou pseudocódigo. A par da pseudolinguagem existe uma outra forma, esta gráfica, de representação de algoritmos. Esta baseia-se na utilização de determinados símbolos para fazer uma descrição gráfica do algoritmo.

Pseudolinguagem
A pseudolinguagem pode ser visto como a tentativa de fundir a expressividade da linguagem natural e o rigor lógico de esquemas como o fluxograma. A pseudolinguagem permite a descrição do algoritmo de uma forma linear, fácil de ler e fácil de compreender. Vamos aplicar esta linguagem algoritmica, reformulando um algoritmo anteriormente tratado. O algoritmo deve estar enquadrado entre dois indicadores que possibilitem determinar onde o algoritmo começa e acaba. Assim, aparecem as instruções Início e Fim.

Atribuição
Esta operação tem por objectivo atribuir um valor a uma variável. A variável funciona como um recipiente em que vão ser colocados dados. Temos de criar tantas variáveis (recipientes) quantas as forem necessárias para o correcto funcionamento do algoritmo. A operação de atribuição coloca o dado na variável. Exemplo: x ← -b/a (na variável x é colocado o valor de -b/a)

Introdução e saída de dados
A instrução Sair é utilizada para apresentar os dados ao utilizador. Exemplo: Sair “O valor da área é”, área A instrução Entrar é utilizada para introduzir dados no computador através do operador. Estes dados são afectados a variáveis. Exemplo: Entrar a, b Posteriormente, trataremos dos tipos de dados a declarar e das estruturas de decisão.

4

Unidade 1 - Algoritmia

Alexandre Alcobia

Inicia-se com a palavra "Início" e termina com "Fim". Comentários Cada passo do algoritmo pode iniciar com um comentário entre dois parênteses rectos. Começa com a palavra "Algoritmo". perímetro PI ← 3. Corpo Esta secção contém a sequência dos passos (acções) do algoritmo. São os comentários que ajudam muito à sua compreensão. Estes comentários dão uma breve descrição do passo ou dum grupo de passos seguintes. João do Estoril Ensino Recorrente .Programação de Computadores Peguemos no algoritmo da circunferência e vamos reformular a sua apresentação: Algoritmo circunferência [Este algoritmo dá as características de uma circunferência] inteiro raio real área. Eles servem para tornar a leitura. Os comentários são uma parte importante do algoritmo. mais fácil e clara. do algoritmo.Algoritmia 5 . Alexandre Alcobia Unidade 1 . de S. Existe um tipo de objecto de grande importância na clarificação de um algoritmo. perímetro Fim Num algoritmo. Declarações Nesta.Escola Sec. podemos definir três secções: Cabeçalho O cabeçalho é a secção onde é dado o nome ao algoritmo. é apresentada a descrição das variáveis usadas.14159 Início Entrar raio área ← PI x raio2 perímetro ← 2 x PI x raio Sair área.

Actualmente. valendo pela vantagem gráfica da apresentação das interligações.Algoritmia Alexandre Alcobia . a utilização do fluxograma restringe-se a um apoio complementar na documentação do algoritmo. o desenvolvimento de algoritmos.Ensino Recorrente . 6 Unidade 1 . João do Estoril Fluxogramas Esta técnica surge para representar. de S. O fluxograma mostra a lógica do algoritmo dando uma apresentação global das interligações entre os diversos passos.Programação de Computadores Escola Sec. Alguns símbolos usados na construção de fluxogramas Limites do algoritmo Processamento Entrada ou saída de dados Início Isto é um comentário num fluxograma Ligação entre partes do fluxograma raio Decisão área ← PIxraio2 perímetro ← 2xPIxraio perimetro area Fim Exercícios Aproveitando os exercícios anteriores. apresente os algoritmos em pseudolinguagem e faça os respectivos fluxogramas. graficamente.

compostas por várias palavras. mas formando um todo. conforme esse valor o algoritmo segue uma acção ou segue outra em alternativa.Escola Sec. geralmente. João do Estoril Ensino Recorrente . as instruções são cumpridas uma após outra até chegar ao fim do algoritmo. Estas estruturas não são mais que instruções complexas.Algoritmia 7 . Estas condições podem ser verdadeiras ou falsas. de S. No entanto existem estruturas que permitem a tomada de decisões em função de condições estabelecidas e assim.Programação de Computadores Estrutura de decisão I Até agora temos estado a lidar com algoritmos puramente sequênciais. A Sim condição Não acção1 acção2 B Alexandre Alcobia Unidade 1 . o algoritmo apresenta acções alternativas. A primeira que vamos usar é de decisão simples e tem o formato Se condição então acção1 senão acção2 fim se Esta será a sua forma em pseudolinguagem. isto é.

Sair no ecrã: "Equação indeterminada" ( x = − 0 ) Se B<>0 . 3. Calcule o salário semanal de um operário que trabalha por turnos (I) Pretende-se calcular o salário semanal de um operário em função do turno realizado e do número de horas de trabalho nessa semana. Calcule as ajudas de custo a um funcionário de uma empresa Pretende-se calcular as ajudas de custo a pagar aos funcionários de uma empresa que tenham de se deslocar em viatura própria para serviço da empresa.Programação de Computadores Escola Sec. Caso seja não se pode determinar.motor de cilindrada superior ou igual a 2000cm3 será financiado a 3$50 por quilómetro. como se indica a seguir: . Entrar pelo teclado o valor A e B Verificar para A=0 ou para A<>0 Sair para o ecrã o resultado Fim do algoritmo Desenvolvendo o ponto 2. Faça a discussão da equação do 1º grau A equação do primeiro grau é do tipo Ax+B=0. é função da motorização do veículo (cilindrada do motor). temos: 1. que a sua solução é dada pela expressão x=− B A Temos de analisar esta expressão em função de A ser igual a zero ou não. Sabemos que no turno de dia será pago a 750$00 por hora. também.Sair no ecrã: "Equação impossível" ( x = − Se A<>0 Calcular o valor de x ( x = − Sair no ecrã: x B ) A 0 B ) 0 2. temos: 2. de S. 8 Unidade 1 . João do Estoril Exercícios 1. por sua vez.Algoritmia Alexandre Alcobia . Sabe-se. No turno da noite será pago a 1000$00 por hora. A fórmula para o cálculo do valor será: ajuda de custo = valor por quilómetro * distância percorrida 3.Ensino Recorrente . Se A=0 Se B=0 .motor de cilindrada inferior a 2000cm3 será financiado a 3$00 por quilómetro . 2. Então. O valor é em função da distância percorrida e do valor por quilómetro que. 4.

Alexandre Alcobia Unidade 1 .Escola Sec. De que formas podemos representar um algoritmo? 8. . Sair no ecrã o maior O ponto 2 pode ser desenvolvido do seguinte modo: 2. De entre dois valores dados. é Algoritmo O valor mais elevado I [Vamos trabalhar só com números inteiros] Inteiro: val1.turno de noite . Calcule o salário semanal de um operário que trabalha por turnos (II) Pegando no problema anterior.Programação de Computadores 4. em pseudolinguagem. de S. Construa os fluxogramas dos algoritmos dos exercícios anteriores. De entre três valores dados. Entrar pelo teclado os dois valores 2.cada hora extraordinária vale 1250$00. maior Início Entrar val1 Entrar val2 Se val1>val2 Então maior ← val1 Senão maior ← val2 Fim se Sair maior Fim 6. verificar qual deles é o maior Partindo do algoritmo anterior. O algoritmo será: 1.turno de dia . Se primeiro valor for maior que o segundo Guardar o primeiro valor Se segundo valor for maior que o primeiro Guardar o segundo valor O algoritmo completo. João do Estoril Ensino Recorrente . propomos ao leitor a construção de um algoritmo para fazer a verificação para três valores. val2.cada hora extraordinária vale 1000$00. verificar qual deles é o maior O que se pretende é a construção de um algoritmo que permita verificar qual o maior de dois números. as restantes horas são consideradas trabalho extraordinário e será pago pelos seguintes valores: . Se realizar acima de 35 horas semanais. vamos considerar a possibilidade do operário poder fazer horas extraordinárias. 5. Compara os dois valores 3.Algoritmia 9 . 7.

Ex.Ensino Recorrente . Ora. a vírgula decimal é sempre colocada imediatamente antes do primeiro algarismo significativo. conhecidos como booleanos em homenagem a um matemático chamado Boole. isto é. Estes valores são usados para fazer operações lógicas. 7.386 321 x 109 0.321.327 x 10-6 Assim. -56. de S.35 Neste caso. representados no que se chama vírgula flutuante.: 16. Os dados numéricos (reais ou inteiros) quando muito compridos são. -5 Reais Estes correspondem aos números com decimais. São estes tipos que passaremos a apresentar. normalmente. Exemplo: número vírgula flutuante 386 321 457 0.Algoritmia Alexandre Alcobia . também. Ex.: 23. Lógicos / Booleanos Os dados lógicos consistem nos valores verdadeiro e falso (1 e 0). João do Estoril Tipos de dados O leitor já sabe que as variáveis usadas num programa têm que ser definidas num determinado tipo de dado. arredonda-se o último e utiliza-se uma potência de dez necessária (ver exemplos acima). 0. quer negativos. as linguagens apresentam um número pré-definido de tipos de dados. As diferentes linguagens apresentam diferentes tipos de instruções para definirem esses tipos de dados.000 000 326 72 0.Programação de Computadores Escola Sec. aparecem diversos tipos de reais conforme a precisão que se pretende. também. quando são muito compridos decide-se quantos algarismos significativos exactos escolhemos (precisão). Inteiros Estes correspondem a todos os números inteiros quer positivos. Estes dados são. 10 Unidade 1 .8.

Algoritmia 11 . Estas aspas são designadas como delimitadores da cadeia de caracteres.para que saibamos onde a cadeia começa e onde acaba. Uma cadeia de caracteres é representada nos programas como uma colecção destes caracteres começando e acabando por um carácter especial . Alexandre Alcobia Unidade 1 .Escola Sec. de S.aspas (“) .Programação de Computadores Caracteres (alfanuméricos) Estes dados são cadeias de caracteres alfanuméricos (character string). “333+444 dá 777”. João do Estoril Ensino Recorrente . Exemplos: “Rua Almirante”. Estes caracteres podem ser quaisquer caracteres reconhecidos pelo computador.

Vai-se.Algoritmia Alexandre Alcobia . temos vindo a aplicar uma estratégia para a construção do algoritmo que consiste em fazer um primeiro desenvolvimento genérico do algoritmo e só depois. Deste modo parte-se da construção de um algoritmo genérico com um número mínimo de passos genéricos.1 Trazer o saco da arroz 1.3 Trazer a tigela O segundo passo poderia ser: 2. de S. 12 Unidade 1 . Pesar a arroz 3. Como exemplo vamos desenvolver um algoritmo da pesagem de 1kg de arroz para uma tigela. Adiciona algum arroz à tigela Doutro modo.2 Trazer a balança 1. É uma estratégia usada na resolução de erros. construindo algoritmos mais detalhados (refinação do genérico). João do Estoril Estratégia Top-Down Nos problemas anteriores. Trazer os materiais 2. Consiste em partir do particular para o genérico.1 Guardar o saco de arroz 3. não só.2 Guardar a balança Existe a estratégia Bottom-Up em contrapartida com a Top-Down.1 Pesar a tigela e memorizar o seu peso 2. retira algum arroz da tigela O terceiro passo do algoritmo seria: 3. informáticos.2 Pôr alguma arroz na tigela 2. desenvolver os passos mais complexos.3 Enquanto o peso indicado não for igual ao peso da tigela sozinha mais 1kg: Se o peso da tigela mais arroz é menor que o peso da tigela mais 1kg. sucessivamente.Programação de Computadores Escola Sec. Definimos um algoritmo genérico que corresponda à solução que pretendemos: 1. Esta estratégia é conhecida pelo nome Top-Down. É uma estratégia a aplicar à resolução de problemas em geral e. O seu princípio baseia-se na divisão de um problema complexo em problemas menores para os quais é mais fácil encontrar a solução. Guardar os materiais Vamos refinar o primeiro passo do algoritmo genérico: 1.Ensino Recorrente .

5. Ex: 4 * 30=120. nas linguagens de programação essas notações são. não A divisão é representada por x / y em vez de x : y ou y .2 div 7 =2. do mesmo modo 14. utiliza-se 3^2 em vez de 32. João do Estoril Ensino Recorrente . utiliza-se a operação div. x * y. Isto quer dizer que algo como 2 pode ser escrito. além de outras operações típicas. Resto da divisão de inteiros (x mod y) Esta operação dá-nos o resto da divisão de dois inteiros. usamos 3/2 que o computador entenderá por 1.Programação de Computadores Operações elementares Embora no algoritmo possamos apresentar as operações da forma habitual. de S. a+25. Diz-se que o resultado é truncado quando se despreza a parte decimal. Multiplicação e divisão (x * y) (x/y) Estas operações apresentam-se em notações diferentes das usuais. Deste modo. Alexandre Alcobia Unidade 1 . Exemplo: real truncado 2. 6 mod 3 = 0 e 5 mod 2 = 1 Potenciação (x^y) A potenciação é representada por uma simbologia diferente.5. geralmente. diferentes. x 3 Divisão truncada (x div y) Quando pretendemos que o resultado da divisão de dois números dê um inteiro.Algoritmia 13 . 14 div 7 = 2. Assim. Ex: 3+5. apresentamos seguidamente as notações habituais nas linguagens de programação. Em vez disso. Assim. 1 div 2 dá 0 ao contrário de 1/2 que daria 0. a qual dá como resultado um número inteiro truncado.Escola Sec.62 0 Assim. Adição e subtracção A adição e a subtracção são representados da forma habitual. A multiplicação é assinalada por um asterisco em vez do "x" ou ponto.5 2 0.

ou seja: ou António é médico ou António é professor Leis de De Morgan Estas leis dão-nos as seguintes transformações: ~ (a ∧ b ) =~ a ∨ ~ b ~ (a ∨ b ) =~ a ∧ ~ b 14 Unidade 1 . ou seja: António é médico e/ou António é professor Disjunção exclusiva A disjunção exclusiva de a e b representa-se por: a = António é médico.Ensino Recorrente .valor verdadeiro Exemplos: a = O Sol é uma estrela b = O gato é um mamífero Vamos analisar as operações lógicas fundamentais Negação A negação da proposição a representa-se por: A negação de a lê-se: O Sol não é uma estrela Conjunção A conjunção de a e b representa-se por: a = O Sol é uma estrela b = O Sol emite energia A conjunção de a com b lê-se: a e b. ou seja: O Sol é uma estrela e o Sol emite energia Disjunção inclusiva A disjunção inclusiva de a e b representa-se por: a = António é médico b = António é professor A disjunção inclusiva de a com b lê-se: a e/ou b. de S.Algoritmia Alexandre Alcobia .valor falso 1 . b = António é professor A disjunção exclusiva de a com b lê-se: ou a ou b. João do Estoril Operadores lógicos Definições a e b são proposições 0 .Programação de Computadores Escola Sec.

6 As operações deverão ser realizadas como se mostra a seguir: Alexandre Alcobia Unidade 1 . Dum modo global temos: ·mais alta prioridade para a potenciação.Algoritmia 15 . pois ela vai garantir a correcção do resultado. o valor correcto é 81. ·segue-se em igualdade a multiplicação e a divisão.Programação de Computadores Prioridade das operações Consideremos a seguinte expressão: A ← 3+6*13 Que valor atribuir à variável A? O valor desta variável dependerá da ordem utilizada na realização das operações. João do Estoril Ensino Recorrente . Assim.Escola Sec. da direita para a esquerda será A=81. da esquerda para a direita será A=117. Pode-se alterar a prioridade das operações. A multiplicação tem prioridade em relação à adição Como se pode verificar. Para se evitarem estas ambiguidades temos que respeitar a prioridade das operações. ·finalmente. temos a adição e subtracção. utilizando parênteses: A primeira prioridade vai para as operações incluídas entre parênteses. de S. Consideremos a seguinte expressão: -3 * 7 + 2^3 div 4 .

pelo que se terá de recorrer a várias estruturas SE encadeadas. Neste caso. Fim caso A Decisão opção1 opção2 opção3 acção1 acção2 acção3 A Vejamos o seguinte exemplo: Algoritmo Selecção [caracterização de algumas letras do alfabeto] Carácter letra.”b”: frase ← “Primeiras letras” “k”.”w”. temos uma estrutura de decisão composta ou decisão múltipla que vai tornar a leitura do algoritmo mais fácil. de S. João do Estoril Estrutura de decisão II Há casos em que se tem de optar entre várias opções que uma variável pode dispor.. O encadeamento das estruturas SE traz dificuldade na interpretação do algoritmo.Algoritmia Alexandre Alcobia .Programação de Computadores Escola Sec. apresentará a seguinte forma: Caso variável opção1: acção1 opção2: acção2 . Em pseudocódigo.Ensino Recorrente ..”y”: frase ← “Alfabeto inglês” “z”: frase ← “Última letra” Senão frase ← “Outras letras do alfabeto” Fim caso Sair frase Fim 16 Unidade 1 . frase Início Entrar letra Caso letra “a”. Essa estrutura é conhecida pela estrutura CASO.

Descreva o que faz o seguinte algoritmo.Programação de Computadores Exercício 1. João do Estoril Ensino Recorrente .binómio discriminante < 0 Não tem solução nos reais. Assim. -binómio discriminante = 0 Tem solução dada por − b ± b 2 − 4ac 2a x= −b 2a 3.binómio discriminante > 0 Tem solução dada por x= . de S. Alexandre Alcobia Unidade 1 . 4. De seguida. A partir de um menu em que são apresentadas as figuras geométricas disponíveis. Construa os fluxogramas dos algoritmos dos exercícios anteriores. temos três situações: . Construa o algoritmo da discussão da equação do segundo grau usando a estrutura CASO.Escola Sec. o utilizador escolherá a pretendida. A equação do segundo grau apresenta-se na forma ax 2 + bx + c = 0 A resolução desta equação é baseada na utilização do binómio discriminante b 2 − 4ac . Construa um algoritmo que disponha do cálculo do valor da área de três figuras geométricas. Algoritmo números Inteiro número Caracter frase Início Entrar número Se número > 10 então frase ← “É maior de 10” Senão Se número < 10 então frase ← “É menor de 10” Senão frase ← “É igual a 10” Fim se Fim se Sair frase Fim 2.Algoritmia 17 . ser-lhe-ão pedidos os dados referentes à figura e produzir-se-á o cálculo do valor da área que será apresentado no ecrã. O utilizador escolherá uma das três figuras disponíveis a tratar e o algoritmo produzirá o valor da área.

Ensino Recorrente . Portanto. a produção de ciclos. A Não Condição Sim B Algoritmo múltiplos inteiro Número.ou uma série de operações ..é repetida muitas vezes.. Trata-se de um algoritmo para o cálculo dos múltiplos de um número até um determinado valor definido por Limite Início Entrar Número. Múltiplo Apresentamos um exemplo. A condição será testada depois de realizada a acção. REPETIR .Algoritmia Alexandre Alcobia . ou seja. João do Estoril Estruturas de Repetição Os computadores são particularmente bem adaptados a aplicações nas quais uma dada operação . Limite Múltiplo ← Número Repetir SAIR Múltiplo Múltiplo ← Múltiplo + Número até Múltiplo >= Limite Fim 18 Unidade 1 . de S. ATÉ Apresentará o seguinte formato: Repetir acção até condição Acção A acção será repetida até que a condição seja verdadeira.Programação de Computadores Escola Sec. a acção realizar-se-á pelo menos uma vez. As estruturas de repetição são construções fundamentais e podem ocorrer numa variedade de formas. Limite.

..Escola Sec. A condição é testada antes de se iniciar a acção. A estrutura REPETIR . ATÉ condição. temos: Múltiplo ← Valor Repetir Sair Múltiplo Múltiplo ← Múltiplo + Valor até Múltiplo >= Número Múltiplo ← Valor Enquanto ~(Múltiplo >= Número) fazer Sair Múltiplo Múltiplo ← Múltiplo + Valor repetir A Condição Não Sim Acção B Alexandre Alcobia Unidade 1 .. REPETIR. se for falsa já não se produz a acção. a acção repete-se enquanto a condição for verdadeira... Se a condição for verdadeira produz-se a acção. Assim. REPETIR... João do Estoril Ensino Recorrente . ATÉ pode ser realizada utilizando a estrutura ENQUANTO .Programação de Computadores ENQUANTO . de S. Basta mudar de REPETIR . REPETIR Esta apresenta a seguinte formulação em pseudocódigo: Enquanto condição fazer acção repetir Neste caso... para ENQUANTO ~condição ..Algoritmia 19 .

O passo é de utilização opcional. mas podemos adoptar a seguinte. João do Estoril PARA. de 2 até número-1] Para contagem ← 2 até número-1 fazer [Se for divisível não é primo] Se (numero mod contagem = 0) então primo ← falso Fim se Seguinte Se primo então frase ← “É número primo” senão frase ← “Não é primo” Fim se Sair frase Fim A variável v_inicial até v_final Não está estabelecida qualquer representação gráfica para a estrutura PARA. de uma unidade.Algoritmia Alexandre Alcobia .. Se não for declarado é. SEGUINTE Por último. por defeito.Programação de Computadores Escola Sec. isto é..Ensino Recorrente . O valor do incremento (ou decremento) é dado pelo valor positivo (ou negativo) de n. acção B 20 Unidade 1 . de S. temos uma estrutura de repetição por contagem: Para variável ← valor inicial até valor final passo n fazer acção seguinte A variável toma um valor inicial que vai incrementando (ou decrementando) até um valor final. contagem carácter frase booleano primo Início primo ← verdadeiro Entrar numero [Para não ser primo tem de ser divisível por qualquer entre 1 e ele próprio. Algoritmo Números Primos [Vamos verificar se é primo] inteiro número. Vamos ver o algoritmo para verificar se um número é ou não primo.

Esta estrutura PARA . João do Estoril Ensino Recorrente . é necessário proceder ao incremento da variável contador para que alcance o valor final pretendido.. contagem booleano primo Início primo ← verdadeiro Entrar numero [Para não ser primo tem de ser divisível por qualquer entre 1 e ele próprio. A variavel ← v_inicial Usando a estrutura ENQUANTO. de S... isto é.Programação de Computadores Aqui é apresentada uma aplicação desta estrutura.. variavel =< v_final Sim Acção Não variavel ← variavel + 1 B Alexandre Alcobia Unidade 1 . pode-se considerar uma variante da estrutura ENQUANTO. A variável contagem é utilizada como contador. de 2 até número-1] contagem ← 2 [Para iniciar a contagem] Enquanto contagem =< número-1 fazer [Se for divisível não é primo] Se (numero mod contagem = 0) então primo ← falso Fim se contagem ← contagem + 1 [Incrementa de uma unidade] Repetir Se primo então Sair “É número primo” senão Sair “Não é primo” Fim se Fim Neste caso é necessária a inicialização da variável contador antes da estrutura ENQUANTO.Escola Sec.Algoritmia 21 . A não indicação do passo leva a que o valor seguinte de contagem será o valor anterior mais um. Vejamos: Algoritmo Números Primos [Vamos verificar se é primo] inteiro número. o fluxograma fica como o apresentado ao lado. Dentro do ciclo.

João do Estoril Fluxograma do algoritmo Número primo usando a estrutura ENQUATO.Ensino Recorrente .Programação de Computadores Escola Sec.Algoritmia Alexandre Alcobia . de S. Número primo número contagem ← 2 contagem =<número-1 Sim número mod contagem=0 Não Sim Não primo← falso contagem ← contagem+1 Não primo Sim "Não é nº primo" "É nº primo" Fim 22 Unidade 1 .

Assim.Programação de Computadores Exercícios 1. Por isso aparece a estrutura Para contagem ← 2 até número-1 fazer acção Seguinte A acção é a verificação da divisibilidade.Escola Sec. Daí que surge Para contagem ← 2 até número-1 fazer Se (numero mod contagem = 0) então primo ← falso Fim se Seguinte Na realidade estamos a verificar se o número não é primo. 2. a frase será a conveniente. Para mandar a indicação para o ecrã.1). Análise do algoritmo do número primo. Temos uma operação que nos dá o resto da divisão de inteiros. Para indicar se o número é ou não primo usamos uma variável booleana que toma um de dois valores: ou verdadeiro ou falso. João do Estoril Ensino Recorrente . Faça o algoritmo com a estrutura PARA e outro com a estrutura ENQUANTO. de S. Se um número a for divisível por outro b então o resto da divisão será zero. Sendo divisível por qualquer outro. A variável está identificada com o nome primo. Usamos o valor da variável booleana para fazer a diferenciação. Somar os N primeiros números inteiros Somar todos os números desde 1 até ao número N indicado pelo utilizador. isto é. só e somente. Um número primo é aquele que é divisível. Por isso usamos Se (numero mod contagem = 0) então primo ← falso Fim se. temos de verificar todos os outros números desde 2 até ao número anterior ao que queremos verificar (número . pela unidade e por ele próprio. Se primo então frase ← “É número primo” senão frase ← “Não é primo” Fim se Se for primo (primo terá o valor verdadeiro) é apresentado no ecrã “É número primo”. se o número é primo ou não. Como todos os números são divisíveis por um e por si próprios não necessitamos de verificar a divisibilidade. Alexandre Alcobia Unidade 1 .Algoritmia 23 . se não for será apresentada a frase “Não é primo”. É o mod. Neste caso temos que se número mod contagem = 0 então o número não será primo. não é número primo.

isto é. Terá de usar mais uma estrutura PARA que a usada no algoritmo apresentado. Implemente o algoritmo do número primo para apresentar todos os números primos até um número N indicado pelo utilizador. mas não se esqueça de ter em atenção do pormenor de o factorial de zero ser 1. o produto de todos os inteiros desde 1 até ao número escolhido Por exemplo. 4. João do Estoril 3.Ensino Recorrente .Algoritmia Alexandre Alcobia . 24 Unidade 1 .Programação de Computadores Escola Sec. o factorial de 3 é 1x2x3 = 6. Use a estrutura PARA. Construa o algoritmo do factorial de um número. de S. mas o factorial de zero é 1.

Programação de Computadores Erros A construção de algoritmos traz consigo a produção de erros. Algoritmo Números Primos inteiro número.1 1 3 Alexandre Alcobia a V V F - b F - primo V V V V V frase Primo Unidade 1 . Para contagem ← 2 até número-1 fazer 2.1. temos de utilizar técnicas que nos permitam detectar o erro de modo a poder corrigi-lo. contagem carácter frase booleano primo Início primo ← verdadeiro Entrar numero 1. assim. Se (numero mod contagem = 0) então primo ← falso Fim se 1.1 Seguinte 3. senão frase ← “Não é primo” Fim se Sair frase Fim Cria-se uma série de referências. a = contagem ← 2 até número-1 b = (numero mod contagem = 0) número contagem 1 2 1. Em seguida constroi-se uma tabela na qual colocamos os valores das variáveis e das condições a testar. de S. Uma técnica usada é a construção de quadros de taçagem (trace table).Algoritmia 3 3 3 3 3 2 2 3 3 3 25 . Estes são tanto mais prováveis quanto mais complexo for o algoritmo. permitir a sua correcção.Escola Sec. Se primo então frase ← “É número primo” 3. permite uma análise do funcionamento do algoritmo levando à detecção do erro e. Para exemplificar esta técnica vamos usar o algoritmo do número primo apresentado anteriormente. Neste caso. João do Estoril Ensino Recorrente . por exemplo a numeração como se apresenta no algoritmo acima.

em geral. este processo é denominado debugging e aos erros dá-se o nome de bugs. João do Estoril A tabela apresentada.Ensino Recorrente . Pelo quadro. difíceis de detectar porque reflectem uma incorrecta elaboração do algoritmo.1 4 4 4 4 4 4 4 4 contagem 2 2 3 3 3 4 4 4 a V V V F - b V F - primo V F F F F F F F frase N ão primo Aos erros produzidos na construção de um algoritmo dá-se o nome de erros lógicos ou erros semânticos. agora o quatro que sabemos não ser primo e o algoritmo produz o resultado esperado. Em inglês.1 1 3.1 1 2 1. Um teste completo. mostra o funcionamento do algoritmo e os valores que vai produzindo para um número escolhido que é o três que sabemos ser primo. do algoritmo.Programação de Computadores Escola Sec. A tabela seguinte mostra o teste para um outro número escolhido por nós.Algoritmia Alexandre Alcobia . Ao processo de detecção e correcção de erros dá-se o nome de depuração. sabemos que o algoritmo produz a resposta certa. de S. São erros. Estes resultam do facto de o programador não ter expressado correctamente a sequência de acções a ser executada (o programador queria dizer uma coisa mas disse outra). tem de comportar os casos particulares do problema posto. 26 Unidade 1 . número 1 2 1.

. maior Início Entrar val1. Há a inicialização da variável número (número ← 0) para obrigar ao pedido da introdução do número a verificar. de entre dois números inteiros.Quando se encontra um valor em que o número é divisível não há vantagem em continuar a verificação. obrigando o utilizador a repetir novo valor caso tenha introduzido um valor não apropriado. Alexandre Alcobia Unidade 1 . contagem carácter frase booleano primo Início primo ← verdadeiro número ← 0 Enquanto número < 2 fazer Entrar número Repetir .. val2.Não tem interesse a verificação a números negativos.Programação de Computadores Exercícios 1. pois o número é primo. Construa um algoritmo para verificar de entre três números inteiros. Corrija-o. Solução: quando se encontra o valor que divide o número pára-se a estrutura PARA. contagem ← 1 Enquanto contagem <= 10 fazer Sair “Não acabou” Repetir Use a técnica de trace table para analisar o funcionamento do algoritmo 2. de S. não sabemos o que poderá acontecer uma vez que não sabemos que valor a variável número contém no momento do teste da condição da estrutura ENQUANTO. Solução: impedir ao utilizador a introdução dos referidos valores. qual o maior Será aconselhável basear-se no algoritmo do exercício anterior. val2 Se val1>val2 então maior ← val1 senão maior ← val2 Fim se Sair maior Fim 3.Algoritmia 27 .. Algoritmo valor mais elevado inteiro val1.. Vamos começar pelo primeiro aspecto Algoritmo Números Primos inteiro número. 4. O algoritmo apresentado seguidamente produz um ciclo infinito.. João do Estoril Ensino Recorrente . . nem o zero nem o número um. verificar qual deles é o maior Para a construção do algoritmo pedido basta usar uma estrutura SE. Melhoria do algoritmo “Números primos” O algoritmo apresentado antes pode ser melhorado em dois aspectos: . Caso não se faça a inicialização referida. Acrescentamos a estrutura ENQUANTO para verificar o valor que o utilizador introduz na variável número. Construa um algoritmo para..Escola Sec.

Algoritmia Alexandre Alcobia ... Vimos nos operadores lógicos que na conjunção basta uma proposição ser falsa para que a condição seja falsa.. Tomemos a = contagem ← 2 até número-1 b = numero mod contagem=0 a 1 1 0 0 b 1 0 1 0 ~b 0 1 0 1 a ∧ ~b 0 1 0 0 A estrutura PARA continua 5. Como exercício. 28 Unidade 1 .. João do Estoril Para (contagem ← 2 até número-1) ∧ ~(numero mod contagem=0) fazer Se (numero mod contagem = 0) então primo ← falso Fim se Seguinte . também acaba se a contagem chegar ao fim.. de S. Valide a sua escolha com a verificação numa trace table.Ensino Recorrente . do algoritmo anterior.. Vejamos a tabela de verdade para as condições postas.Programação de Computadores Para o segundo aspecto referido. numa estrutura ENQUANTO. Esta. transforme a estrutura PARA. temos Escola Sec. Assim. basta encontrar um valor que divida o número para acabar a estrutura PARA.

.Programação de Computadores Quadros e vectores Suponhamos que queremos analizar as notas. dos alunos de uma turma. Entrar “Introduza a nota”. de S.. nota2 SNotas ← SNotas + nota2 ....media [Apreciação da situiação de cada aluno em relação à média] Se nota1 = media então [Apreciação para o aluno 1] comentario ← “O aluno 1 está na média.” senão Se nota2 > media então comentario ← “O aluno 2 está acima da média” senão comentario ← “O aluno 2 está abaixo da média” fim se fim se Sair comentario ...” senão Se nota1 > media então comentario ← “O aluno 1 está acima da média” senão comentario ← “O aluno 1 está abaixo da média” fim se fim se Sair comentario Se nota2 = media então [Apreciação para o aluno 2] comentario ← “O aluno 2 está na média.....nota20 [Suponhamos que a turma tem 20 alunos] Inteiro SNotas Caracter comentario Real media Início [Inicialização das variável para a soma das notas da turma] SNotas ← 0 [Introdução das notas dos 20 alunos] Entrar “Introduza a nota”. Para tal.....Escola Sec.. João do Estoril Ensino Recorrente . nota20 SNotas ← SNotas + nota20 [Cálculo da média] media ← SNotas / 20 Sair “A média é”..nota2.. Algoritmo Notas [Programa para determinar a média das notas de uma turma a uma disciplina e classificar os alunos em relação a essa média] Inteiro nota1. numa disciplina.. Se nota20 = media então [Apreciação para o aluno 20] comentario ← “O aluno 20 está na média.” senão Se nota20 > media então comentario ← “O aluno 20 está acima da média” senão comentario ← “O aluno 20 está abaixo da média” fim se fim se Sair comentario Fim Alexandre Alcobia Unidade 1 . ....Algoritmia 29 .. construimos o seguinte algoritmo.. nota1 SNotas ← SNotas + nota1 Entrar “Introduza a nota”.

isto é.numero Real media Caracter comentario Início [Inicialização das variáveis] nota ← 0 NAlunos ← 0 SNotas ← 0 [Introdução do número de alunos da turma] Entrar “Indique o número de alunos da turma. Algoritmo Notas [Programa para determinar a média das notas de uma turma a uma disciplina e classificar os alunos em relação a essa média] Inteiro contador. sendo a turma de vinte alunos logo temos de criar vinte varáveis para as notas. Na apreciação qualitativa em relação à média. numero Entrar “Introduza a nota do aluno”.”. De qualquer modo. se não pensarmos em fazer um programa para um curso que teria cento e cinquenta alunos. João do Estoril Analisando o algoritmo vêmos que é criada uma variável para cada nota. tornando a produção mais fácil de algoritmos mais eficientes. nota SNotas ← SNotas + nota Seguinte [Cálculo da média] media ← SNotas/NAlunos Sair “A média é”. deparamos com uma sequência idêntica de estruturas SE.media [Apreciação da situiação do aluno em relação à média] Para contador ← 1 até NAlunos fazer Entrar “Indique o número do aluno”. Não seria nada prático. NAlunos [Introdução das notas dos alunos] Para contador ← 1 até NAlunos fazer Entrar “Introduza a nota”.Ensino Recorrente .Programação de Computadores Escola Sec.nota. ou outros. nota Se nota = media então comentario ← “Este aluno está na média. Isto perfaz vinte estruturas semelhantes. 30 Unidade 1 . A escrita de um programa com estas características é muito fastidioso. mas ter-se-ía de intorduzir duas vezes as notas dos alunos.Algoritmia Alexandre Alcobia . de S. mas sempre semelhantes para cada nota existente.” senão Se nota > media então comentario ← “Este aluno está acima da média” senão comentario ← “Este aluno está abaixo da média” fim se fim se Sair comentario Seguinte Fim Para ultrapassar este problema temos uma estrudura de dados conhecida como quadro ou array que não é mais que uma matriz e que podemos usar na resolução de questões deste tipo. poderíamos ultrapassar o problema usando a mesma variável para as notas dos alunos e usando a estrutura PARA.SNotas.NAlunos.

Tem uma coluna e quatro linhas.Programação de Computadores Na realidade. Assim. Alexandre Alcobia Unidade 1 . caracter ou outro.1] = 10. Como vimos. à semelhança de uma matriz.3] = 9 e tri[2. temos Cada dado do array tabela é identificado pelo par [linha.1. de S. coluna]. normalmente. podemos usar quadros unidimensionais. torna-se mais prática a elaboração do referido algoritmo como podemos verificar seguidamente. mas pode haver com mais dimensões ou com menos (unidimensional). temos tabela [2. João do Estoril Ensino Recorrente . uni[2] = e. Assim.3] = 17. Os dados guardados num quadro podem ser inteiros. bidimensionais ou outros conforme o necessário. uni[4] = ou. Este quadro é bidimensional. Utilizando esta estrutura de dados.2. mas. Este quadro representa duas tabelas de três linhas e três colunas. Os quadros unidimensionais também são chamados vectores. reais. Assim. é um grupo de dados com o mesmo identificador (nome do array) mas cada dado está associado a um endereço diferente.Algoritmia 31 .Escola Sec. temos que tri[1. Este quadro é unidimensional. Deste modo. não vai além dos tridimensionais.

” senão Se nota[numero] > media então Sair numero Sair “O aluno está acima da média” senão Sair numero Sair “O aluno está abaixo da média” fim se fim se Seguinte Fim Analisando o algoritmo apresentado.NAlunos Até NAlunos => 1 ∧ NAlunos =< 30 [Introdução das notas dos alunos] Para numero ← 1 até NAlunos Sair numero Sair “Introduza a nota do aluno” Entrar nota[numero] SNotas ← SNotas + nota[numero] Seguinte [Cálculo da média] media ← SNotas / NAlunos Sair “A média é”.numero Real media [Definição de quadro para o máximo de 30 alunos] Quadro Inteiro nota[30] Início [Inicialização das variáveis] SNotas ← 0 [Introdução do número de alunos da turma] Repetir NAlunos ← 0 Sair “Indique até ao máximo de 30 alunos” Entrar “Indique o número de alunos da turma. serve para encher o vector com as notas dos alunos.Algoritmia Alexandre Alcobia . de S. João do Estoril Algoritmo Notas [Programa para determinar a média das notas de uma turma a uma disciplina e classificar os alunos em relação a essa média] Inteiro NAlunos. Entrar nota[numero] .. começamos por verificar que usa um vector (quadro unidimensional) de inteiros com trinta posições: Quadro Inteiro nota[30].. A estrutura REPETIR. Cada posição do vector é referenciada por nota[numero] dado que nota é o identificador do quadro e o contador numero vai incrementando a posição no vector conforme vai incrementando na estrutura PARA.”.SNotas. A estrutura PARA que aparece a seguir. Seguinte contador É claro que não corre o quadro todo.Programação de Computadores Escola Sec. 32 Unidade 1 .. ATÉ serve para garantir que o utilizador introduza um número de 1 até 30 que é o número máximo de alunos que o quadro pode suportar.. mas só a quantidade de posições que NAlunos contém.. Para numero ← 1 até NAlunos ..media [Apreciação da situação do aluno em relação à média] Para numero ← 1 até NAlunos Se nota[numero] = media então Sair numero Sair “O aluno está na média.Ensino Recorrente .

Por esta razão.. fazer a troca conveniente. Da análise. Depois verificamos Idade[2] e Idade[3] e têm de ser trocados. de S. Por questão de lógica de procura ou de leitura. conclui-se que a estrutura PARA é muito útil no trabalho de quadros de um modo geral.. A primeira estrutura corre as linhas do quadro e a segunda corre. Todo este procedimento corre o vector até ao fim. pode haver interesse em que os dados estejam ordenados... o utilizador introduz um inteiro no quadro na posição referenciada no momento pelos contadores linha e coluna. Seguinte Seguinte Como vemos no exemplo acima apresentado. Se usarmos quadros bidimensionais usam-se duas estruturas PARA para correr o quadro porque passam a existir dois indicadores de posição para cada célula do quadro. Vejamos.Escola Sec.coluna] .10] . Seria legítimo pretender-se que as idades estivessem ordenadas por ordem crescente. Vejamos o vector definido por Quadro Inteiro Idades [5] que contém as idades de cinco pessoas: 45 27 33 40 35 Os dados do vector Idades não se encontra ordenado. teremos de correr o vector comparando os valores sucessivos e. Para linha ← 1 até 5 fazer Para coluna ← 1 até 10 fazer .. vamos estudar um algoritmo simples que permitirá proceder à ordenação dos dados de um quadro. existe o quadro QuadBid de 5 linhas por 10 colunas que é referenciado com a ajuda de duas estruturas PARA. Entrar QuadBid[linha. estes ficam arrumados em função da ordem de entrada que o utilizador usou. Assim. a posição Idade[1] é 45 e a posição Idade[2] é 27.Programação de Computadores A seguir aparece uma outra estrutura PARA para correr o vector e fazer a comparação. em cada linha. com a média realizando a apreciação de cada aluno. João do Estoril Ensino Recorrente .Algoritmia 33 . as colunas. temos: Para coluna ← 1 até 4 fazer Se Idade[coluna] > Idade[coluna+1] então Troca (Idade[coluna]. Ordenação Quando se preenche um quadro com dados.Idade[coluna+1]) Fim se Seguinte Alexandre Alcobia Unidade 1 . de cada valor armazenado. Cada vez que realiza a instrução Entrar. caso necessário. logo terão de ser trocados os valores de modo que a posição Idade[1] fosse 27 e Idade[2] fosse 45. os dados ficam sem uma ordem convencional.. Esquematizando. Quadro Inteiro QuadBid [5. Para tal.

Uma análise mais atenta. mostra-nos que este algoritmo não chega. É necessário fazer correr.Programação de Computadores Escola Sec. Portanto. Vejamos. Será fácil temporario ← Idade[coluna] Idade[coluna] ← Idade[coluna+1] Idade[coluna+1] ← temporario Agora podemos construir o algoritmo completo Algoritmo Ordenação do vector [Este algoritmo ordena por ordem crescente] Inteiro coluna. João do Estoril Este algoritmo tem uma operação especial a que chamámos Troca que vai realizar a troca pretendida. no quadro seguinte.Algoritmia Alexandre Alcobia .Ensino Recorrente . temporario Quadro Inteiro Idades [5] Booleano trocas Repetir trocas ← falso Para coluna ← 1 até 4 fazer Se Idade[coluna] > Idade[coluna+1] então temporario ← Idade[coluna] Idade[coluna] ← Idade[coluna+1] Idade[coluna+1] ← temporario trocas ← verdadeiro Fim se Seguinte Até ~trocas [Até não haver trocas] Fim 34 Unidade 1 . o algoritmo só deve acabar quando a estrutura PARA correr o vector e não acontecer alguma troca de valores. mais uma vez. a estrutura PARA.Idade[coluna+1]) trocas ← verdadeiro Fim se Seguinte Até ~trocas [Até não haver trocas] Falta criar o algoritmo da operação Troca. vector original 45 coluna ←1 até 4 27 33 40 35 1 2 3 4 27 45 27 33 45 27 33 40 45 27 33 40 35 45 O quadro mostra-nos que a ordenação não ficou completa. de S. o que se passa a cada incremento da variável coluna na estrutura PARA. Repetir trocas ← falso Para coluna ← 1 até 4 fazer Se Idade[coluna] > Idade[coluna+1] então Troca (Idade[coluna].

Será de sete linhas e duas colunas como se pode ver na tabela acima apresentada. Partindo do algoritmo do exercício anterior será fácil construir este. de S. 2. Construa um algoritmo para ordenação dos dados do quadro do exercício 1. vende sete modelos dessa marca. 3.Algoritmia 35 . Crie um algoritmo que introduza num quadro bidimensional os modelos e respectivo preço para posterior consulta. o quadro é bidimensional havendo necessidade de ordenar as duas colunas. Neste caso. M ode los modA modB modC modD modE modF modG Pre ço (contos ) 2500 3000 2500 3500 2500 3000 4000 O quadro terá de ser do tipo caracter. João do Estoril Ensino Recorrente . Faça um algoritmo para mostrar os dados contidos no quadro preenchido no exercício anterior.Programação de Computadores Exercícios 1. De qualquer modo. Um stand de venda de automóveis. concessionário de uma marca. pois terá que conter a designação do modelo. Alexandre Alcobia Unidade 1 .Escola Sec. a primeira coluna só será ordenada em função da ordenação da segunda. por ordem crescente do preço. quando houver uma alteração da ordem de preços ter-se-á de fazer a alteração na ordem dos modelos respectivos. isto é.

Diz-se código binário porque é baseado na utilização de dois símbolos (0 e 1). se ordenado seria “cinco espaços1Aaaaaaabcddeeinrstu”. Este código só tem 128 (de 0 a 127) caracteres. Para acedermos ao carácter temos de premir a telca Alt mais o número no teclado numérico.Algoritmia Alexandre Alcobia .é claro que o número está em base dez por conversão do código binário. de S. Como exemplo temos “A unidade 1 esta a acabar”.carácter 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 10 etc. 36 Unidade 1 . O computador pode ordenar os caracteres. apareceram extensões ao código que vão do 128 até ao 255. João do Estoril Cadeias de caracteres (Strings) Trata-se de uma outra estrutura de dados à qual já fizemos referência no capítulo Tipos de dados. entre outras. Como já vimos anteriormente. É claro que a codificação é convencional e existe. um standard muito usado na microinformática conhecido pelo código ASCII (American Standard Code for Information Interchange). Na página seguinte é apresentada uma tabela dos caracteres standard desse código. por exemplo o carácter # será Alt + 35. Estas variam porque incluem caracteres específicos para compatibilizar com as diversas línguas. A esta estrutura está associada uma série de operações básicas que iremos apresentar seguidamente e que permitem um manuseamento destes dados de uma forma diferente dos dados numéricos. por ser necessário. Deste modo podemos representar números ou símbolos como. Estes são codificados em código binário porque é a linguagem que a máquina conhece. Na máquina será: há energia / não há energia. assim pode estabelecer uma ordem aos caracteres que usa.Programação de Computadores Escola Sec. o computador trata frases como uma cadeia de caracteres alinhados e passíveis de serem ordenados.Ensino Recorrente . Os números são o código do carácter que está ao lado . por exemplo: binário .

Escola Sec.Programação de Computadores ASCII Standard Os primeiros 32 characters (0-31) são códigos de control. block Cancel End of medium Substitution Escape Figures shift Group separator Record separator Unit separator Blank Space (Space Bar) 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 ! “ # $ % & ‘ ( ) * + . 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US SP Null Start of heading Start of text End of text End of transmit Enquiry Acknowledge Audible bell Backspace Horizontal tab Line feed Vertical tab Form feed Carriage return Shift out Shift in Data link escape Device control 1 Device control 2 Device control 3 Device control 4 Neg.Algoritmia 37 . acknowledge Synchronous idle End trans. . / 0 1 2 3 4 5 6 7 8 9 : . de S. João do Estoril Ensino Recorrente . < = > ? @ 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ‘ 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 • Alexandre Alcobia Unidade 1 .

É com este tipo de códigos que se compatibiliza a máquina com os caracteres próprios de cada língua.Programação de Computadores Escola Sec.Algoritmia Alexandre Alcobia . 38 Unidade 1 .Ensino Recorrente . de S. Um designado por 850 Multilingue e outro por 860 Portugal. João do Estoril Aqui apresentamos dois códigos ASCII extendidos.

Escola Sec.Algoritmia 39 . isto é. Do que foi apresentado. Cadeia nula Já vimos que uma cadeia de caracteres é formada por vários caracteres. uma cadeia nula (null string). tudo ← “13+7=20” + “” então tudo = “13+7=20” Alexandre Alcobia Unidade 1 .Programação de Computadores Concatenação Uma operação fundamental no tratamento de cadeias é a concatenação. isto é “” Uma característica desta cadeia nula é de elemento neutro. Se as cadeias tivessem sido concatenadas numa outra ordem teríamos obtido uma outra cadeia. também. de S. pudemos estabelecer a existência de uma cadeia sem caracteres. Consiste na aglutinação de várias cadeias de caracteres. mas. por exemplo “?” Deste modo temos uma cadeia de caracteres com um elemento. ou seja. por um só carácter. Suponhamos que operação ← “13+7” igual ← “=” resultado ← “20” podemos fazer a concatenação das três cadeias tudo ← operação + igual + resultado tudo = “13+7=20” Foi obtida uma nova cadeia que está atribuída à variável tudo. assim tudo ← operação + resultado + igual tudo = “13+720=” Agora obtivemos uma cadeia diferente da anterior. João do Estoril Ensino Recorrente .

A condição de igualdade entre duas cadeias é verdadeira se forem cumpridas duas condições: . ou seja. arg2. . 2. arg3 . Pode-se dizer qual está antes ou depois de um determinado carácter. Exemplo: nome1 ← “A2eda” nome2 ← “A2eda” nome3 ← “Ae2da” logo nome1 = nome2. 3. Comprimento Uma outra operação com cadeias é a determinação do seu comprimento. arg2 . 2) = “e2” sub(“A2eda”. Subcadeia Esta operação permite extrair uma subcadeia a partir de uma outra cadeia maior. arg3) arg1 . Vamos designá-la por sub e comporta três argumentos conforme se apresenta seguidamente: sub(arg1.Ensino Recorrente .para a mesma posição de ordem de cada uma das cadeias está o mesmo carácter. uma vez que aos caracteres foi estabelecida uma relação de ordem (ver tabela ASCII).é a posição na cadeia em que inicia a subcadeia. 40 Unidade 1 . Vamos designar esta operação por comp.Programação de Computadores Escola Sec.o número de caracteres das duas cadeias é igual. mas nome3 ≠ nome1.Algoritmia Alexandre Alcobia . o número de caracteres que a cadeia comporta. Também se podem estabelecer outras relações de ordem como maior (posterior) e menor (anterior) da mesma forma como se encontram ordenadas num dicionário ou lista telefónica. Exemplo: t ← comp(nome1) então. uma vez que a cadeia em nome1 tem cinco caracteres.comprimento da subcadeia.é a cadeia da qual pretendemos a subcadeia. 2) = “ed” Há que tomar atenção de que a contagem dos caracteres na cadeia é feita da esquerda para a direita. de S. Exemplos: sub(nome3. João do Estoril Comparação Podem-se comparar cadeias de caracteres. t ficará com o valor 5.

3]/tamanho Sair alfabeto[linha.3] ← alfabeto[linha.coluna] = sub(texto. isto é. Produza um algoritmo para a determinação da frequência com que cada letra aparece numa cadeia de caracteres dada. Algoritmo Letras Quadro caracter alfabeto [26..Programação de Computadores A seguir vamos apresentar um algoritmo que extrai o primeiro nome a partir do nome dado de uma pessoa. João do Estoril Ensino Recorrente . tamanho..] linha ← 1 Repetir [. Algoritmo Tirar apelido caracter nome. Z z 0 Este quadro tem 3 colunas e número de linhas igual ao número de letras Início Entrar texto do alfabeto. assinala a sua posição na cadeia] Se sub(nome.coluna] = sub(texto. Vamos supor que o nome é introduzido.3] ← alfabeto[linha. posição) [retira a subcadeia desde posição até ao fim] Sair apelido Fim Exercícios 1. outra o alfabeto em maiúsculas e a terceira coluna vai receber a quantidade de ocurrências da respectiva letra. . apelido inteiro comprimento. comprimento.1) então alfabeto[linha. com um espaço entre os nomes..posição. . posição A a 0 B b 0 C c 0 D d 0 .coluna] = sub(texto. posição. 1) = “ “ então posição ← comprimento Fim se Seguinte posição ← posição + 1 [adiciona 1 porque o espaço não interessa] apelido ← sub(nome. Seguinte [Percorrer toda a cadeia texto] Para posição ← 1 até tamanho fazer coluna ← 1 Repetir [Para cada coluna. de S.3] + 1 Fim se linha ← linha + 1 Até (linha > 26) ∨ (alfabeto[linha.3] Seguinte Fim Alexandre Alcobia Unidade 1 . . somente. coluna.2] Sair alfabeto[linha. verifica todas as linhas até encontrar] Se afabeto[linha. . .1)) coluna ← coluna + 1 Até (coluna > 2) ∨ (alfabeto[linha. . nunca aparecem espaços no início nem no fim.posição.3] ← 0 terá de ter valor inicial de zero.3] caracter texto inteiro linha.posição. tamanho Início Entrar nome tamanho ← comp(nome) [Verifica em todo o comprimento da cadeia a posição do último espaço] Para comprimento ← 1 até tamanho fazer [Se encontra um espaço. Como temos que comparar com o alfabeto em maiúsculas e minúsculas partimos de um quadro com três colunas: uma contém o alfabeto em minúsculas. tamanho ← comp(texto) As duas primeiras colunas têm o [Inicializar a coluna 3 do quadro] alfabeto maiúsculo e minúsculo e a Para linha ← 1 até 26 fazer terceira o número de ocurrências que alfabeto[linha.1)) Seguinte Para linha ← 1 até 26 fazer alfabeto[linha..Algoritmia 41 . . .Escola Sec.

a partir do nome de pessoas.posição. A segunda estrutura PARA é para percorrer toda a cadeia de caracteres que está na variável texto. também. que quando encontre a letra no quadro para a pesquisa e passe ao carácter seguinte na cadeia texto.. A última estrutura PARA é para calcular a frequência relativa da ocorrência de cada letra e apresentar o carácter e o valor da sua frequência no ecrã. 3. 2. Suponha que essa operação não está disponível.1)) nas estruturas REPETIR. Crie um algoritmo que faça a operação referida. Sugerimos a análise do algoritmo Tirar apelido..Algoritmia Alexandre Alcobia .Ensino Recorrente ..ATÉ servem para percorrer todo o quadro à procura da letra correspondente e adicionar cada ocorrência na terceira coluna do quadro na respectiva linha da letra. aparece condição (alfabeto[linha. Por isso. João do Estoril A primeira estrutura PARA serve para inicializar a terceira coluna do quadro para garantir que está tudo a zeros. Construa um algoritmo que. As estruturas REPETIR. No estudo das cadeias de caracteres indicámos que uma das operações seria comp(cadeia) que devolvia o número de caracteres da cadeia. Pretende-se.coluna] = sub(texto..Programação de Computadores Escola Sec. dê somente o primeiro e último nome.ATÉ. 42 Unidade 1 . de S.

este sim. de S.Algorithmic Language BASIC . pelo que terá de recorrer sempre ao programa fonte. este é compilado produzindo um programa em linguagem máquina chamado programa objecto. isto é. Posteriormente. De uma forma genérica. trata-se de uma linguagem de alto nível interpretada. surgiram programas que usavam linguagens mais desenvolvidas e mais próximas da linguagem falada (em geral inglês) e independentes da estrutura da máquina. pode ser usado. escolhe-se a linguagem conveniente e procede-se à fase de implementação para que possa realmenter ser usado num computador. depois. por outro lado. Esses programas eram conhecidos como assembladores (do inglês assembler) que traduziam uma linguagem mais próxima da humana para a linguagem máquina. texto legível pelo programador. em linguagem máquina. Exemplos de linguagens de alto nível: FORTRAN . Para facilitar o trabalho de programação. No entanto. tendo em conta o tipo de problema tratado. depois. podemos dizer que há duas maneiras destes programas fazerem atradução para a linguagem máquina: temos os compiladores que produzem um programa em linguagem máquina e que.Algoritmia 43 .Escola Sec.Formula Translation ALGOL . temos os interpretadores que vão traduzindo o texto escrito na linguagem de alto nível enquanto este é executado. temos o QuickBASIC. Esta foi a linguagem usada nos primeiros computadores e só especialistas poderiam programar essas máquinas. ao qual o leitor terá fácil acesso através do conhecido MS-DOS. Este programa objecto não é legível para o programador. A esta linguagem dá-se o nome de linguagem máquina.Programação de Computadores Linguagens de programação Os computadores comunicam em código binário. Estas linguagens são conhecidas como linguagens de alto nível. João do Estoril Ensino Recorrente . o TurboPascal é compilado. os programas e os dados têm de ser em código binário para que a máquina os possa entender. Depois. No início da unidade vimos que a criação de um programa passa pela construção do algoritmo do problema em estudo e. Para exemplo. foram desenvolvidos programas tradutores que transformavam um código feito numa linguagem mais compreensível por humanos. pois permitem que o programador não necessite de ter algum conhecimento sobre o funcinamento interno do computador.Beginner’s All-pourpouse Simbolic Instruction Code COBOL .Common Busyness Oriented Language Pascal C++ Alexandre Alcobia Unidade 1 . A construção de um programa compilado implica a criação de um programa fonte que é o texto na linguagem de alto nível.

Sign up to vote on this title
UsefulNot useful