Você está na página 1de 21

Representao de Algoritmos

As formas mais comuns de representao de algoritmos so as seguintes: Linguagem Natural Os algoritmos so expressos diretamente em linguagem natural, como nos exemplos anteriores. Fluxograma Convencional Esta um representao grfica que emprega formas geomtricas padronizadas para indicar as diversas aes e i decises que devem ser executadas para resolver o problema. Pseudo-linguagem Emprega uma linguagem intermediria entre a linguagem natural e uma linguagem de programao para descrever os algoritmos. No existe consenso entre os especialistas sobre qual seria a melhor maneira de representar um algoritmo. Atualmente a maneira mais comum de representar-se algoritmos atravs de uma pseudo-linguagem ou pseudo-cdigo. Esta forma de representao tem a vantagem de fazer com que o algoritmo seja escrito de uma forma que est prxima de uma linguagem de programao de computadores. Algoritmo de encontrar a menor temperatura dentro de registros de temperaturas mostrada na seo anterior usou linguagem natural para representar o algoritmo.

Linguagem Natural
Como ilustrao de algoritmo em linguagem natural vamos considerar a receita abaixo. Por economia de texto e facilidade a receita no mostra as quantidades dos ingredientes (as entradas). Alguns mais maldosos dizem que o cozinheiro no quis divulgar o seu segredo. Fil de peixe com molho branco. {preparo dos peixes} Lave os fils e tempere com o suco dos limes, sal, pimenta e salsinha picada. Deixe por 1/2 hora neste tempero. Enxugue e passe cada fil na farinha de trigo. Depois passe pelos ovos batidos e frite na manteiga at ficarem dourados dos dois lados.

{preparo do molho branco} Coloque numa panela a manteiga, a farinha e o leite e misture bem. Em fogo mdio, cozinhe at engrossar. Adicione o sal, a pimenta e o

queijo. Continue com a panela no fogo, cozinhando at que o queijo derreta, mexendo constantemente. {juntando os dois} Adicione queijo parmeso ralado e queijo gruyre. Misture e ponha sobre os fils.

Fim da receita do fil de peixe com molho branco.

Observe que a receita foi subdividida em partes: preparo dos peixes, preparo do molho branco e finalmente juntar as duas partes. Esta uma tcnica comum na resoluo de problemas: dividir para conquistar. Vamos considerar agora uma outra receita que tenha molho branco como parte, para ilustrar uma outra tcnica comum da criao e descrio de algoritmos. A prxima receita esta: Alface com molho branco. {preparo do molho branco} Coloque numa panela a manteiga, a farinha e o leite e misture bem. Em fogo mdio, cozinhe at engrossar. Adicione o sal, a pimenta e o queijo. Continue com a panela no fogo, cozinhando at que o queijo derreta, mexendo constantemente.

{preparo da alface} Derreta a manteiga. Junte a alface cortada. Salpique o sal e deixe cozinhar por uns 5 a 10 minutos ou at a alface ficar tenra, ou o lquido da panela secar.

{juntando os dois} Junte ao molho branco e ao suco de limo. Coloque numa travessa e enfeite em volta com po torrado cortado em tringulos.

Fim da receita do alface com molho branco

Imagine que os pratos abaixo fazem parte de um livro de receitas. Observe atentamente as receitas. Perceba que os dois pratos usam molho branco e que, as duas receitas, ensinam ao leitor como preparar molho branco. Imagine que este livro de receitas tem 20 outros pratos ao molho branco. fcil perceber que este livro ter numerosas pginas uma vez que, provavelmente, outras receitas bsicas (molho de tomate, molho de mostarda, etc.) estaro repetidas em vrios pontos do livro. Observe agora uma nova maneira de descrever estas duas receitas: Molho branco Coloque numa panela a manteiga, a farinha e o leite e misture bem. Em

fogo mdio, cozinhe at engrossar. Adicione o sal, a pimenta e o queijo. Continue com a panela no fogo, cozinhando at que o queijo derreta, mexendo constantemente. Fim da receita do molho branco Fil de peixe com molho branco {preparo dos peixes} Lave os fils e tempere com o suco dos limes, sal, pimenta e salsinha picada. Deixe por 1/2 hora neste tempero. Enxugue e passe cada fil na farinha de trigo. Depois passe pelos ovos batidos e frite na manteiga at ficarem dourados dos dois lados.

