P. 1
Ensino Recorrente - Programação de Computadores - Algoritmo

Ensino Recorrente - Programação de Computadores - Algoritmo

|Views: 88|Likes:
Publicado porrwpp20017757

More info:

Published by: rwpp20017757 on Sep 02, 2011
Direitos Autorais:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/06/2014

pdf

text

original

Sections

  • Algoritmo
  • Criar um programa de computador
  • Linguagem algorítmica
  • Estrutura de decisão I
  • Tipos de dados
  • Estratégia Top-Down
  • Operações elementares
  • Prioridade das operações
  • Estrutura de decisão II
  • Estruturas de Repetição
  • Erros
  • Quadros e vectores
  • Cadeias de caracteres (Strings)
  • Linguagens de programação

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

de S. Inicia-se com a palavra "Início" e termina com "Fim". Eles servem para tornar a leitura. Começa com a palavra "Algoritmo". Os comentários são uma parte importante do algoritmo. João do Estoril Ensino Recorrente . perímetro Fim Num algoritmo. Corpo Esta secção contém a sequência dos passos (acções) do algoritmo. Comentários Cada passo do algoritmo pode iniciar com um comentário entre dois parênteses rectos.14159 Início Entrar raio área ← PI x raio2 perímetro ← 2 x PI x raio Sair área. podemos definir três secções: Cabeçalho O cabeçalho é a secção onde é dado o nome ao algoritmo.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. Alexandre Alcobia Unidade 1 . do algoritmo. perímetro PI ← 3. mais fácil e clara. Existe um tipo de objecto de grande importância na clarificação de um algoritmo.Escola Sec.Algoritmia 5 . é apresentada a descrição das variáveis usadas. 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. Declarações Nesta.

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. o desenvolvimento de algoritmos. a utilização do fluxograma restringe-se a um apoio complementar na documentação do algoritmo. valendo pela vantagem gráfica da apresentação das interligações.Ensino Recorrente . 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.Algoritmia Alexandre Alcobia . 6 Unidade 1 . Actualmente. apresente os algoritmos em pseudolinguagem e faça os respectivos fluxogramas. graficamente. João do Estoril Fluxogramas Esta técnica surge para representar.

conforme esse valor o algoritmo segue uma acção ou segue outra em alternativa.Escola Sec. 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.Programação de Computadores Estrutura de decisão I Até agora temos estado a lidar com algoritmos puramente sequênciais. compostas por várias palavras. João do Estoril Ensino Recorrente . No entanto existem estruturas que permitem a tomada de decisões em função de condições estabelecidas e assim. 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. mas formando um todo. o algoritmo apresenta acções alternativas. A Sim condição Não acção1 acção2 B Alexandre Alcobia Unidade 1 . Estas condições podem ser verdadeiras ou falsas. isto é. geralmente. de S.Algoritmia 7 .

3. 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.Ensino Recorrente .Programação de Computadores Escola Sec.Sair no ecrã: "Equação indeterminada" ( x = − 0 ) Se B<>0 . 8 Unidade 1 . Sabe-se. temos: 1.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. Faça a discussão da equação do 1º grau A equação do primeiro grau é do tipo Ax+B=0. 4. João do Estoril Exercícios 1. por sua vez. 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. Sabemos que no turno de dia será pago a 750$00 por hora. também. Caso seja não se pode determinar. O valor é em função da distância percorrida e do valor por quilómetro que. 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. Então. temos: 2. Se A=0 Se B=0 . como se indica a seguir: .Algoritmia Alexandre Alcobia .motor de cilindrada inferior a 2000cm3 será financiado a 3$00 por quilómetro . A fórmula para o cálculo do valor será: ajuda de custo = valor por quilómetro * distância percorrida 3. de S.motor de cilindrada superior ou igual a 2000cm3 será financiado a 3$50 por quilómetro. 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. 2. No turno da noite será pago a 1000$00 por hora. é função da motorização do veículo (cilindrada do motor).

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

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

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

