Você está na página 1de 33

Algoritmo

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE ENGENHARIA DE COMPUTAO E AUTOMAO

ALGORITMO E LGICA DE PROGRAMAO


1 PARTE

NATAL-RN / 2004

-1-

Algoritmo
Captulo 1 ..........................................................................................................................3 Introduo..................................................................................................................... 3 1. Conceito de Algoritmo ......................................................................................... 3 1.1 Algumas Definies de Algoritmo ..................................................................... 3 Captulo 2 ..........................................................................................................................4 Formas de Representao de Algoritmos ..................................................................... 4 2.1 Descrio Narrativa ............................................................................................ 4 2.2 Fluxograma Convencional.................................................................................. 4 2.3 Pseudocdigo...................................................................................................... 5 2.4 Sntese................................................................................................................. 6 Captulo 3 ..........................................................................................................................7 Tipos de Dados ............................................................................................................. 7 3.1 Dados Numricos ............................................................................................... 7 3.2 Dados Literais..................................................................................................... 8 3.3 Dados Lgicos .................................................................................................... 9 3.4 Sntese................................................................................................................. 9 3.5 Exerccio Proposto............................................................................................ 10 Captulo 4 ........................................................................................................................11 Variveis..................................................................................................................... 11 4.2 Armazenamento de Dados na Memria ........................................................... 11 4.3 Conceito e Utilidade de Variveis .................................................................... 13 4.4 Definio de Variveis em Algoritmos ............................................................ 14 4.5 Sntese............................................................................................................... 15 4.6 Exerccios Propostos ........................................................................................ 15 Captulo 5 ........................................................................................................................24 Expresses .................................................................................................................. 24 5.1 Conceito............................................................................................................ 24 5.2 Operadores........................................................................................................ 24 5.3 Tipos de Expresses ......................................................................................... 25 5.4 Sntese............................................................................................................... 27 5.6 Exerccios Propostos ........................................................................................ 28 Captulo 6 ........................................................................................................................27 Instrues Primitivas .................................................................................................. 27 6.1 Instruo Primitiva de Atribuio..................................................................... 28 6.2 Instruo Primitiva de Sada de Dados............................................................. 29 6.3 Instruo Primitiva de Entrada de Dados ........................................................... 1 6.4 Sntese............................................................................................................... 32 6.5 Exerccios Resolvidos ...................................................................................... 32 6.6 Exerccios Propostos ........................................................................................ 36

-2-

Algoritmo

Captulo 1
Introduo
1. Conceito de Algoritmo
A automao o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por mquinas, sejam estes dispositivos mecnicos, eletrnicos (como os computadores) ou de natureza mista. Para que a automao de uma tarefa seja bem-sucedida necessrio que a mquina que passar a realiz-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficincia, de modo a garantir a repetibilidade do mesmo. Assim, necessrio que seja especificado com clareza e exatido o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a seqncia em que estas fases devem ser realizadas. especificao da seqncia ordenada de passos que deve ser seguida para a realizao de uma tarefa, garantindo a sua repetibilidade, d-se o nome de algoritmo. Ao contrrio do que se pode pensar, o conceito de algoritmo no foi criado para satisfazer s necessidades da computao. Pelo contrrio, a programao de computadores apenas um dos campos de aplicao dos algoritmos. Na verdade, h inmeros casos que podem exemplificar o uso (involuntrio ou no) de algoritmos para a padronizao do exerccio de tarefas rotineiras (vide exemplos da Seo 2.1). No entanto, daqui adiante a ateno desta apostila estar voltada automao de tarefas utilizando computadores. Para que um computador possa desempenhar uma tarefa necessrio que esta seja detalhada passo-a-passo, numa forma compreensvel pela mquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais que um algoritmo escrito numa forma compreensvel pelo computador (linguagem de programao).

1.1 Algumas Definies de Algoritmo


"Serve como modelo para programas, pois sua linguagem intermediria linguagem humana e s linguagens de programao, sendo ento, uma boa ferramenta na validao da lgica de tarefas a serem automatizadas." Os algoritmos, servem para representar a soluo de qualquer problema, mas no caso do Processamento de Dados, eles devem seguir as regras bsicas de programao para que sejam compatveis com as linguagens de programao.

-3-

Algoritmo

Captulo 2
Formas de Representao de Algoritmos
Existem diversas formas de representao de algoritmos, mas no h um consenso com relao melhor delas. O critrio usado para classificar hierarquicamente estas formas est diretamente ligado ao nvel de detalhe ou, inversamente, ao grau de abstrao oferecido. Algumas formas de representao de algoritmos tratam os problemas apenas em nvel lgico, abstraindo-se de detalhes de implementao muitas vezes relacionados com alguma linguagem de programao especfica. Por outro lado existem formas de representao de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as idias principais do algoritmo, dificultando seu entendimento. Dentre as formas de representao de algoritmos mais conhecidas podemos citar: Descrio Narrativa; Fluxograma Convencional; Pseudocdigo, tambm conhecido como Linguagem Estruturada ou Portugol.

2.1 Descrio Narrativa


Nesta forma de representao os algoritmos so expressos diretamente em linguagem natural. Como exemplo, tm-se os algoritmos seguintes: Receita de bolo: Misture os ingredientes Unte a forma com manteiga Despeje a mistura na forma Se houver coco ralado ento despeje sobre a mistura Leve a forma ao forno Enquanto no corar deixe a forma no forno Retire do forno Deixe esfriar Troca de um pneu furado: Clculo da mdia de um aluno: Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas Obter as suas 2 notas de provas Calcular a mdia aritmtica Se a mdia for maior que 7, o aluno foi aprovado, seno ele foi reprovado Tomando um banho: Entrar no banheiro e tirar a roupa Abrir a torneira do chuveiro Entrar na gua Ensaboar-se Sair da gua Fechar a torneira Enxugar-se Vestir-se

-4-

Algoritmo
Esta representao pouco usada na prtica porque o uso da linguagem natural muitas vezes d oportunidade a ms interpretaes, ambigidades e imprecises. Por exemplo, a instruo "afrouxar ligeiramente as porcas" no algoritmo da troca de pneus est sujeita a interpretaes diferentes por pessoas distintas. Uma instruo mais precisa seria: "afrouxar a porca, girando-a 30 no sentido anti-horrio".

2.2 Fluxograma Convencional


uma representao grfica de algoritmos onde formas geomtricas diferentes implicam aes (instrues, comandos) distintos. Tal propriedade facilita o entendimento das idias contidas nos algoritmos e justifica sua popularidade. Esta forma aproximadamente intermediria descrio narrativa e ao pseudocdigo (subitem seguinte), pois menos imprecisa que a primeira e, no entanto, no se preocupa com detalhes de implementao do programa, como o tipo das variveis usadas. Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nvel fsico da implementao do algoritmo. Por exemplo, figuras geomtricas diferentes so adotadas para representar operaes de sada de dados realizadas em dispositivos distintos, como uma fita magntica ou um monitor de vdeo. Como esta apostila no est interessada em detalhes fsicos da implementao, mas to somente com o nvel lgico das instrues do algoritmo, ser adotada a notao simplificada da Figura 2.1 para os fluxogramas. De qualquer modo, o Apndice A contm uma tabela com os smbolos mais comuns nos fluxogramas convencionais.
Incio e final do fluxograma