{preparo do molho branco} Prepare a receita bsica de molho branco.

{juntando os dois} Adicione queijo parmeso ralado e queijo gruyre. Misture e ponha sobre os fils.

Fim da receita do Fil de peixe com molho branco. Alface com molho branco {preparo do molho branco} Prepare o molho branco segundo a receita bsica.

{preparo da alface} Derreta a manteiga. Junte a alface cortada. Salpique o sal e deixe cozinhar por uns 5 a 10 minutos ou at a alface ficar tenra, ou o lquido da panela secar.

{juntando os dois} Junte ao molho branco e ao suco de limo. Coloque numa travessa e enfeite em volta com po torrado cortado em tringulos.

Fim da receita do Alface com molho branco.

Observe a economia de linhas de texto que foi possvel devido a separao da receita de molho branco das demais. Se o mesmo procedimento for seguido para as demais receitas bsicas, de se esperar que o livro fique mais "fininho" do que antes. Voc pode argumentar que, no mtodo anterior, era mais rpido seguir uma receita. Agora,

ao preparar o peixe ao molho branco, por exemplo, voc tem de interromper a leitura, marcar a pgina onde voc estava, abrir na pgina da receita de molho branco, aprender a prepar-lo e, ento, retornar receita do peixe. Voc tem razo, mas, alm da economia de papel, existem outras vantagens em separar a receita do molho branco. Imagine, por exemplo, que amanh voc descubra que o molho branco fica uma delcia se levar uma pitada de alho. Basta modificar a receita de molho branco, que aparece em um nico lugar no livro, e todas as receitas "ao molho branco" estaro automaticamente modificadas. No mtodo anterior, seria preciso modificar todas as receitas que usam molho branco, com o risco considervel de esquecermos de modificar alguma delas. Observe ainda a variao abaixo da receita do peixe: Fil de peixe com molho branco {preparo dos peixes} Lave os fils e tempere com o suco dos limes, sal, pimenta e salsinha picada. Deixe por 1/2 hora neste tempero. Enxugue e passe cada fil na farinha de trigo. Depois passe pelos ovos batidos e frite na manteiga at ficarem dourados dos dois lados.

{preparo do molho branco} Compre molho branco no supermercado

{juntando os dois} Adicione queijo parmeso ralado e queijo gruyre. Misture e ponha sobre os fils.

Fim da receita do fil de peixe com molho branco.

Voc prestou ateno? Ao invs de ensinar a preparar molho branco, a receita instrui voc a compr-lo pronto, no supermercado. Ou, em outras palavras, possvel usar no preparo do seu prato, ingredientes j prontos, preparados por outra pessoa, que voc talvez nem conhea. Alm disso, se voc no um cozinheiro experiente, o molho venda no supermercado j foi suficientemente testado e , provavelmente, gostoso. Embora, nem todos vo concordar com tal infmia! Voc j tem problemas suficientes tentando preparar um bom peixe. Talvez seja melhor usar o molho do supermercado e no ter de se preocupar com essa parte do problema. O uso de algoritmos criados por outros muito comum na informtica e pode reduzir consideravelmente o tempo de criao de um sistema. Toda a discusso acima tem uma forte analogia com o estudo de algoritmos e tcnicas de programao. Isto ficar mais claro para voc mais tarde, quando estudarmos procedimentos e funes. Para ilustrar mais um conceito importante de algoritmos vamos analisar mais um exemplo, considerando o problema de calcular a rea de uma mesa retangular. Este clculo pode ser efetuado se seguirmos os seguintes passos.

Clculo da rea de uma mesa. Medir a largura da mesa e anotar o resultado. Medir o comprimento da mesa e anotar o resultado. Multiplicar o comprimento pela largura e anotar o resultado. O valor da rea da mesa o resultado anotado no passo anterior.

Fim do clculo da rea da mesa.