Vai-se.1 Pesar a tigela e memorizar o seu peso 2. de S.2 Trazer a balança 1. Deste modo parte-se da construção de um algoritmo genérico com um número mínimo de passos genéricos. 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. É uma estratégia usada na resolução de erros. Consiste em partir do particular para o genérico.1 Guardar o saco de arroz 3. Trazer os materiais 2. Guardar os materiais Vamos refinar o primeiro passo do algoritmo genérico: 1.1 Trazer o saco da arroz 1. Esta estratégia é conhecida pelo nome Top-Down. construindo algoritmos mais detalhados (refinação do genérico).2 Pôr alguma arroz na tigela 2. João do Estoril Estratégia Top-Down Nos problemas anteriores. Definimos um algoritmo genérico que corresponda à solução que pretendemos: 1. Pesar a arroz 3.Ensino Recorrente . 12 Unidade 1 . retira algum arroz da tigela O terceiro passo do algoritmo seria: 3. Adiciona algum arroz à tigela Doutro modo. 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. desenvolver os passos mais complexos.Programação de Computadores Escola Sec. sucessivamente.3 Trazer a tigela O segundo passo poderia ser: 2. não só. Como exemplo vamos desenvolver um algoritmo da pesagem de 1kg de arroz para uma tigela.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. informáticos. É uma estratégia a aplicar à resolução de problemas em geral e.2 Guardar a balança Existe a estratégia Bottom-Up em contrapartida com a Top-Down.Algoritmia Alexandre Alcobia .

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

Algoritmia Alexandre Alcobia .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.Programação de Computadores Escola Sec. João do Estoril Operadores lógicos Definições a e b são proposições 0 . de S.valor falso 1 .Ensino Recorrente . b = António é professor A disjunção exclusiva de a com b lê-se: ou a ou b. 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. 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.

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

Programação de Computadores Escola Sec.Algoritmia Alexandre Alcobia . 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. 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. pelo que se terá de recorrer a várias estruturas SE encadeadas.”w”..Ensino Recorrente .”b”: frase ← “Primeiras letras” “k”. Em pseudocódigo. temos uma estrutura de decisão composta ou decisão múltipla que vai tornar a leitura do algoritmo mais fácil. de S. Essa estrutura é conhecida pela estrutura CASO. O encadeamento das estruturas SE traz dificuldade na interpretação do algoritmo.. Neste caso. apresentará a seguinte forma: Caso variável opção1: acção1 opção2: acção2 .”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”.

Escola Sec. Construa o algoritmo da discussão da equação do segundo grau usando a estrutura CASO. ser-lhe-ão pedidos os dados referentes à figura e produzir-se-á o cálculo do valor da área que será apresentado no ecrã. Construa os fluxogramas dos algoritmos dos exercícios anteriores.Programação de Computadores Exercício 1. de S. -binómio discriminante = 0 Tem solução dada por − b ± b 2 − 4ac 2a x= −b 2a 3. Alexandre Alcobia Unidade 1 . 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 .Algoritmia 17 . Descreva o que faz o seguinte algoritmo. A partir de um menu em que são apresentadas as figuras geométricas disponíveis. 4. Construa um algoritmo que disponha do cálculo do valor da área de três figuras geométricas. De seguida. 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. o utilizador escolherá a pretendida.binómio discriminante < 0 Não tem solução nos reais. temos três situações: .binómio discriminante > 0 Tem solução dada por x= . João do Estoril Ensino Recorrente . Assim. O utilizador escolherá uma das três figuras disponíveis a tratar e o algoritmo produzirá o valor da área.

Ensino Recorrente .é repetida muitas vezes. A condição será testada depois de realizada a acção.Programação de Computadores Escola Sec. de S.Algoritmia Alexandre Alcobia . As estruturas de repetição são construções fundamentais e podem ocorrer numa variedade de formas.ou uma série de operações . Limite. a acção realizar-se-á pelo menos uma vez. A Não Condição Sim B Algoritmo múltiplos inteiro Número. a produção de ciclos. 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. REPETIR .. Limite Múltiplo ← Número Repetir SAIR Múltiplo Múltiplo ← Múltiplo + Número até Múltiplo >= Limite Fim 18 Unidade 1 . Portanto. 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. João do Estoril Estruturas de Repetição Os computadores são particularmente bem adaptados a aplicações nas quais uma dada operação . ou seja.. Múltiplo Apresentamos um exemplo.