Operao de entrada de dados

Operao de sada de dados

Operao de atribuio

Deciso

Figura 2.1 Principais formas geomtricas usadas em fluxogramas.

-4-

Algoritmo
De modo geral, um fluxograma se resume a um nico smbolo inicial por onde a execuo do algoritmo comea, e um ou mais smbolos finais, que so pontos onde a execuo do algoritmo se encerra. Partindo do smbolo inicial, h sempre um nico caminho orientado a ser seguido, representando a existncia de uma nica seqncia de execuo das instrues. Isto pode ser melhor visualizado pelo fato de que, apesar de vrios caminhos poderem convergir para uma mesma figura do diagrama, h sempre um nico caminho saindo desta. Excees a esta regra so os smbolos finais, dos quais no h nenhum fluxo saindo, e os smbolos de deciso, de onde pode haver mais de um caminho de sada (usualmente dois caminhos), representando uma bifurcao no fluxo. A Figura 2.2 mostra a representao do algoritmo de clculo da mdia de um aluno sob a forma de um fluxograma.
Incio

N1, N2

MEDIA aaa (N1 + N2) / 2

.V.

MEDIA >= 7

.F.

"Aprovado"

"Reprovado"

Fim

Figura 2.2

Exemplo de um fluxograma convencional.

2.3 Pseudocdigo
Esta forma de representao de algoritmos rica em detalhes, como a definio dos tipos das variveis usadas no algoritmo. Por assemelhar-se bastante forma em que os programas so escritos, encontra muita aceitao. Na verdade, esta representao suficientemente geral para permitir a traduo de um algoritmo nela representado para uma linguagem de programao especfica seja praticamente direta. A forma geral da representao de um algoritmo na forma de pseudocdigo a seguinte:

-5-

Algoritmo
Algoritmo <nome_do_algoritmo> <declarao_de_variveis> <subalgoritmos> Incio <corpo do algoritmo> Fim Algoritmo uma palavra que indica o incio da definio de um algoritmo em forma de pseudocdigo. <nome_do_algoritmo> um nome simblico dado ao algoritmo com a finalidade de distingui-los dos demais. <declarao_de_variveis> consiste em uma poro opcional onde so declaradas as variveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos. <subalgoritmos> consiste de uma poro opcional do pseudocdigo onde so definidos os subalgoritmos (Captulo 8). Incio e Fim so respectivamente as palavras que delimitam o incio e o trmino do conjunto de instrues do corpo do algoritmo. Como exemplo, a Figura 2.3 mostra a representao do algoritmo do clculo da mdia de um aluno, na forma de um pseudocdigo. Algoritmo Calculo_Media Var N1, N2, MEDIA: real Incio Leia N1, N2 MEDIA (N1 + N2) / 2 Se MEDIA >= 7 ento Escreva Aprovado Seno Escreva Reprovado Fim_se Fim
Figura 2.3 Exemplo de um pseudocdigo.

2.4 Sntese
H diversas formas de representao de algoritmos que diferem entre si pela quantidade de detalhes de implementao que fornecem ou, inversamente, pelo grau de abstrao que possibilitam com relao implementao do algoritmo em termos de uma linguagem de programao especfica. Dentre as principais formas de representao de algoritmos destacam-se: a descrio narrativa, o fluxograma convencional e o pseudocdigo (ou linguagem estruturada).

-6-

Algoritmo

Captulo 3
Tipos de Dados
Todo o trabalho realizado por um computador baseado na manipulao das informaes contidas em sua memria. Grosso modo, estas informaes podem ser classificadas em dois tipos: As instrues, que comandam o funcionamento da mquina e determinam a maneira como devem ser tratados os dados. As instrues so especficas para cada modelo de computador, pois so funes do tipo particular de processador utilizado em sua implementao. Os dados propriamente ditos, que correspondem poro das informaes a serem processadas pelo computador. A maior parte das pessoas no ligadas rea de informtica ignora o potencial dos computadores e imagina que eles so capazes de tratar apenas com dados numricos. Na realidade, a capacidade dos mesmos se estende a outros tipos de dados. O objetivo deste captulo justamente o de classificar os dados de acordo com o tipo de informao contida neles. A classificao apresentada no se aplica a nenhuma linguagem de programao especfica; pelo contrrio, ela sintetiza os padres utilizados na maioria das linguagens.

3.1 Dados Numricos


Antes de apresentar formalmente os tipos de dados numricos, conveniente recordar alguns conceitos bsicos relacionados teoria dos nmeros e conjuntos. O conjunto dos nmeros naturais representado por N e dado por: N = {1, 2, 3, 4, ...} Algumas correntes de matemticos tericos convencionam que o nmero 0 est contido neste conjunto; contudo, no convm perder tempo em tais discusses filosficas, uma vez que isto no influenciar de forma alguma este estudo. Na seqncia, encontramos o conjunto dos nmeros inteiros: Z = {..., -3, -2, -1, 0, 1, 2, 3, ...} O conjunto Z contm todos os elementos de N, bem como alguns nmeros que no pertencem a N (os nmeros negativos e o zero). Portanto, dizemos que N est contido em Z, ou ento, que Z contm N. Englobando o conjunto dos nmeros inteiros, existe o conjunto dos nmeros fracionrios (Q), dado pelo universo dos nmeros que podem ser expressos na forma de uma frao, isto , um quociente onde o numerador e o denominador so nmeros inteiros. Mais formalmente: Q = ( p/q | p, q pertencem a Z}

-7-

Algoritmo
Por ltimo, surge o conjunto dos nmeros reais (R), formado pela unio do conjunto dos nmeros fracionrios Q com o conjunto dos nmeros que no podem ser expressos na forma de uma frao (os nmeros irracionais). Ex.: 2 = 1.1412... , PI = 3.14159... 3.1.1 Dados Numricos Inteiros Os nmeros inteiros so aqueles que no possuem componentes decimais ou fracionrios, podendo ser positivos ou negativos. Os elementos pertencentes aos conjuntos N e Z, apesar de serem representveis na classe dos nmeros reais, so classificados como dados do tipo inteiro, por no possurem parte fracionria. Esta possibilidade interessante por permitir uma economia do espao de memria, como veremos adiante. Por sua vez, os elementos dos conjuntos Q e R, por possurem parte fracionria, no podem ser representados na classe inteira, pertencendo necessariamente aos tipos de dados ditos reais. Como exemplos de nmeros inteiros temos: 24 - nmero inteiro positivo 0 - nmero inteiro -12 - nmero inteiro negativo 3.1.2 Dados Numricos Reais Os dados de tipo real so aqueles que podem possuir componentes decimais ou fracionrios, e podem tambm ser positivos ou negativos. Como dito anteriormente, os elementos dos conjuntos de nmeros fracionrios e reais so necessariamente representados no computador por dados do tipo real. Exemplos de dados do tipo real: 24.01 - nmero real positivo com duas casas decimais 144. - nmero real positivo com zero casas decimais -13.3 - nmero real negativo com uma casa decimal 0.0 - nmero real com uma casa decimal 0. - nmero real com zero casas decimais Observe que h uma diferena entre 0, que um dado do tipo inteiro 0. (ou 0.0) que um dado do tipo real. Portanto, a simples existncia do ponto decimal serve para diferenciar um dado numrico do tipo inteiro de um do tipo real.