Vamos supor agora que dispomos de uma mesa e de uma toalha cobrindo esta mesa e gostaramos de saber as reas da toalha e da mesa. O algoritmo pode ser escrito da seguinte maneira. Clculo das reas de uma mesa e de uma toalha. Clculo da rea de uma mesa. Medir a largura da mesa e anotar o resultado. Medir o comprimento da mesa e anotar o resultado. Multiplicar o comprimento pela largura e anotar o resultado. O valor da rea da mesa o resultado anotado no passo anterior.

Fim do clculo da rea da mesa. Clculo da rea da toalha. Medir a largura da toalha e anotar o resultado. Medir o comprimento da mesa e anotar o resultado. Multiplicar o comprimento pela largura e anotar o resultado. O valor da rea da toalha o resultado anotado passo anterior.

Fim do clculo da rea da toalha.

Fim do clculo das reas da mesa e da toalha.

Observe que os algoritmos para clculo da rea da mesa e da toalha so parecidos, trazendo a idia que existe um algoritmo mais geral que o de clculo da rea de um objeto retangular. Este algoritmo mais geral pode ser ento aplicado tanto mesa como toalha. Este algoritmo mais geral poderia ser descrito da seguinte maneira: Clculo da rea de um objeto retangular ou quadrado.

Medir a largura do objeto e anotar o resultado. Medir o comprimento do objeto e anotar o resultado Multiplicar o comprimento pela largura e anotar o resultado. O valor da rea e o resultado anotado no passo anterior.

Fim do clculo da rea de um objeto retangular ou quadrado.

O algoritmo para clculo da rea da mesa e da toalha poderia ser reescrito de forma mais compacta com as seguintes instrues: Calcular a rea da mesa usando o algoritmo acima. Calcular a rea da toalha usando o mesmo algoritmo.

Observe que neste caso um mesmo algoritmo pode ser aplicado a diferentes objetos, reduzindo o nmero de algoritmos a serem definidos. A maioria dos algoritmos contm decises, por exemplo, para atravessar uma rua preciso verificar se o sinal de pedestres est verde e verificar se nenhum carro est avanando o sinal, somente aps decidir se estes fatos se confirmaram poderei atravessar a rua. Para considerar um algoritmo que inclua decises vamos estudar um algoritmo que nos ajude a decidir o que fazer em um domingo. Um possvel algoritmo poderia ser o seguinte: Algoritmo de domingo. Acordar. Tomar o caf. Se estiver sol vou praia seno leio o jornal. Almoar. Ir ao cinema. Fazer uma refeio. Ir dormir.

Final do domingo.

A possibilidade de tomada de decises a caracterstica mais importante de qualquer linguagem de programao. Ela permite que ao computador simular aproximadamente uma caracterstica humana que a escolha de opes. Sem esta caracterstica o computador seria pouco mais do que uma veloz mquina de calcular. Vamos agora considerar um exemplo um pouco mais matemtico e estudar o algoritmo

para calcular as razes de uma equao do segundo grau da forma ax2+bx+c=0 As razes podem ser calculadas pelas frmulas x1=[-b+(b2-4ac)(1/2)]/(2a) x2=[-b-(b2-4ac)(1/2)]/(2a) Aparentemente o algoritmo se reduziria ao clculo da frmula, no entanto ao detalharmos as aes devemos prever tudo que pode acontecer durante o clculo desta frmula. Por exemplo o que fazer se o valor do coeficiente a for igual a zero? Um possvel algoritmo o seguinte: Algoritmo para clculo de uma equao do segundo grau. Obter os coeficientes a, b e c Se o coeficiente a for igual a zero informar que esta no uma equao do segundo grau e terminar o algoritmo. Caso contrrio continue e faa Calcular delta=b2-4ac Se o valor de delta for negativo informar que a equao no tem raizes reais e terminar o algoritmo. Caso contrrio continue e faa Calcular a raiz quadrada de delta e guardar o resultado como raiz Calcular x1=(-b + raiz)/(2a) Calcular x2=(-b - raiz)/(2a) Fornecer como resultado x1 e x2 Terminar o algoritmo.

Fim do algoritmo para clculo de uma equao do segundo grau.