se for falsa já não se produz a acção. Assim. de S. REPETIR... A estrutura REPETIR . REPETIR. para ENQUANTO ~condição .Programação de Computadores ENQUANTO .. Basta mudar de REPETIR . João do Estoril Ensino Recorrente ... REPETIR Esta apresenta a seguinte formulação em pseudocódigo: Enquanto condição fazer acção repetir Neste caso... a acção repete-se enquanto a condição for verdadeira.Escola Sec. 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 . ATÉ condição. ATÉ pode ser realizada utilizando a estrutura ENQUANTO ... Se a condição for verdadeira produz-se a acção..Algoritmia 19 . A condição é testada antes de se iniciar a acção.

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. por defeito. SEGUINTE Por último.Algoritmia Alexandre Alcobia . Algoritmo Números Primos [Vamos verificar se é primo] inteiro número. isto é..Ensino Recorrente . O passo é de utilização opcional.Programação de Computadores Escola Sec. 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. João do Estoril PARA. Se não for declarado é. acção B 20 Unidade 1 . mas podemos adoptar a seguinte.. 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. Vamos ver o algoritmo para verificar se um número é ou não primo. de S. O valor do incremento (ou decremento) é dado pelo valor positivo (ou negativo) de n. de uma unidade.

o fluxograma fica como o apresentado ao lado. Vejamos: Algoritmo Números Primos [Vamos verificar se é primo] inteiro número.Algoritmia 21 . variavel =< v_final Sim Acção Não variavel ← variavel + 1 B Alexandre Alcobia Unidade 1 .. 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. de S..Escola Sec.Programação de Computadores Aqui é apresentada uma aplicação desta estrutura. João do Estoril Ensino Recorrente . pode-se considerar uma variante da estrutura ENQUANTO. A não indicação do passo leva a que o valor seguinte de contagem será o valor anterior mais um. Esta estrutura PARA . Dentro do ciclo. A variavel ← v_inicial Usando a estrutura ENQUANTO.. é 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 variável contagem é utilizada como contador. isto é.

Ensino Recorrente . 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 .Programação de Computadores Escola Sec.Algoritmia Alexandre Alcobia . João do Estoril Fluxograma do algoritmo Número primo usando a estrutura ENQUATO. de S.

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

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

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

difíceis de detectar porque reflectem uma incorrecta elaboração do algoritmo. este processo é denominado debugging e aos erros dá-se o nome de bugs. Ao processo de detecção e correcção de erros dá-se o nome de depuração. Pelo quadro. São erros. A tabela seguinte mostra o teste para um outro número escolhido por nós. 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).Ensino Recorrente . tem de comportar os casos particulares do problema posto.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. sabemos que o algoritmo produz a resposta certa. do algoritmo. em geral. número 1 2 1. 26 Unidade 1 . João do Estoril A tabela apresentada. Em inglês. mostra o funcionamento do algoritmo e os valores que vai produzindo para um número escolhido que é o três que sabemos ser primo.Programação de Computadores Escola Sec. de S.1 1 2 1. Um teste completo.Algoritmia Alexandre Alcobia .1 1 3. agora o quatro que sabemos não ser primo e o algoritmo produz o resultado esperado.

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

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. transforme a estrutura PARA. basta encontrar um valor que divida o número para acabar a estrutura PARA.. Como exercício. de S.. Esta. Valide a sua escolha com a verificação numa trace table.. 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. Vimos nos operadores lógicos que na conjunção basta uma proposição ser falsa para que a condição seja falsa. Vejamos a tabela de verdade para as condições postas.Ensino Recorrente . temos Escola Sec. Assim. 28 Unidade 1 . numa estrutura ENQUANTO..Programação de Computadores Para o segundo aspecto referido..Algoritmia Alexandre Alcobia . do algoritmo anterior.