3.2 Dados Literais


O tipo de dados literal constitudo por uma seqncia de caracteres contendo letras, dgitos e/ou smbolos especiais. Este tipo de dados tambm muitas vezes chamado de alfanumrico, cadeia (ou cordo) de caracteres, ainda, do ingls, string.

-8-

Algoritmo

Usualmente, os dados literais so representados nos algoritmos pela coleo de caracteres, delimitada em seu incio e trmino com o caractere aspas ("). Diz-se que o dado do tipo literal possui um comprimento dado pelo nmero de caracteres nele contido. Exemplos de dados do tipo literal: "QUAL ?" - literal de comprimento 6 " " - literal de comprimento 1 "qUaL ?!$" - literal de comprimento 8 " AbCdefGHi" - literal de comprimento 9 "1-2+3=" - literal de comprimento 6 0 - literal de comprimento 1 Note que, por exemplo, "1.2" representa um dado do tipo literal de comprimento 3, constitudo pelos caracteres "1", "." e "2", diferindo de 1.2 que um dado do tipo real.

3.3 Dados Lgicos


A existncia deste tipo de dado , de certo modo, um reflexo da maneira como os computadores funcionam. Muitas vezes, estes tipos de dados so chamados de booleanos, devido significativa contribuio de BOOLE rea da lgica matemtica. O tipo de dados lgico usado para representar dois nicos valores lgicos possveis: verdadeiro e falso. comum encontrar-se em outras referncias outros tipos de pares de valores lgicos como sim/no, 1/0, true/false. Nos algoritmos apresentados nesta apostila os valores lgicos sero delimitados pelo caractere ponto (.). Exemplo: .V. - valor lgico verdadeiro .F. - valor lgico falso

3.4 Sntese
Os dados numricos dividem-se em duas classes: inteiros, que no possuem parte fracionria e podem ser positivos ou negativos; reais, que podem possuir parte fracionria e podem ser positivos ou negativos. Os dados do tipo literal podem conter seqncias de letras, dgitos ou smbolos especiais, delimitados por aspas ("). Seu comprimento dado pelo nmero de caracteres em string.

-9-

Algoritmo
Os dados do tipo lgico s possuem dois valores possveis (.V. e .F.). A rvore abaixo resume a classificao dos dados com relao aos tipos de dados apresentados.

Figura 3.2

Representao dos diversos tipos de dados

3.5 Exerccio Proposto


1. Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I os dados do tipo inteiro, com R os reais, com L os literais, com B os lgicos (booleanos), e com N aqueles para os quais no possvel definir a priori um tipo de dado. ( ( ( ( ( ( ( ( ( ) 0.21 )1 )V ) 0. ) 1% ) Jos ) 0,35 ) .F. ) -0.001 ( ( ( ( ( ( ( ( ) .T. ) +3257 ) a ) +3257 ) +3257. ) -0.0 ) .F. )3 ( ( ( ( ( ( ( ) .V. ) .V ) abc )F )C ) Maria ) +36

- 10 -

Algoritmo

Captulo 4
Variveis
A todo momento durante a execuo de qualquer tipo de programa os computadores esto manipulando informaes representadas pelos diferentes tipos de dados descritos no captulo anterior. Para que no se "esquea" das informaes, o computador precisa guardlas em sua memria. Este captulo destinado ao estudo da forma como os computadores armazenam e acessam informaes contidas em sua memria.

4.2 Armazenamento de Dados na Memria


Cada um dos diversos tipos de dados apresentados no captulo anterior necessita de uma certa quantidade de memria para armazenar a informao representada por eles. Esta quantidade funo do tipo de dado considerado, do tipo da mquina (computador) e do tipo de linguagem de programao. Por isso, o que ser exposto nos subitens seguintes no deve ser tomado como padro, apenas como exemplo. 4.2.1 Armazenamento de Dados do Tipo Literal Devemos sempre ter em mente que um byte consegue representar 256 (28) possibilidades diferentes. Uma informao do tipo literal nada mais do que um conjunto de caracteres que podem ser letras, dgitos ou smbolos especiais. A unio de todos os caracteres existentes nos computadores resulta num conjunto com um nmero de elementos menor que 256. Deste resultado surgiu a idia de associar a cada caractere um nmero (cdigo) variando de 0 a 255 (256 possibilidades). No princpio, cada fabricante de computador adotava uma conveno diferente para este cdigo. Mais recentemente, esta conveno foi padronizada a fim de facilitar a portabilidade (migrao) de programas entre mquinas diferentes. Esta conveno representada na forma de uma tabela de mapeamento de caracteres em nmeros. O padro mais universalmente aceito o ASCII, cuja tabela mostrada no Apndice B. Assim, cada clula de memria (byte) pode conter um caractere, representado pelo seu cdigo ASCII. Retornando questo do armazenamento de informaes do tipo literal na memria, deve-se lembrar que um dado deste tipo possui um certo comprimento dado pelo nmero de caracteres nele contido. Portanto, para guardar um dado do tipo literal devemos alocar (reservar) um espao contguo de memria igual ao comprimento do mesmo, destinando um byte para cada caractere da informao. Exemplificando, a informao do tipo literal "banana" possui seis caracteres e, portanto, seis bytes so necessrios para reter a referida informao na memria. A princpio, estes bytes podem estar em qualquer lugar da memria, mas conveniente que estejam juntos (posies contguas). A primeira posio deste conjunto de bytes absolutamente arbitrria e sua escolha geralmente feita automaticamente pelo compilador (isto , pelo programa que

- 11 -

Algoritmo
traduz um outro escrito em alguma linguagem de programao para outra geral, a linguagem de mquina do computador com que se trabalha). A Figura 4.3 mostra o caso em que se armazena a literal "banana" no conjunto de seis bytes contguos de memria iniciando pela posio de memria 0. Na verdade, ao invs dos caracteres da literal, os cdigos correspondentes aos mesmos que so guardados na memria.

Endereo 0 1 2 3 4 5

Informao b (98) a (97) n (110) a (97) n (110) a (97)

Figura 4.3 Armazenamento da literal banana na memria de um computador.

4.2.2 Armazenamento de Dados do Tipo Lgico Uma informao do tipo lgico s possui dois valores possveis: .V. ou .F.. Assim, a princpio, um nico bit seria suficiente para armazenar uma informao deste tipo. Contudo, deve-se lembrar que a menor poro de memria que se pode acessar o byte. Portanto, uma informao do tipo lgico armazenada em um byte de memria. De certa forma, se por um lado isto pode ser como um "desperdcio" de memria, por outro simplifica bastante a arquitetura de memria dos computadores (por motivos que fogem ao contexto desta apostila). Alm do mais, isto no to relevante, uma vez que na prtica o nmero de ocorrncias de dados do tipo lgico bastante inferior ao de ocorrncias de dados do tipo literal ou numrico. 4.2.3 Armazenamento de Dados do Tipo Inteiro O conjunto dos nmeros inteiros (Z) contm um nmero infinito de elementos: Z = { -, ..., -3, -2, -1, 0, 1, 2, 3, ..., +} Obviamente invivel o armazenamento de todos os nmeros deste conjunto num computador. Faz-se necessrio realizar um estudo para que se limite o nmero de elementos representveis deste conjunto. Se apenas um byte fosse utilizado para armazenar os dados do tipo inteiro, existiriam apenas 256 nmeros diferentes neste conjunto: {-127, -126, ..., -2, -1, 0, 1, 2, ..., 127, 128) Esta restrio bastante forte, uma vez que boa parte das aplicaes prticas necessitam de nmeros inteiros maiores que estes. Se forem utilizados dois bytes para armazenar um nmero inteiro, o universo de nmeros representveis cresce para 28 x 28 = 216 = 65.536 possibilidades: {-32767, -32766, ..., -2, -1, 0, 1, 2, ..., 32767, 32768} Este conjunto satisfaz grande maioria das necessidades prticas. Assim, em geral utilizam-se dois bytes para representar os nmeros inteiros em computadores. Contudo, restam algumas aplicaes muito especficas em que se precisa de um conjunto ainda maior. Para

- 12 -

Algoritmo
estes casos, algumas linguagens de programao fornecem mecanismos para trabalhar nmeros inteiros com quatro bytes. Nestes casos os dados so ditos inteiros longos ou estendidos. 4.2.4 Armazenamento de Dados do Tipo Real O conjunto dos nmeros reais (R) contm um nmero infinito de elementos e, pelas mesmas razes que o conjunto dos nmeros inteiros, precisa ser limitado. Para dados deste tipo julgou-se apropriado adotar quatro bytes para sua representao interna nos computadores. So muito comuns situaes como as aplicaes cientficas em que necessria uma maior preciso de clculo, intimamente ligada ao nmero de casas decimais dos dados. Para este caso, em analogia com o que acontece com os dados do tipo inteiro, algumas linguagens de programao decidiram criar dados do tipo real estendido (com oito bytes).

4.3 Conceito e Utilidade de Variveis


Como visto anteriormente, informaes correspondentes a diversos tipos de dados so armazenadas na memria dos computadores. Para acessar individualmente cada uma destas informaes, a princpio, seria necessrio saber o tipo de dado desta informao (ou seja, o nmero de bytes de memria por ela ocupados) e a posio inicial deste conjunto de bytes na memria. Percebe-se que esta sistemtica de acesso a informaes na memria bastante ilegvel e difcil de se trabalhar. Para contornar esta situao criou-se o conceito de varivel, que uma entidade destinada a guardar uma informao. Basicamente, uma varivel possui trs atributos: um nome, um tipo de dado associado mesma e a informao por ela guardada.
Nome

Tipo de dado

Informao Figura 4.4 Atributos de uma varivel.

Toda varivel possui um nome que tem a funo de diferenci-la das demais. Cada linguagem de programao estabelece suas prprias regras de formao de nomes de variveis. Adotaremos nesta apostila as seguintes regras: um nome de varivel deve necessariamente comear com uma letra; um nome de varivel no deve conter nenhum smbolo especial exceto a sublinha (_). Exemplos:

- 13 -

Algoritmo

SALARIO 1ANO ANO1 A CASA SAL/HORA SAL_HORA _DESCONTO

= = = = = = =

correto errado (no comeou com uma letra) correto errado (contm o caractere espao em branco) errado (contm o caractere "/) correto errado (no comeou com uma letra)

4.4 Definio de Variveis em Algoritmos


Todas as variveis utilizadas em algoritmos devem ser definidas antes de serem utilizadas. Isto se faz necessrio para permitir que o compilador reserve um espao na memria para as mesmas. Nos algoritmos apresentados nesta apostila ser adotada a seguinte conveno: todas as variveis utilizadas em algoritmos sero definidas no incio do mesmo, por meio de um comando de uma das formas seguintes: VAR <nome_da_varivel> : <tipo_da_varivel> VAR <lista_de_variveis> : <tipo_das_variveis> a palavra-chave VAR dever estar presente sempre e ser utilizada uma nica vez na definio de um conjunto de uma ou mais variveis; numa mesma linha podero ser definidas uma ou mais variveis do mesmo tipo. Para tal, deve-se separar os nomes das mesmas por vrgulas; variveis de tipos diferentes devem ser declaradas em linhas diferentes. A forma de utilizao deste comando ficar mais clara quando da utilizao da representao de algoritmos em linguagem estruturada (pseudocdigo). Esta conveno vlida para a representao de algoritmos na forma de pseudocdigo. Em termos de fluxograma, no usual adotar-se qualquer forma de definio de variveis. Exemplo de definio de variveis: VAR NOME IDADE SALARIO TEM_FILHOS : : : : literal[10] inteiro real lgico

No exemplo acima foram declaradas quatro variveis: a varivel NOME, capaz de armazenar dados literais de comprimento 10 (dez caracteres); a varivel IDADE, capaz de armazenar um nmero inteiro; a varivel SALARIO, capaz de armazenar um nmero real; a varivel TEM_FILHOS, capaz de armazenar uma informao lgica.

- 14 -

Algoritmo 4.5 Sntese


A memria dos computadores composta por clulas numeradas ordenadamente denominadas bytes. Cada byte constitudo por 8 bits. Cada tipo de dado requer um nmero diferente de bytes para armazenar a informao representada por ele na memria. Esta quantidade tambm pode variar em funo do tipo de computador considerado. Uma varivel uma entidade dotada de um nome para diferenci-la das demais e um tipo de dado que define o tipo de informao que ela capaz de guardar. Uma vez definidos, o nome e o tipo de uma varivel no podem ser alterados no decorrer de um programa. Por outro lado, a informao til da varivel objeto de constante modificao durante o decorrer do programa, de acordo com o fluxo de execuo do mesmo.

4.6 Exerccios Propostos


1. Assinale com C os identificadores corretos e com I os incorretos. Explique o que est errado nos identificadores incorretos. ( ( ( ( ( ( ) valor ) _b248 ) nota*do*aluno ) a1b2c3 )3x4 ) Maria ( ( ( ( ( ( ) km/h ) xyz ) nome empresa ) sala_215 ) nota ) ah!

2. Supondo que as variveis NB, NA, NMAT e SX sejam utilizadas para armazenar a nota do aluno, o nome do aluno, o nmero da matrcula e o sexo, declare-as corretamente, associando o tipo adequado ao dado que ser armazenado.

- 15 -

Algoritmo

Captulo 5
Expresses
5.1 Conceito
O conceito de expresso em termos computacionais est intimamente ligado ao conceito de expresso (ou frmula) matemtica, onde um conjunto de variveis e constantes numricas relacionam-se por meio de operadores aritmticos compondo uma frmula que, uma vez avaliada, resulta num valor.

Figura 5.1

Tringulo de base (B) e altura (H).

Por exemplo, a frmula de clculo da rea do tringulo da Figura 5.1 dada por: AREA = 0.5 x B x H Esta frmula utiliza trs variveis: B e H, que contm as dimenses do tringulo, e AREA, onde guardado o valor calculado (resultado da avaliao da expresso). H, tambm, uma constante (0.5) e o operador de multiplicao (x), que aparece duas vezes na expresso. O conceito de expresso aplicado computao assume uma conotao mais ampla: uma expresso uma combinao de variveis, constantes e operadores, e que, uma vez avaliada, resulta num valor.

5.2 Operadores
Operadores so elementos funcionais que atuam sobre operandos e produzem um determinado resultado. Por exemplo, a expresso 3 + 2 relaciona dois operandos (os nmeros 3 e 2) por meio do operador (+) que representa a operao de adio. De acordo com o nmero de operandos sobre os quais os operadores atuam, os ltimos podem ser classificados em: binrios, quando atuam sobre dois operandos. Ex.: os operadores das operaes aritmticas bsicas (soma, subtrao, multiplicao e diviso);

- 24 -

Algoritmo
unrios, quando atuam sobre um nico operando. Ex.: o sinal de (-) na frente de um nmero, cuja funo inverter seu sinal. Outra classificao dos operadores feita considerando-se o tipo de dado de seus operandos e do valor resultante de sua avaliao. Segundo esta classificao, os operadores dividem-se em aritmticos, lgicos e literais. Esta diviso est diretamente relacionada com o tipo de expresso onde aparecem os operadores. Um caso especial o dos operadores relacionais, que permitem comparar pares de operandos de tipos de dados iguais, resultando sempre num valor lgico. Mais adiante sero apresentados os operadores dos diversos tipos acima relacionados.

5.3 Tipos de Expresses


As expresses so classificadas de acordo com o tipo do valor resultante de sua avaliao. 5.3.1 Expresses Aritmticas Expresses aritmticas so aquelas cujo resultado da avaliao do tipo numrico, seja ele inteiro ou real. Somente o uso de operadores aritmticos e variveis numricas permitido em expresses deste tipo. Os operadores aritmticos relacionados s operaes aritmticas bsicas esto sumarizados na Tabela 5.1.
Tabela 5.1 Operadores aritmticos e sua ordem de prioridade.

Operador + * / ** + -

Tipo Binrio Binrio Binrio Binrio Binrio Unrio Unrio

Operao Adio Subtrao Multiplicao Diviso Exponenciao Manuteno de sinal Inverso de sinal

Prioridade 4 4 3 3 2 1 1

A prioridade entre operadores define a ordem em que os mesmos devem ser avaliados dentro de uma mesma expresso. Este assunto ser tratado com maior profundidade numa seo posterior. O caractere (*) adotado na maioria das linguagens de programao para representar a operao de multiplicao, ao invs do caractere (x), devido possibilidade da ocorrncia do mesmo no nome de variveis. Pela mesma razo, o smbolo (**) adotado para representar a operao de exponenciao. Algumas linguagens de programao adotam o smbolo (^ circunflexo) para esta finalidade, mas isto pouco freqente. As variveis usadas em expresses aritmticas podem somente ser do tipo inteiro ou real. Se todas as variveis que aparecem numa expresso so do tipo inteiro, ento o valor resultante da expresso tambm do tipo inteiro. Se ao menos uma das variveis da expresso aritmtica for do tipo real, ento o valor resultante da avaliao da expresso necessariamente do tipo real. Nos exemplos seguintes, assumiremos que:

- 25 -

Algoritmo
A, B e C so variveis do tipo inteiro; X, Y e Z so variveis do tipo real. Exemplos: A+B*C A+B+Y A/B X/Y = = = = expresso de resultado inteiro expresso de resultado real expresso de resultado real expresso de resultado real

5.3.2 Expresses Lgicas Expresses lgicas so aquelas cujo resultado da avaliao um valor lgico (.V. ou .F.). Os operadores lgicos e suas relaes de precedncia so mostrados na Tabela 5.2. Existem outros operadores lgicos, como por exemplo o OU_EXCLUSIVO., mas suas funes podem ser exercidas por combinaes dos trs tipos de operadores da Tabela 5.2.
Tabela 5.2 Operadores lgicos e suas relaes de prioridade.

Operador .OU. .E. .NO.

Tipo Binrio Binrio Unrio

Operao Disjuno Conjuno Negao

Prioridade 3 2 1

Para exemplificar o uso de operadores lgicos, a Tabela 5.3 apresenta duas variveis lgicas A e B. Uma vez que cada varivel lgica possui somente dois valores possveis, ento h exatamente quatro combinaes para estes valores, razo pela qual a tabela tem quatro linhas. As diversas colunas contm os resultados das operaes lgicas sobre as combinaes possveis dos valores das variveis A e B.
Tabela 5.3 Tabela-Verdade dos operadores apresentados na Tabela 5.2.

A .F. .F. .V. .V.

B .F. .V. .F. .V.

.NO. A .V. .V. .F. .F.

.NO. B .V. .F. .V. .F.

A .OU. B .F. .V. .V. .V.

A .E. B .F. .F. .F. .V.

Tabelas como a da Figura 5.3 so chamadas de Tabelas-Verdade. Convm salientar as seguintes concluses que podem ser extradas por observao da Tabela 5.3: O operador lgico .NO. sempre inverte o valor de seu operando. Ex.: .NO. .V. = .F. e .NO. .F. = .V.; Para que a operao lgica .OU. tenha resultado verdadeiro basta que um de seus operandos seja verdadeiro; Para melhor visualizar este efeito, podemos imaginar que as variveis lgicas A e B so como dois interruptores ligados em paralelo num circuito de acionamento de uma lmpada (Figura 5.2).

- 26 -

Algoritmo

Nas expresses lgicas onde aparecem apenas os operadores lgicos da Tabela 5.2 somente variveis do tipo lgico podem ser usadas. Isto parece bvio, uma vez que os operadores lgicos somente atuam sobre valores (constantes ou variveis) lgicos. H, ainda, outro tipo de operador que pode aparecer em operaes lgicas: os operadores relacionais, mostrados na Tabela 5.4.

Tabela 5.4

Operadores relacionais.

Operador = <> < <= > >=

Operao Igual Diferente Menor Menor ou igual Maior Maior ou igual

Estes operadores so somente usados quando se deseja efetuar comparaes. Comparaes s podem ser feitas entre objetos de mesma natureza, isto , variveis do mesmo tipo de dado. O resultado de uma comparao sempre um valor lgico. O uso de operadores relacionais possibilita o aparecimento em expresses lgicas de variveis de outros tipos de dados que no o lgico. 5.3.3 Expresses Literais Expresses literais so aquelas cujo resultado da avaliao um valor literal. Este tipo de expresso bem menos freqente que os anteriores. Os tipos de operadores existentes variam de uma linguagem de programao para outra, no havendo uma padronizao. Para que o assunto no passe em branco, considere-se como exemplo a operao de concatenao de strings: toma-se duas strings e acrescenta-se (concatena-se) a segunda delas ao final da primeira. Em algumas linguagens esta operao representada pelo smbolo (+). Por exemplo, a concatenao das strings "REFRIGERA" e "DOR" representada por "REFRIGERA" + "DOR" e o resultado de sua avaliao "REFRIGERADOR".

5.4 Sntese
Uma expresso uma combinao de variveis, constantes e operadores, que resulta num valor quando avaliada. Operadores so elementos funcionais que atuam sobre operandos. Segundo o nmero de operandos sobre os quais atua, um operador pode ser classificado em unrio ou binrio. Segundo os tipos de dados de seus operandos e do valor resultante de sua avaliao, os operadores podem ser classificados em aritmticos, lgicos ou literais. Um tipo especial de operador o relacional, que usado na comparao de operandos de um mesmo tipo de dado e cujo resultado da avaliao sempre um valor lgico. As expresses so classificadas de acordo com o valor resultante de sua avaliao em: Aritmticas, que resultam num valor numrico (real ou inteiro);

- 27 -

Algoritmo
Lgicas, que resultam num valor lgico; Literais, que resultam num valor literal. H trs regras bsicas que definem a seqncia correta de avaliao passo a passo de expresses: 1. Operadores de maior prioridade devem ser avaliados primeiro. Em caso de empate, a avaliao se faz da esquerda para a direita. 2. O uso de parnteses em subexpresses fora a avaliao das mesmas com maior prioridade. 3. Os diversos tipos d operadores devem ser avaliados na seguinte seqncia dentro de uma expresso complexa: primeiro os aritmticos e literais; a seguir, os relacionais e, por ltimo, os lgicos.

5.6 Exerccios Propostos


1. Dada a declarao de variveis: VAR A, B, C X, Y, Z NOME, RUA L1, L2 : : : : inteiro real literal[20] lgico

Classifique as expresses seguintes de acordo com o tipo de dado do resultado de sua avaliao, em I (inteiro), R (real), L (literal), B (lgico) ou N (quando no for possvel defini-lo): ( ( ( ( ( ( )A+B+C )A+B+Z ) NOME + RUA )AB )AY ) NOME RUA ( ( ( ( ( ( ) L1 .OU. L2 ) RUA <> NOME )A+B/C )A+X/Z )A+Z/A ) A B = L1 ( ( ( ( ( ( ) (A = B) )X+Y/Z )X=Z/A ) L1 ** L2 ) A + B / L2 ) X < L1 / RUA

2. Para as mesmas variveis declaradas no exerccio 1, s quais so dados os valores seguintes: A=1 B=2 C=3 X = 2.0 Y = 10.0 Z = -1.0 L1 = .V. NOME = PEDRO RUA = PEDRINHO L2 = .F.

Determine o resultado da avaliao das expresses abaixo: A + C / B ___________________________________________________________ A + B + C __________________________________________________________ C / B / A ___________________________________________________________

- 28 -

Algoritmo

-X ** B _____________________________________________________________ - (X ** B) ___________________________________________________________ (-X) ** B ____________________________________________________________ NOME + RUA _______________________________________________________ NOME = RUA _______________________________________________________ L1 .OU. L2 _________________________________________________________ (L1 .E.(.NO. L2)) ____________________________________________________ (L2 .E. (.NO. L1)) ___________________________________________________ (L1 .E. (.NO. L2)) .OU. (L2 .E. (.NO. L1)) ________________________________ _____________________________________________________________________ X Y .E. C = B ________________________________________________________ _____________________________________________________________________ (C - 3 * A) (X + 2 * Z) _________________________________________________ _____________________________________________________________________

- 26 -

Algoritmo

Captulo 6
Instrues Primitivas
Como o prprio nome diz, instrues primitivas so os comandos bsicos que efetuam tarefas essenciais para a operao dos computadores, como entrada e sada de dados (comunicao com o usurio e com os dispositivos perifricos), e movimentao dos mesmos na memria. Estes tipos de instruo esto presentes na absoluta maioria das linguagens de programao. De fato, um programa que no utiliza nenhuma instruo primitiva - como as que sero definidas neste captulo - incapaz de se comunicar com o mundo exterior e, portanto, no tem utilidade alguma. Antes de passar descrio das instrues primitivas, necessria a definio de alguns termos que sero utilizados mais frente: Dispositivo de entrada o meio pelo qual as informaes (mais especificamente os dados) so transferidas pelo usurio ou pelos nveis secundrios de memria ao computador. Os exemplos mais comuns so: o teclado, o carto perfurado (j obsoleto), as fitas e os discos magnticos, entre outros; Dispositivo de sada o meio pelo qual as informaes (geralmente, os resultados da execuo de um programa) so transferidas pelo computador ao usurio ou aos nveis secundrios de memria. Exemplos: monitor de vdeo, impressora, fitas e discos magnticos, entre outros; Sintaxe a forma como os comandos devem ser escritos, a fim de que possam ser entendidos pelo tradutor de programas. A violao das regras sintticas considerada um erro sujeito pena do no-reconhecimento do comando por parte do tradutor; Semntica o significado, ou seja, o conjunto de aes que sero exercidas pelo computador durante a execuo do referido comando. Daqui por diante, todos os comandos novos sero apresentados por meio de sua sintaxe e sua semntica, isto , a forma como devem ser escritos e a(s) ao(es) que executam.

- 27 -

Algoritmo

6.1 Instruo Primitiva de Atribuio


A instruo primitiva de atribuio, ou simplesmente atribuio, a principal maneira de se armazenar uma informao numa varivel. Sua sintaxe : <nome_de_varivel> <expresso> Em termos de fluxograma, os comandos de atribuio so representados como na Figura 6.1.

<varivel> aa <expresso>

Figura 6.1

Forma de representao de comandos de atribuio em fluxogramas.

O modo de funcionamento (semntica) de uma atribuio consiste 1) na avaliao da expresso e 2) no armazenamento do valor resultante na posio de memria correspondente varivel que aparece esquerda do comando. Fluxograma
Incio

Pseudocdigo Algoritmo EXEMPLO_6.1 Var PRECO_UNIT, PRECO_TOT : real QUANT : inteiro Incio PRECO_UNIT 5.0 QUANT 10 PRECO_TOT PRECO_UNIT * QUANT Fim.

PRECO_UNIT aaa 5.0

QUANT aaa 10

PRECO_TOT aaa PRECO_UNIT * QUANT

Fim

Figura 6.2

Exemplo de aplicao de comandos de atribuio.

- 28 -

Tcnicas de Programao

6.2 Instruo Primitiva de Sada de Dados


As instrues primitivas de sada de dados so o meio pelo qual informaes contidas na memria dos computadores so colocadas nos dispositivos de sada, para que o usurio possa visualiz-las. H duas sintaxes possveis para esta instruo: Escreva <lista de variveis> ou Escreva <literal> Daqui por diante, Escreva ser considerada uma palavra reservada e no mais poder ser utilizada como nome de varivel, de modo que toda vez que for encontrada em algoritmos ser identificada como um comando de sada de dados. Uma lista_de_variveis um conjunto de nomes de variveis separados por vrgulas. Um literal simplesmente um dado do tipo literal delimitado por aspas. Em termos de fluxograma, uma instruo de sada de dados representada como na Figura 6.3.

<lista_de_ variveis> ou <literal>

Figura 6.3

Forma de representao de uma instruo de sada de dados em fluxogramas.

Repare que a representao no fluxograma dispensa o uso da palavra reservada Escreva, uma vez que a mesma j est embutida na forma geomtrica da figura. A semntica da instruo primitiva de sada de dados muito simples: os argumentos do comando so enviados para o dispositivo de sada. No caso de uma lista de variveis, o contedo de cada uma delas pesquisado na posio de memria correspondente varivel e depois enviado para o dispositivo de sada. No caso de argumentos do tipo string, estes so enviados diretamente ao referido dispositivo. H, ainda, a possibilidade de se misturar nomes de variveis com literais na lista de um mesmo comando. O efeito obtido bastante til e interessante: a lista lida da esquerda para a direita e cada elemento da mesma tratado separadamente; se um nome de varivel for encontrado, ento a informao da mesma pega da memria e colocada no dispositivo de sada; no caso de um literal, o mesmo escrito diretamente no dispositivo de sada. O exemplo da Figura 6.2 torna-se muito mais interessante com a aplicao de instrues de sada de dados, como na Figura 6.4.

- 29 -

Tcnicas de Programao
Fluxograma
Incio

Pseudocdigo Algoritmo EXEMPLO_6.4 Var PRECO_UNIT, PRECO_TOT : real QUANT : inteiro Incio PRECO_UNIT 5.0 QUANT 10 PRECO_TOT PRECO_UNIT * QUANT Escreva PRECO_TOT Fim.

PRECO_UNIT aaa 5.0

QUANT aaa 10

PRECO_TOT aaa PRECO_UNIT * QUANT

PRECO_TOT

Fim

Figura 6.4

Exemplo de aplicao da instruo primitiva de sada de dados.

6.3 Instruo Primitiva de Entrada de Dados


O algoritmo da Figura 6.4 ainda necessita de uma melhoria essencial. Toda vez que ele executado, o mesmo valor calculado, j que os valores das variveis PRECO_UNIT e QUANT permanecem inalterados. Seria interessante que estes valores pudessem ser fornecidos ao computador pelo usurio do programa toda vez que o programa fosse executado, para que o usurio tivesse um maior controle sobre o valor calculado. A instruo primitiva de entrada de dados foi criada para suprir esta necessidade. Sua sintaxe : Leia <lista_de_variveis> Da mesma forma que Escreva, daqui em diante Leia ser tratada como uma palavrareservada e no mais poder ser usada como nome de varivel em algoritmos. A lista_de_variveis um conjunto de um ou mais nomes de variveis, separados por vrgulas. A Figura 6.5 mostra como uma instruo de entrada de dados representada em fluxogramas. Esta representao dispensa o uso da palavra-reservada Leia, pelo fato da mesma j estar de certo modo embutida na forma geomtrica da figura.

<lista_de_ variveis>

-1-

Algoritmo

Figura 6.5

Forma de representao de uma instruo de entrada de dados em fluxogramas.

A semntica da instruo de entrada (ou leitura) de dados , de certa forma, inversa da instruo de escrita: os dados so fornecidos ao computador por meio de um dispositivo de entrada e armazenados nas posies de memria das variveis cujos nomes aparecem na lista_de_variveis. O algoritmo da Figura 6.4, modificado para que os valores das variveis PRECO_UNIT e QUANT sejam lidos no dispositivo de entrada, est na Figura 6.6. Pseudocdigo Algoritmo EXEMPLO_6.6 Var PRECO_UNIT, PRECO_TOT : real QUANT : inteiro Incio Leia PRECO_UNIT, QUANT PRECO_TOT PRECO_UNIT * QUANT Escreva PRECO_TOT Fim. Fluxograma
Incio B

PRECO_UNIT, QUANT

PRECO_TOT

PRECO_TOT aaa PRECO_UNIT * QUANT

Fim

Figura 6.6 Exemplo de aplicao da instruo primitiva de entrada de dados num algoritmo.

O algoritmo da Figura 6.6 ainda precisa sofrer algumas modificaes para ficar perfeito. Em sua forma atual, ao incio de sua execuo, ele procura ler os valores para as variveis PRECO_UNIT e QUANT.Um usurio diferente daquele que criou o programa, a no ser que esteja bem treinado no uso do mesmo, poder encontrar dificuldades na interao com o programa. Ele pode confundir a ordem em que os dados devem ser fornecidos ou simplesmente esquecer o que o programa deseja que ele digite. Ao trmino da execuo o programa escreve como resultado um nmero que pode no possuir nenhum significado ao usurio se este no souber a finalidade para a qual o algoritmo foi concebido. Uma preocupao constante de um bom programador deve ser a de conceber um programa "amigo do usurio". Esta preocupao traduzida no planejamento de urna interface com o usurio (meio pelo qual um programa e o usurio "conversam") bastante amigvel. Em termos prticos, isto se resume aplicao de duas regras bsicas:

- 30 -

Algoritmo

toda vez que um programa estiver esperando que o usurio fornea a ele um determinado dado (operao de leitura), ele deve antes enviar uma mensagem dizendo ao usurio o que ele deve digitar, por meio de uma instruo de sada de dados; antes de enviar qualquer resultado ao usurio, um programa deve escrever uma mensagem explicando o significado do mesmo. Estas medidas tornam o dilogo entre o usurio e o programador muito mais fcil. A verso final do algoritmo estudado mostrada na Figura 6.7. Fluxograma
Incio A

"Digite o preo unitrio:"

QUANT

PRECO_UNIT

PRECO_TOT aaa PRECO_UNIT * QUANT

"Digite a quantidade:"

"Preo total: ", PRECO_TOT

Fim

Pseudocdigo Algoritmo EXEMPLO_6.7 Var PRECO_UNIT, PRECO_TOT : real QUANT : inteiro Incio Escreva Digite o preo unitrio: Leia PRECO_UNIT Escreva Digite a quantidade: Leia QUANT PRECO_TOT PRECO_UNIT * QUANT Escreva Preo total: , PRECO_TOT Fim.
Figura 6.7 Exemplo de aplicao das instrues primitivas de atribuio,

- 31 -

Algoritmo
entrada e sada de dados num algoritmo.

6.4 Sntese
A instruo primitiva de atribuio avalia uma expresso e armazena o valor resultante numa varivel. O valor resultante da expresso e a varivel devem ter tipos compatveis. A instruo primitiva de sada de dados admite como argumentos uma lista de variveis, um literal, ou uma mistura de ambos. No primeiro caso, o valor de cada uma das variveis buscado na memria e colocado no dispositivo de sada. No caso de literais, estes so copiados diretamente no dispositivo de sada. A instruo primitiva de entrada de dados busca, no dispositivo de entrada, dados que so guardados nas posies de memria correspondentes s variveis da lista que lhe so passadas como argumento.

6.5 Exerccios Resolvidos


1. Escreva um algoritmo (fluxograma e pseudocdigo) para calcular a mdia entre dois nmeros quaisquer. Soluo: A idia principal do algoritmo est centrada na expresso matemtica utilizada no clculo da mdia (M) entre dois nmeros, N1 e N2, dada por: M = (N1 + N2) / 2 Para que o valor de M possa ser calculado pelo algoritmo, necessrio que os valores de N1 e N2 tenham sido fornecidos ao mesmo com antecedncia. Portanto, a primeira etapa do algoritmo consiste da obteno (leitura) dos valores de N1 e N2 e armazenamento dos mesmos em posies distintas de memria (variveis). Na seqncia, o valor da mdia deve ser calculado por meio de uma expresso apropriada e atribudo a uma terceira varivel (M). Por fim, deve-se relatar ao usurio o valor calculado por meio de uma instruo primitiva de sada de dados. O fluxograma do algoritmo descrito mostrado a seguir. Note que ele est enriquecido com instrues para informar sua finalidade, os dados que devem ser fornecido ao usurio e o significado do valor calculado.

- 32 -

Algoritmo
A

Incio

"Algoritmo para calcular a mdia entre dois nmeros"

N2

"Digite o primeiro nmero: "

M aaa (N1 + N2) / 2

N1 "A mdia ", M

"Digite o segundo nmero: " Fim A

- 33 -

Algoritmo
A transformao do fluxograma em pseudocdigo exige a disponibilidade de algumas informaes adicionais concernentes ao tipo das variveis utilizadas. Como o algoritmo opera apenas com dados numricos, certamente as variveis utilizadas sero do tipo inteiro ou real. Como se deseja calcular a mdia entre dois nmeros quaisquer, ento as variveis N1 e N2 devem ser capazes de armazenar nmeros com ou sem parte fracionria e, portanto, necessrio que estas sejam do tipo real. Como o valor mdio entre dois nmeros reais um nmero que pode ou no ter parte fracionria, ento a varivel M tambm deve ser do tipo real. De posse dessa informao, pode-se escrever o pseudocdigo do algoritmo em questo, a partir de seu fluxograma. Algoritmo MEDIA Var N1, N2, M : real Incio Escreva Algoritmo para calcular a mdia entre dois nmeros Escreva Digite o primeiro nmero: Leia N1 Escreva Digite o segundo nmero: Leia N2 M (N1 + N2) / 2 Escreva O valor da mdia :, M Fim. 2. Escreva um algoritmo para calcular o valor de y como funo de x, segundo a funo y(x) = 3x + 2, num domnio real. Soluo: Essencialmente o algoritmo usado na soluo deste problema consiste na obteno do valor de x para o qual se deseja calcular a funo, o clculo desta propriamente dito e a mostra do resultado obtido ao usurio: Veja fluxograma correspondente a seguir:
Incio A

"Algoritmo para calcular y = 3x + 2"

Y aaa 3 * X + 2 "X:" "Y = ", Y

Fim

- 34 -

Algoritmo
Para que se possa escrever o pseudocdigo do algoritmo deve-se decidir qual ser o tipo das variveis X e Y. Como especificado no enunciado do problema, o algoritmo deve operar num domnio real e, portanto, as variveis X e Y devem ser do tipo real. Ento, o pseudocdigo fica assim: Algoritmo FUNCAO_DE_X Var X, Y : real Incio Escreva Algoritmo para calcular y = 3x +2 Escreva X: Leia X Y3*X+2 Escreva Y = , Y Fim. 3. Escreva um algoritmo para calcular o consumo mdio de um automvel (medido em Km/l), dado que so conhecidos a distncia total percorrida e o volume de combustvel consumido para percorr-la (medido em litros). Soluo: A principal questo a ser levantada na obteno do algoritmo pedido consiste na formulao da expresso usada para calcular o consumo mdio (CM) a partir da distncia total percorrida (DIST) e do volume de combustvel consumido (VOL), que dada por: CM = DIST / VOL Uma vez obtida esta expresso, a formulao do algoritmo desejado consiste em uma simples repetio daqueles apresentados nas questes anteriores: deve-se obter o valor das variveis DIST e VOL, calcular o consumo pela expresso acima e, finalmente, mostrar ao usurio o valor calculado. O fluxograma correspondente ao algoritmo o seguinte:
Incio A B

"Algoritmo para calcular o consumo"

DIST

CM aaa DIST / VOL

"Volume de combustvel gasto (L):" "Distncia total percorrida (Km):" VOL

"Consumo mdio = ", CM, "Km/l"

Fim

- 35 -

Algoritmo
Assumindo que todas as variveis utilizadas (CM, DIST e VOL) so do tipo real, podese escrever o pseudocdigo seguinte para o fluxograma anterior: Pseudocdigo Algoritmo CONSUMO_MEDIO Var CM, DIST, VOL : real Incio Escreva Algoritmo para calcular o consumo Escreva Distncia total percorrida (Km): Leia DIST Escreva Volume de combustvel gasto (L): Leia VOL CM DIST / VOL Escreva Consumo mdio =, CM, Km/l Fim.

6.6 Exerccios Propostos


Para cada um dos problemas propostos a seguir, expresse um algoritmo que pode ser usado em sua soluo na forma de fluxograma e pseudocdigo. 1. Calcule a mdia de quatro nmeros inteiros dados. 2. Leia uma temperatura dada na escala Celsius (C) e imprima o equivalente em Fahrenheit (F). (Frmula de converso: F = 9/5 * C + 32) 3. Leia uma quantidade de chuva dada em polegadas e imprima o equivalente em milmetros (25,4 mm = 1 polegada). 4. Calcule o quadrado de um nmero, ou seja, o produto de um nmero por si mesmo. 5. O custo ao consumidor de um carro novo a soma do custo de fbrica com a porcentagem do distribuidor e dos impostos, ambos aplicados ao custo de fbrica. Supondo que a porcentagem do distribuidor seja de 12% e a dos impostos de 45%, prepare um algoritmo para ler o custo de fbrica do carro e imprimir o custo ao consumidor. 6. O cardpio de uma lanchonete dado abaixo. Prepare um algoritmo que leia a quantidade de cada item que voc consumiu e calcule a conta final. Hambrguer................. R$ 3,00 Cheeseburger.............. R$ 2,50 Fritas............................ R$ 2,50 Refrigerante ................. R$ 1,00 Milkshake..................... R$ 3,00 7. Uma companhia de carros paga a seus empregados um salrio de R$ 500,00 por ms mais uma comisso de R$ 50,00 para cada carro vendido e mais 5% do valor da venda. Elabore um algoritmo para calcular e imprimir o salrio do vendedor num dado ms recebendo como dados de entrada o nome do vendedor, o nmero de carros vendidos e o valor total das vendas. 8. Calcule a mdia de um aluno na disciplina de MDS. Para isso solicite o nome do aluno, a nota da prova e a nota qualitativa. Sabe-se que a nota da prova tem peso 2 e a nota qualitativa peso 1. Mostre a mdia como resultado.

- 36 -

Você também pode gostar