Neste algoritmo em diversos pontos tivemos de tomar decises e indicar o que fazer em cada uma das possibilidades, mesmo que seja mostrar que no podemos continuar o algoritmo. Toda vez que decises tiverem de ser tomadas devemos incluir todas as possibilidades para o evento que estamos considerando. Este um dos possveis algoritmos por diversas razes. Por exemplo, poderamos incluir

no algoritmo o clculo das razes imaginrias ou no caso do coeficiente a ser igual a zero calcular como se fosse uma equao do primeiro grau.

Fluxogramas
Esta forma de representao de algoritmos emprega vrias formas geomtricas para descrever cada uma das possveis aoes durante a execuo do algoritmos. Existem algumas formas geomtricas que so empregadas normalmente e que esto mostradas na Figura abaixo. Cada uma destas formas se aplica a uma determinada ao como est indicado. Existem outras formas que podem ser aplicadas, no entanto nesta apostila estas formas sero suficientes para os exemplos que sero mostrados. Como primeiro exemplo de um algoritmo descrito por meio de fluxogramas vamos considerar o exemplo do algoritmo para decidir o que fazer em um dia de domingo. A Figura a seguir mostra o fluxograma equivalente descrio feita por meio da linguagem natural. Outro exemplo de um algoritmo descrito por meio de fluxogramas o problema de calcular a soluo da equao de primeiro grau ax+b=0 que vale x=-(b/a) se a for diferente de zero. A Figura abaixo mostra um possvel algoritmo para resolver este problema.

Pseudo Linguagem
Este modo de representar algoritmos procura empregar uma linguagem que esteja o mais prximo possvel de uma linguagem de programao de computadores de alto nvel mas evitando de definir regras de construo gramatical muito rgidas. A idia usar as vantagens do emprego da linguagem natural, mas restringindo o escopo da linguagem. Normalmente estas linguagens so verses ultra reduzidas de linguagens de alto nvel do tipo Pascal ou C. No prximo captulo veremos um exemplo de uma destas pseudolinguagens.

A Pseudo Linguagem a-Para escrever estes exemplos de algoritmos usaremos uma pseudo linguagem de programao, que chamaremos de a--. Nesta linguagem definimos um nmero mnimo de

comandos, o suficiente para descrever os algoritmos exemplos. Os dados no tem tipo definido, como em C e PASCAL. A linguagem como o C, que utilizado no resto do programa baseada em funes. Todos os algoritmos so descritos por funes, sendo que a funo bsica, e que deve existir sempre, pois ela sempre a primeira a ser executada a funo principal. Um exemplo simples da forma geral de um algoritmo em a-- o seguinte:
principal () incio imprimir "Alo mundo." fim

O algoritmo comea com a funo principal que a funo obrigatria em todos os algoritmos. Os parnteses aps o nome primcipal so normalmente usados para delimitar a lista de argumentos, tambm chamados parmetros que a funo ir receber para executar a sua tarefa. Neste caso a funo no est recebendo nenhum parmetro. Esta algoritmo executa um nico comando que imprime o texto "Alo mundo" em um dispositivo qualquer de sada de dados.

Tipos de Dados
Os algoritmos iro manipular dados, que normalmente so fornecidos pelos usurios, e entregar resultados para estes usurios. Uma pergunta importante neste momento : que tipo de dados poderemos manipular? As linguagens de programao normalmente estabelecem regras precisas para definir que tipos de dados elas iro manipular. A pseudolinguagem a-- tambm estabelece, ainda que informalmente, algumas regras que limitam o conjunto de dados existentes na natureza e que podero ser manipulados pelos algoritmos. Existem trs tipos bsicos de dados que a linguagem ir manipular: Dados numricos Dados alfa-numricos Dados Logicos

Dados Numricos Os dados numricos que os algoritmos podem manipular so de dois tipos: Dados inteiros Dados reais

O conjunto dos dados inteiros pode ser definido como Z={...,-3,-2,0,1,2,...}. O conjunto dos nmeros reais inclui o conjunto dos nmeros inteiros, dos nmeros fracionrios e dos