.. dos alunos de uma turma. de S.Algoritmia 29 ..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”.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.. . nota2 SNotas ← SNotas + nota2 ... João do Estoril Ensino Recorrente ..” 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..Programação de Computadores Quadros e vectores Suponhamos que queremos analizar as notas.nota2.” 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 .” 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 .... Para tal. construimos o seguinte algoritmo. nota1 SNotas ← SNotas + nota1 Entrar “Introduza a nota”. nota20 SNotas ← SNotas + nota20 [Cálculo da média] media ← SNotas / 20 Sair “A média é”. numa disciplina... 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. Se nota20 = media então [Apreciação para o aluno 20] comentario ← “O aluno 20 está na média..... Entrar “Introduza a nota”.Escola Sec........

sendo a turma de vinte alunos logo temos de criar vinte varáveis para as notas. 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. 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.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.nota. deparamos com uma sequência idêntica de estruturas SE. Isto perfaz vinte estruturas semelhantes.”.Programação de Computadores Escola Sec.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”. 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. Na apreciação qualitativa em relação à média. nota SNotas ← SNotas + nota Seguinte [Cálculo da média] media ← SNotas/NAlunos Sair “A média é”.Algoritmia Alexandre Alcobia .Ensino Recorrente . NAlunos [Introdução das notas dos alunos] Para contador ← 1 até NAlunos fazer Entrar “Introduza a nota”. mas ter-se-ía de intorduzir duas vezes as notas dos alunos. ou outros. de S. Não seria nada prático. A escrita de um programa com estas características é muito fastidioso.NAlunos. numero Entrar “Introduza a nota do aluno”. 30 Unidade 1 . nota Se nota = media então comentario ← “Este aluno está na média. poderíamos ultrapassar o problema usando a mesma variável para as notas dos alunos e usando a estrutura PARA. De qualquer modo. isto é.SNotas.

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

. A estrutura REPETIR...SNotas. serve para encher o vector com as notas dos alunos..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 é”. Seguinte contador É claro que não corre o quadro todo. começamos por verificar que usa um vector (quadro unidimensional) de inteiros com trinta posições: Quadro Inteiro nota[30]..Programação de Computadores Escola Sec. de S.. 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. 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.” 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.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. 32 Unidade 1 .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. Para numero ← 1 até NAlunos . 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] . mas só a quantidade de posições que NAlunos contém.Ensino Recorrente .”. A estrutura PARA que aparece a seguir.Algoritmia Alexandre Alcobia .

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

Vejamos. João do Estoril Este algoritmo tem uma operação especial a que chamámos Troca que vai realizar a troca pretendida.Algoritmia Alexandre Alcobia . mais uma vez.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.Programação de Computadores Escola Sec. a estrutura PARA. É necessário fazer correr. mostra-nos que este algoritmo não chega. Repetir trocas ← falso Para coluna ← 1 até 4 fazer Se Idade[coluna] > Idade[coluna+1] então Troca (Idade[coluna]. no quadro seguinte. o que se passa a cada incremento da variável coluna na estrutura PARA. Uma análise mais atenta. de S. Portanto.Ensino Recorrente . o algoritmo só deve acabar quando a estrutura PARA correr o vector e não acontecer alguma troca de valores. 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 . 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.

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

Como já vimos anteriormente. um standard muito usado na microinformática conhecido pelo código ASCII (American Standard Code for Information Interchange). Deste modo podemos representar números ou símbolos como. Os números são o código do carácter que está ao lado . 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. 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. 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. de S.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. Diz-se código binário porque é baseado na utilização de dois símbolos (0 e 1). 36 Unidade 1 . entre outras. Na máquina será: há energia / não há energia.é claro que o número está em base dez por conversão do código binário.Algoritmia Alexandre Alcobia .Programação de Computadores Escola Sec. por exemplo o carácter # será Alt + 35. Estes são codificados em código binário porque é a linguagem que a máquina conhece. É claro que a codificação é convencional e existe. assim pode estabelecer uma ordem aos caracteres que usa. Estas variam porque incluem caracteres específicos para compatibilizar com as diversas línguas. Na página seguinte é apresentada uma tabela dos caracteres standard desse código. apareceram extensões ao código que vão do 128 até ao 255. O computador pode ordenar os caracteres. se ordenado seria “cinco espaços1Aaaaaaabcddeeinrstu”. por exemplo: binário .Ensino Recorrente . Como exemplo temos “A unidade 1 esta a acabar”. o computador trata frases como uma cadeia de caracteres alinhados e passíveis de serem ordenados. por ser necessário.

Programação de Computadores ASCII Standard Os primeiros 32 characters (0-31) são códigos de control. 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.Escola Sec. / 0 1 2 3 4 5 6 7 8 9 : . João do Estoril Ensino Recorrente . acknowledge Synchronous idle End trans. de S. . 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 ! “ # $ % & ‘ ( ) * + .Algoritmia 37 . < = > ? @ 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 .

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

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

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

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.Escola Sec. .3] Seguinte Fim Alexandre Alcobia Unidade 1 . nunca aparecem espaços no início nem no fim. .3]/tamanho Sair alfabeto[linha.. verifica todas as linhas até encontrar] Se afabeto[linha. 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. somente. apelido inteiro comprimento.. outra o alfabeto em maiúsculas e a terceira coluna vai receber a quantidade de ocurrências da respectiva letra. coluna. .coluna] = sub(texto. . Produza um algoritmo para a determinação da frequência com que cada letra aparece numa cadeia de caracteres dada. João do Estoril Ensino Recorrente .1)) coluna ← coluna + 1 Até (coluna > 2) ∨ (alfabeto[linha. .Algoritmia 41 . Vamos supor que o nome é introduzido.posição. . Seguinte [Percorrer toda a cadeia texto] Para posição ← 1 até tamanho fazer coluna ← 1 Repetir [Para cada coluna. . 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.3] ← alfabeto[linha.3] ← 0 terá de ter valor inicial de zero. com um espaço entre os nomes..posição. comprimento.3] ← alfabeto[linha. Algoritmo Tirar apelido caracter nome.1)) Seguinte Para linha ← 1 até 26 fazer alfabeto[linha. de S. assinala a sua posição na cadeia] Se sub(nome. 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. 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.coluna] = sub(texto.3] + 1 Fim se linha ← linha + 1 Até (linha > 26) ∨ (alfabeto[linha. . posição. isto é.Programação de Computadores A seguir vamos apresentar um algoritmo que extrai o primeiro nome a partir do nome dado de uma pessoa.posição.1) então alfabeto[linha.] linha ← 1 Repetir [.coluna] = sub(texto.2] Sair alfabeto[linha. posição) [retira a subcadeia desde posição até ao fim] Sair apelido Fim Exercícios 1.3] caracter texto inteiro linha. tamanho. Algoritmo Letras Quadro caracter alfabeto [26.. posição A a 0 B b 0 C c 0 D d 0 .

3. João do Estoril A primeira estrutura PARA serve para inicializar a terceira coluna do quadro para garantir que está tudo a zeros.ATÉ. As estruturas REPETIR. Por isso. 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.Ensino Recorrente . também. a partir do nome de pessoas. Construa um algoritmo que. aparece condição (alfabeto[linha. A segunda estrutura PARA é para percorrer toda a cadeia de caracteres que está na variável texto.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.Programação de Computadores Escola Sec. dê somente o primeiro e último nome.coluna] = sub(texto.posição...Algoritmia Alexandre Alcobia . 42 Unidade 1 . 2. que quando encontre a letra no quadro para a pesquisa e passe ao carácter seguinte na cadeia texto. Suponha que essa operação não está disponível.. Sugerimos a análise do algoritmo Tirar apelido. Pretende-se.. 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ã. Crie um algoritmo que faça a operação referida. de S.1)) nas estruturas REPETIR.

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

You're Reading a Free Preview

Descarregar
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->