nmeros irracionais. O conjunto dos nmeros fracionrios pode ser formalmente definido como Q={p/q | p,q pertencem a Z}. O conjunto dos nmeros irracionais engloba aqueles que no podem ser representados por uma frao, por exemplo o nmero PI=3.141515... Os nmeros irracionais so armazenados at um certo nmero de casas decimais que o computador consegue representar a partir da as casas decimais so descartadas. Neste ponto importante lembrar que dois fatos importantes. Primeiro computadores trabalham com uma base diferente de 10. Computadores trabalham em base 2 e no processo de converso entre a base 10 e a base 2 podem ocorrer problemas de perda de dgitos significativos. Por exemplo, o nmero real 0.6 ao ser convertido para a base dois gera uma dzima peridica. Outro fato importante que a memria do computador limitada e portanto o nmero de dgitos binrios que podem ser armazenados funo deste tamanho. Deste modo o processo de converso e desconverso entre bases pode causar perda de informao. Os dados inteiros tem a seguinte forma: NmeroInteiro = [+,-]algarismo{algarismo} O sinal de + e - entre colchetes significa que um nmero inteiro pode ou no ter snal, isto o sinal opcional. Em seguida temos um algarismo que obrigatrio. Isto dados inteiros tem de ter pelo menos um algarismo. A seguir temos a palavra algarismo entre chaves, o que significa que um nmero inteiro deve ter pelo menos um algarismo e pode ser seguido por uma seqncia de algarismos. So portanto exemplos de nmeros inteiros:
+3 3 -324

Os dados reais tem a seguinte forma: [+,-]algarismo{algarismo}"."algarismo{algarismo}. Ou seja um nmero real pode ou no ter sinal, em seguida um conjunto de pelo menos um algarismo, um ponto decimal e depois um conjunto de pelo menos um algarismo. importante notar que o separador entre a parte inteira e a fracionrio o ponto e no a vrgula. So exemplos de nmeros reais:
0.5 +0.5 -3.1415

Dados Alfa-numricos Dados alfa-numricos servem para tratamento de textos e normalmente so compostos por

uma seqncia de caracteres contendo letras, algarismos e caracteres de pontuao. Nos algoritmos so normalmente representados por uma seqncia de caracteres entre aspas, por exemplo:
"Linguagem de programao" "Qual o seu nome?" "12345"

Dados Lgicos Este tipo de dados intensamente aplicado durante o processo de tomada de decises que o computador frequentemente obrigado a fazer. Em muitos textos este tipo de dados tambm chamado de dados booleanos, devido a George Boole, matemtico que deu ao nome lgebra (lgebra booleana) que manipula este tipo de dados. Os dados deste tipo somente podem assumir dois valores: verdadeiro e falso. Computadores tomam decises, durante o processamento de um algoritmo, baseados nestes dois valores. Por exemplo, considere a deciso abaixo:
Se raiz >= 0 imprima "Existe raiz" caso contrrio imprima "No existe raiz real."

Nesta instruo aparece a expresso raiz >= 0, que procura descobrir se o valor de raiz maior que 0. Esta expresso somente pode ter como resultado os valores: verdadeiro ou falso. Nos nossos algoritmos estes valores sero representados por verdadeiro e falso. Mais adiante ficar claro como este tipo de dados ser empregado nos algoritmos.

Variveis
So os nomes que utilizamos para referenciar as posies de memria. Como j foi mostrado no captulo de Introduo, a memria de um computador pode ser entendida como um conjunto ordenado e numerado de palavras. Na maioria dos PCs que usamos diariamente a memria pode ser considerada como um conjunto ordenado e numerado de bytes (8 bits). As linguagens de programao de alto nvel atribuem nomes as posies de memria que armazenam os dados a serem processados. Deste modo os programadores tem mais facilidade para construir seus algoritmos. Na linguagem a-- um nome de varivel contrudo da seguinte maneira: uma letra seguida por um conjunto de letras ou algarismos. Por exemplo, os nomes seguintes so nomes de variveis vlidos:
i valor nome

nota1

Como nomes invlidos podemos dar os seguintes exemplos:


2nota

(nome comeado por algarismo) (nome com espaos em branco no meio)

nome de aluno

Durante a apresentao da linguagem iremos fazer referncias a listas de variveis. Uma lista de variveis um conjunto de nomes de variveis separados por vrgulas, por exemplo: Ex. nota1, nota2, media Na linguagem a-- uma varivel no precisa ser definida antes de ser usada em um algoritmo. A varivel ir assumir, dinamicamente, o tipo do dado que estiver sendo atribudo a esta varivel. Por exemplo se armazenarmos o valor 5 em uma varivel ela passar a ser do tipo inteiro. Caso resolvamos trocar o valor para 3.14 a varivel passar a ser real.

Expresses
Uma vez que j temos os dados e as variveis podemos passar ao prximo estgio que seria a criao de expresses. No entanto, para que a expresso possa estar completa precisamos de operadores que possam ser aplicados a estes dados. Os operadores da linguagem a-- so basicamente os mesmos encontrados em outras linguagens de programao. Na linguagem a-- existem basicamente trs tipos de expresses: Expresses Aritmticas; Expresses Lgicas; Expresses Literais.

Cada um deste tipos tem os seus operadores prprios.

Expresses Aritmticas Expresses aritmticas so aquelas que apresentam como resultado um valor numrico que pode ser um nmero inteiro ou real, dependendo dos operandos e operadores. Os operadores aritmticos disponveis em a-- esto mostrados na Tabela a seguir. Operador + Descrio Soma Subtrao Prioridade 3 3

* / % + -

Multiplicao Diviso

2 2

Mdulo (Resto da diviso inteira) 2 Operador unrio (sinal de mais) 1

Operador unrio (sinal de menos) 1

A prioridade indica a ordem em que cada operao dever ser executada. Quanto menor o nmero maior a prioridade da operao. Observe que o operador de multiplicao o caracter asterisco, um smbolo que empregado na maioria das linguagens para esta operao. Expresses aritmticas podem manipular operandos de dois tipos: reais e inteiros. Se todos os operandos de uma expresso so do tipo inteiro ento a expresso fornece como resultado um nmero inteiro. Caso pelo menos um dos operandos seja real o resultado ser real. Isto pode parecer estranho a princpio, mas este procedimente reflete a forma como as operaes so executadas pelos processadores. Por exemplo o resultado da operao 1/5 0, porque os dois operadores so inteiros. Caso a expresso tivesse sido escrita como 1.0/5 ento o resultado 0.2 seria o correto. A seguir mostramos exemplos de algumas expresses aritmticas:
A+B-C a/b 3.14*(A+B)

Observar que as expresses somente podem ser escritas de forma linear, isto o sinal de diviso uma barra inclinada. Portanto fraes somente podem ser escritas conforme o exemplo acima (a/b). Outro ponto importante a ordem de avaliao das expresses, as prioridades mostradas na Tabela dos operadores no suficiente para resolver todas as situaes e precisamos apresentar algumas regras adicionais: Deve-se primeiro observar a prioridade dos operadores conforme a Tabela dos operadores, ou seja operadores com maior prioridade (nmeros menores) so avaliados primeiro. Caso haja empate na ordem de prioridade resolver a expresso da esquerda para a direita. Parnteses servem para mudar a ordem de prioridade de execuo das operaes. Quando houver parnteses aninhados (parnteses dentro de parnteses) as expresses dentro dos mais internos so avaliadas primeiro. Vamos considerar alguns exemplos para mostrar como estas regras so aplicadas. Considere as seguintes variveis:
A=2.0

B=4.0 C=1.0

Vamos ento analisar expresses com estas variveis e seus resultados.


A*B-C A*(B-C) B+A/C+5 (B+A)/(C+5)

A primeira expresso tem como resultado o valor 7, como era de se esperar. Na segunda expresso a ordem de avaliao alterada pelo parnteses e primeiro feita a subtrao e o resultado passa ser 6. A primeira operao na terceira expresso a diviso que tem maior prioridade. Neste caso o resultado final 11. Na ltima expresso as somas so realizadas primeiro e por ltimo a diviso, ficando o resultado igual a 1.

Expresses Lgicas Expresses lgicas so aquelas cujo resultado pode somente assumir os valores verdadeiro ou falso. Os operadores lgicos e sua ordem de precedncia so mostrados na Tabela a seguir. Operador
ou e no

Descrio Ou lgico E lgico No lgico

Prioridade 3 2 1

Estes operadores e seus dados tambm possuem uma espcie de tabuada que mostra os resultados de operaes bsicas. A Tabela a seguir mostra os resultados da aplicao destes operadores duas variveis lgicas.
A falso falso verdadeiro verdadeiro B falso verdadeiro falso verdadeiro A ou B falso verdadeiro verdadeiro verdadeiro A e B falso falso falso verdadeiro no A verdadeiro verdadeiro falso falso

H ainda um outro tipo de operadores que podem aparecer em expresses lgicas que so os operadores relacionais. Estes operadores esto mostrados na Tabela a seguir.

Operador > < >= <= == !=

Descrio maior que menor que maior ou igual a menor ou igual a igual a diferente de

Alguns exmplos de expresses lgicas so:


(A e B) ou C (A < 5) ou (b < 3)

Comandos
Agora iremos apresentar uma srie de definies informais dos comandos da linguagem a--.

Lista de comandos: <lista de comandos> Uma seqncia de comandos vlidos da linguagem. Em cada linha somente pode haver um comando. Veremos que em alguns casos especiais um comando pode se extender por mais de uma linha.

Comando de atribuio: = A expresso do lado direito do operador calculada e o seu resultado atribudo varivel do lado esquerdo do sinal. Exemplos:
a = 5.0 b = a + x - 3.0

Leitura dos valores de entrada do algoritmo: ler <lista de variveis> Uma lista de variveis uma lista de nomes de variveis separadas por vrgula. Valores so lidos do teclado, um de cada vez e atribudos as variveis listadas na ordem em que aparecem na lista. Exemplos:
ler nota1, nota2 ler a, b, c

Impresso dos resultados dos algoritmos: imprimir <lista de expresses> Imprime os valores das sadas do algoritmo. Os valores das expresses so impressos, um de cada vez, na ordem em que aparecem na lista. Uma expresso pode ser uma varivel ou uma expresso aritmtica. Exemplo:
imprimir media, nota1, nota2 imprimir x1, x2 imprimir a+b

Textos explicativos possvel inserir textos explicativos entre as variveis da lista, ou mesmo imprimir somente um texto explicativo para o usurio do programa. O texto deve estar entre ". Exemplo:
imprimir "A media das notas foi", media, "nota 1", nota1, "nota 2", nota2 imprimir "Entre com o salrio."

Comando de repetio: enquanto <expresso lgica> faa <lista de comandos> fimenquanto Os comandos entre enquanto e fimenquanto so executados repetidamente enquanto a condio de teste for satisfeita;

Exemplo:
i=0 enquanto i<10 faa imprimir i, i*i i=i+1 fimenquanto

Comando de teste (desvio) Se <expresso lgica> ento <lista de comandos1> seno <lista de comandos2> fimse Testa se a expresso lgica verdade. Caso seja verdade ento executa a lista de comandos 1, seno executa a lista de comandos 2. Exemplo:
se (i % 2) == 0 ento imprimir "O nmero par." seno imprimr "O nmero mpar." fimse

Funo - Funes so a base de toda a linguagem a--. Um programa composto de funes. A primeira funo a ser executada obrigatoriamente chamada de principal. O que uma funo executa est definido pela sua lista de comandos. A lista de parmetros, uma lista de variveis contendo os valores que passamos para a funo usar durante a sua execuo. Funes recebem valores (parmetros) e retornam resultados ao algoritmo que usou a funo. Por exemplo, considere que existe a funo seno(x) que calcule o seno de ngulo x, o algoritmo abaixo calcula o seno de ngulos entre 0 e 90 de 1 em 1 grau.
principal() inicio ang = 0 enquanto ang <= 90 faa imprimir ang, seno(ang) ang = ang + 1 fimenquanto

fim Os parmetros que a funo recebe so chamados de parmetros de entrada. Caso a funo precise retornar somente um valor ela pode usar o comando retornar expresso. Existem casos onde a funo no precisa receber nenhum parmetro nem retornar Por exemplo, considere o algoritmo abaixo em que dois valores so lidos na funo principal em seguida uma funo chamada para calcular e imprimir a soma destes valores. nome da funo (<lista de parmetros>) incio <lista de comandos> fim Exemplo: principal () inicio ler a ler b soma(a,b) fim soma (x,y) inicio imprimir "A soma vale ", x+y fim Neste exemplo o programa comea na funo principal que l os valores a e b. Em seguida o programa chama a funo soma passando como parmetros os valores das variveis a e b. A funo recebe estes valores e imprime a sua soma. No entanto, em muitos casos necessrio retornar mais de um valor e neste caso uma soluo e usar o que chamaremos de parmetro de entrada e sada. Este um caso especial em que um parmetro serve para transmitir valores para a funo e para retornar um valor, caso necessrio. Por exemplo, uma funo que precise trocar os valores de duas variveis de posio. Esta funo recebe os valores em duas variveis e retorna os valores trocados nestas mesmas duas variveis.

Retorna de valores ao fim da funo retornar <valor> - Caso a funo tenha que retornar algum valor para o algoritmo que chamou a funo, deve-se usar este comando. Este valor pode ser fornecido atravs de uma varivel ou de uma expresso. Exemplo: retornar x

retornar y + 1

Comentrios // - O restante da linha um comentrio explicando o trecho de programa. /* */ Tudo que estiver entre /* e */ considerado um comentrio. Este tipo de comentrio pode se extender por diversas linhas.

Exemplos de Algoritmos
Algoritmo de Euclides Dados dois nmeros positivos m e n encontre seu maior divisor comum, isto o maior inteiro positivo que divide tanto m como n. Assuma que m sempre maior que n, e n diferente de zero. principal () incio ler m, n; r = m % n; // resto da diviso de m por n enquanto r != 0 faa m = n; n = r; r = m % n;

fim do enquanto imprimir n;

fim de principal

Este algoritmo escrito em C pode ser visto no arquivo: au1ex1.c

Multiplicao de dois nmeros inteiros positivos principal () incio// achar quanto vale m*n ler m, n;

r = 0; enquanto n != 0 faa r = r + m; n = n-1;

fim do enquanto imprimr r;

fim de principal

Este algoritmo escrito em C pode ser visto no arquivo: au1ex2.c

Resoluo de uma equao do segundo grau. Neste algoritmo vamos assumir que o coeficiente a da equao sempre diferente de 0. principal () incio ler a, b, c delta = b*b-4*a*c se delta < 0 ento imprimir No h raizes reais.

seno incio x1 = (-b + sqrt(delta))/(2*a) x2 = (-b + sqrt(delta))/(2*a) imprimir x1, x2

fim

fim de se

Este algoritmo escrito em C pode ser visto no arquivo: au1ex3.c

Exerccios
Os algoritmos abaixo devem ser escritos em a-Escreva um algoritmo que leia trs nmeros e imprima o maior deles.

Escreva um algoritmo que leia trs nmeros e os imprima em ordem crescente. Escreva um algoritmo que leia 10 nmeros e imprima o maior deles. Escreva um algoritmo que imprima o maior deles quantidade de nmeros usurio. Assuma que o positivo. leia uma certa quantidade de nmeros e e quantas vezes o maior nmero foi lido. A a serem lidos deve ser fornecida pelo usurio sempre fornecer um nmero

Modifique o problema anterior de modo que caso o usurio digite um nmero negativo o programa pea novamente a quantidade de nmeros e repita este procedimento at que o usurio fornea um nmero positivo. Modifique o problema anterior para permitir que o usurio possa em caso de erro ter trs tentivas. Na terceira tentativa o programa deve terminar avisando ao usurio a razo da interrupo. Escreva um algoritmo que leia um nmero inteiro entre 100 e 999 e imprima na sada cada um dos algarismos que compem o nmero. Uma empresa paga R10.00 por hora normal trabalhada e R$ 15.00 por hora extra. Escreva um programa que leia o total de horas normais e o total de horas extras trabalhadas por um empregado em um ano e calcule o salrio anual deste trabalhador. Assuma que o trabalhador do exerccio anterior deve pagar 10% de imposto se o seu salrio anual for menor ou igual a R$ 12000.00. Caso o salrio seja maior que este valor o imposto devido igual a 10% sobre R$ 12000.00 mais 25% sobre o que passar de R$ 12000.00. Escreva um programa que calcule o imposto devido pelo trabalhador.

Você também pode gostar