apostila programaÇÃo ufrn

Upload: alicethuller

Post on 06-Feb-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    1/33

    Algoritmo e Lgica de programao

    - 1 -

    Universidade Federal do Rio Grande do Norte

    Centro de Tecnologia

    Departamento de Computao e Automao

    Algoritmo e Lgica de ProgramaoAlgoritmos Parte 1

    DCA 800 Eng. Qumica

    Maio / 2004

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    2/33

    Algoritmo e Lgica de programao

    - 2 -

    Captulo 1 ........................................................................................................... 3Introduo....................................................................................................... 3

    1. Conceito de Algoritmo............................................................................. 31.1 Algumas Definies de Algoritmo ......................................................... 3

    Captulo 2 ........................................................................................................... 4Formas de Representao de Algoritmos....................................................... 4

    2.1 Descrio Narrativa............................................................................... 42.2 Fluxograma Convencional..................................................................... 42.3 Pseudocdigo ....................................................................................... 52.4 Sntese .................................................................................................. 6

    Captulo 3 ........................................................................................................... 7Tipos de Dados............................................................................................... 7

    3.1 Dados Numricos.................................................................................. 73.2 Dados Literais ....................................................................................... 83.3 Dados Lgicos ...................................................................................... 9

    3.4 Sntese .................................................................................................. 93.5 Exerccio Proposto .............................................................................. 10

    Captulo 4 ......................................................................................................... 11Variveis....................................................................................................... 11

    4.2 Armazenamento de Dados na Memria.............................................. 114.3 Conceito e Utilidade de Variveis ....................................................... 134.4 Definio de Variveis em Algoritmos................................................. 144.5 Sntese ................................................................................................ 154.6 Exerccios Propostos........................................................................... 15

    Captulo 5 ......................................................................................................... 24Expresses ................................................................................................... 24

    5.1 Conceito .............................................................................................. 245.2 Operadores ......................................................................................... 245.3 Tipos de Expresses........................................................................... 255.4 Sntese ................................................................................................ 275.6 Exerccios Propostos........................................................................... 28

    Captulo 6 ......................................................................................................... 27Instrues Primitivas..................................................................................... 27

    6.1 Instruo Primitiva de Atribuio......................................................... 286.2 Instruo Primitiva de Sada de Dados ............................................... 296.3 Instruo Primitiva de Entrada de Dados.............................................. 1

    6.4 Sntese ................................................................................................ 326.5 Exerccios Resolvidos ......................................................................... 326.6 Exerccios Propostos........................................................................... 36

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    3/33

    Algoritmo e Lgica de programao

    - 3 -

    Captulo 1

    Introduo

    1. Conceito de Algoritmo

    A automao o processo em que uma tarefa deixa de ser desempenhada pelohomem 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 mquinaque passar a realiz-la seja capaz de desempenhar cada uma das etapas constituintes doprocesso a ser automatizado com eficincia, de modo a garantir a repetibilidadedo mesmo.Assim, necessrio que seja especificado com clareza e exatido o que deve ser realizado emcada 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 arealizao 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 parasatisfazer s necessidades da computao. Pelo contrrio, a programao de computadores apenas um dos campos de aplicao dos algoritmos. Na verdade, h inmeros casos quepodem exemplificar o uso (involuntrio ou no) de algoritmos para a padronizao do exercciode tarefas rotineiras (vide exemplos da Seo 2.1). No entanto, daqui adiante a ateno destaapostila 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 sechama de programa. Neste sentido, um programa de computador nada mais que umalgoritmo escrito numa forma compreensvel pelo computador (linguagem de programao).

    1.1 Algumas Definies de Algoritmo

    "Serve como modelo para programas, pois sua linguagem intermediria linguagemhumana e s linguagens de programao, sendo ento, uma boa ferramenta na validao dalgica de tarefas a serem automatizadas."

    Os algoritmos, servem para representar a soluo de qualquer problema, mas no casodo Processamento de Dados, eles devem seguir as regras bsicas de programao para quesejam compatveis com as linguagens de programao.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    4/33

    Algoritmo e Lgica de programao

    - 4 -

    Captulo 2

    Formas de Representao de Algoritmos

    Existem diversas formas de representao de algoritmos, mas no h um consensocom relao melhor delas.

    O critrio usado para classificar hierarquicamente estas formas est diretamente ligadoao nvel de detalhe ou, inversamente, ao grau de abstrao oferecido.

    Algumas formas de representao de algoritmos tratam os problemas apenas em nvellgico, abstraindo-se de detalhes de implementao muitas vezes relacionados com algumalinguagem de programao especfica. Por outro lado existem formas de representao de

    algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam porobscurecer 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 linguagemnatural. Como exemplo, tm-se os algoritmos seguintes:

    Receita de bolo:

    Misture os ingredientesUnte a forma com manteigaDespeje a mistura na formaSe houver coco raladoento despeje sobre a misturaLeve a forma ao fornoEnquanto no corardeixe a forma no fornoRetire do fornoDeixe esfriar

    Troca de um pneu furado:

    Afrouxar ligeiramente as porcasSuspender o carroRetirar as porcas e o pneuColocar o pneu reservaApertar as porcas

    Abaixar o carroDar o aperto final nas porcas

    Tomando um banho:

    Entrar no banheiro e tirar a roupaAbrir a torneira do chuveiroEntrar na guaEnsaboar-seSair da guaFechar a torneiraEnxugar-seVestir-se

    Clculo da mdia de um aluno:

    Obter as suas 2 notas de provasCalcular a mdia aritmticaSe a mdia for maior que 7,o aluno foi aprovado,

    seno ele foi reprovado

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    5/33

    Algoritmo e Lgica de programao

    - 4 -

    Esta representao pouco usada na prtica porque o uso da linguagem naturalmuitas vezes d oportunidade a ms interpretaes, ambigidades e imprecises.

    Por exemplo, a instruo "afrouxar ligeiramente as porcas" no algoritmo da troca depneus 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 diferentesimplicam aes (instrues, comandos) distintos. Tal propriedade facilita o entendimento dasidias 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 comdetalhes de implementao do programa, como o tipo das variveis usadas.

    Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nvel fsicoda implementao do algoritmo. Por exemplo, figuras geomtricas diferentes so adotadaspara representar operaes de sada de dados realizadas em dispositivos distintos, como umafita magntica ou um monitor de vdeo. Como esta apostila no est interessada em detalhesfsicos 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, oApndice 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.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    6/33

    Algoritmo e Lgica de programao

    - 5 -

    De modo geral, um fluxograma se resume a um nico smbolo inicial por onde aexecuo do algoritmo comea, e um ou mais smbolos finais, que so pontos onde aexecuo do algoritmo se encerra. Partindo do smbolo inicial, h sempre um nico caminhoorientado a ser seguido, representando a existncia de uma nica seqncia de execuo dasinstrues. 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 saindodesta. Excees a esta regra so os smbolos finais, dos quais no h nenhum fluxo saindo, eos smbolos de deciso, de onde pode haver mais de um caminho de sada (usualmente doiscaminhos), representando uma bifurcao no fluxo.

    A Figura 2.2 mostra a representao do algoritmo de clculo da mdia de um aluno soba forma de um fluxograma.

    Incio

    N1, N2

    "Aprovado"

    MEDIA aaa(N1 + N2) / 2

    MEDIA >= 7

    "Reprovado"

    Fim

    .V. .F.

    Figura 2.2 Exemplo de um fluxograma convencional.

    2.3 Pseudocdigo

    Esta forma de representao de algoritmos rica em detalhes, como a definio dostipos das variveis usadas no algoritmo. Por assemelhar-se bastante forma em que osprogramas so escritos, encontra muita aceitao.

    Na verdade, esta representao suficientemente geral para permitir a traduo de umalgoritmo nela representado para uma linguagem de programao especfica seja praticamentedireta.

    A forma geral da representao de um algoritmo na forma de pseudocdigo a

    seguinte:

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    7/33

    Algoritmo e Lgica de programao

    - 6 -

    Algoritmo

    Incio

    Fim

    Algoritmo uma palavra que indica o incio da definio de um algoritmo em forma depseudocdigo.

    um nome simblico dado ao algoritmo com a finalidade dedistingui-los dos demais.

    consiste em uma poro opcional onde so declaradasas variveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos.

    consiste de uma poro opcional do pseudocdigo onde sodefinidos os subalgoritmos (Captulo 8).

    Incio e Fim so respectivamente as palavras que delimitam o incio e o trmino doconjunto de instrues do corpo do algoritmo.

    Como exemplo, a Figura 2.3 mostra a representao do algoritmo do clculo da mdiade um aluno, na forma de um pseudocdigo.

    AlgoritmoCalculo_MediaVarN1, N2, MEDIA: realIncioLeiaN1, N2MEDIA(N1 + N2) / 2SeMEDIA >= 7 ento

    EscrevaAprovadoSeno

    EscrevaReprovadoFim_seFim

    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 deabstrao que possibilitam com relao implementao do algoritmo em termos de umalinguagem de programao especfica.

    Dentre as principais formas de representao de algoritmos destacam-se: a descrionarrativa, o fluxograma convencionale o pseudocdigo(ou linguagem estruturada).

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    8/33

    Algoritmo e Lgica de programao

    - 7 -

    Captulo 3

    Tipos de Dados

    Todo o trabalho realizado por um computador baseado na manipulao dasinformaes contidas em sua memria. Grosso modo, estas informaes podem serclassificadas em dois tipos:

    As instrues, que comandam o funcionamento da mquina e determinam amaneira como devem ser tratados os dados. As instrues so especficas paracada modelo de computador, pois so funes do tipo particular de processadorutilizado 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. Narealidade, 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 tipode informao contida neles. A classificao apresentada no se aplica a nenhuma linguagemde programao especfica; pelo contrrio, ela sintetiza os padres utilizados na maioria daslinguagens.

    3.1 Dados Numricos

    Antes de apresentar formalmente os tipos de dados numricos, conveniente recordaralguns conceitos bsicos relacionados teoria dos nmeros e conjuntos.

    O conjunto dos nmeros naturais representado por Ne dado por:

    N= {1, 2, 3, 4, ...}

    Algumas correntes de matemticos tericos convencionam que o nmero 0 estcontido neste conjunto; contudo, no convm perder tempo em tais discusses filosficas, umavez 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 Zcontm todos os elementos de N, bem como alguns nmeros que nopertencem a N (os nmeros negativos e o zero). Portanto, dizemos que Nest contido em Z,ou ento, que Zcontm N.

    Englobando o conjunto dos nmeros inteiros, existe o conjunto dos nmerosfracionrios(Q), dado pelo universo dos nmeros que podem ser expressos na forma de umafrao, isto , um quociente onde o numerador e o denominador so nmeros inteiros. Maisformalmente:

    Q= ( p/q | p, q pertencem a

    Z}

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    9/33

    Algoritmo e Lgica de programao

    - 8 -

    Por ltimo, surge o conjunto dos nmeros reais (R), formado pela unio do conjuntodos nmeros fracionrios Q com o conjunto dos nmeros que no podem ser expressos naforma 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 oufracionrios, podendo ser positivos ou negativos.

    Os elementos pertencentes aos conjuntos Ne Z, apesar de serem representveis naclasse dos nmeros reais, so classificados como dados do tipo inteiro, por no possuremparte fracionria. Esta possibilidade interessante por permitir uma economia do espao dememria, como veremos adiante.

    Por sua vez, os elementos dos conjuntos Qe R, por possurem parte fracionria, nopodem ser representados na classe inteira, pertencendo necessariamente aos tipos de dadosditos reais.

    Como exemplos de nmeros inteirostemos:

    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 oufracionrios, e podem tambm ser positivos ou negativos.

    Como dito anteriormente, os elementos dos conjuntos de nmeros fracionriose reaisso 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 paradiferenciar um dado numrico do tipo inteirode 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.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    10/33

    Algoritmo e Lgica de programao

    - 9 -

    Usualmente, os dados literais so representados nos algoritmos pela coleo decaracteres, 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 oscomputadores 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 devalores lgicos como sim/no, 1/0, true/false.

    Nos algoritmos apresentados nesta apostila os valores lgicos sero delimitados pelocaractere 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 smbolosespeciais, delimitados por aspas ("). Seu comprimento dado pelo nmero de caracteres emstring.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    11/33

    Algoritmo e Lgica de programao

    - 10 -

    Os dados do tipo lgicos possuem dois valores possveis (.V.e .F.).

    A rvore abaixo resume a classificao dos dados com relao aos tipos de dadosapresentados.

    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 Iosdados do tipo inteiro, com Ros reais, com Los literais, com B os lgicos (booleanos), ecom Naqueles para os quais no possvel definir a priorium 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

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    12/33

    Algoritmo e Lgica de programao

    - 11 -

    Captulo 4

    Variveis

    A todo momento durante a execuo de qualquer tipo de programa os computadoresesto manipulando informaes representadas pelos diferentes tipos de dados descritos nocaptulo anterior. Para que no se "esquea" das informaes, o computador precisa guard-las em sua memria.

    Este captulo destinado ao estudo da forma como os computadores armazenam eacessam informaes contidas em sua memria.

    4.2 Armazenamento de Dados na Memria

    Cada um dos diversos tipos de dados apresentados no captulo anterior necessita deuma 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 nossubitens 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 (2 8)possibilidades diferentes.

    Uma informao do tipo literal nada mais do que um conjunto de caracteres quepodem ser letras, dgitos ou smbolos especiais.

    A unio de todos os caracteres existentes nos computadores resulta num conjunto comum nmero de elementos menor que 256. Deste resultado surgiu a idia de associar a cadacaractere um nmero (cdigo) variando de 0 a 255 (256 possibilidades). No princpio, cadafabricante de computador adotava uma conveno diferente para este cdigo. Maisrecentemente, esta conveno foi padronizada a fim de facilitar a portabilidade (migrao) deprogramas entre mquinas diferentes. Esta conveno representada na forma de uma tabelade 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 seucdigo 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 decaracteres nele contido. Portanto, para guardar um dado do tipo literal devemos alocar(reservar) um espao contguo de memria igual ao comprimento do mesmo, destinando umbyte 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, estesbytes 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

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    13/33

    Algoritmo e Lgica de programao

    - 12 -

    traduz um outro escrito em alguma linguagem de programao para outra geral, a linguagemde mquina do computador com que se trabalha).

    A Figura 4.3 mostra o caso em que se armazena a literal"banana" no conjunto de seisbytes 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 namemria.

    Endereo Informao

    0 b (98)

    1 a (97)

    2 n (110)

    3 a (97)

    4 n (110)

    5 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, aprincpio, 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, umainformao do tipo lgico armazenada em um byte de memria. De certa forma, se por umlado isto pode ser como um "desperdcio" de memria, por outro simplifica bastante aarquitetura 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 dedados 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 numcomputador. Faz-se necessrio realizar um estudo para que se limite o nmero de elementosrepresentveis deste conjunto.

    Se apenas um byte fosse utilizado para armazenar os dados do tipo inteiro, existiriamapenas 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 prticasnecessitam de nmeros inteiros maiores que estes.

    Se forem utilizados dois bytes para armazenar um nmero inteiro, o universo denmeros representveis cresce para 28x 28= 216= 65.536 possibilidades:

    {-32767, -32766, ..., -2, -1, 0, 1, 2, ..., 32767, 32768}

    Este conjunto satisfaz grande maioria das necessidades prticas. Assim, em geralutilizam-se dois bytes para representar os nmeros inteiros em computadores. Contudo, restamalgumas aplicaes muito especficas em que se precisa de um conjunto ainda maior. Para

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    14/33

    Algoritmo e Lgica de programao

    - 13 -

    estes casos, algumas linguagens de programao fornecem mecanismos para trabalharnmeros inteiros com quatro bytes. Nestes casos os dados so ditos inteiros longos ouestendidos.

    4.2.4 Armazenamento de Dados do Tipo Real

    O conjunto dos nmeros reais (R) contm um nmero infinito de elementos e, pelasmesmas razes que o conjunto dos nmeros inteiros, precisa ser limitado.

    Para dados deste tipo julgou-se apropriado adotar quatro bytes para sua representaointerna nos computadores.

    So muito comuns situaes como as aplicaes cientficas em que necessria umamaior preciso de clculo, intimamente ligada ao nmero de casas decimais dos dados. Paraeste caso, em analogia com o que acontece com os dados do tipo inteiro, algumas linguagensde 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 soarmazenadas na memria dos computadores. Para acessar individualmente cada uma destasinformaes, a princpio, seria necessrio saber o tipo de dado desta informao (ou seja, onmero de bytes de memria por ela ocupados) e a posio inicial deste conjunto de bytes namemria.

    Percebe-se que esta sistemtica de acesso a informaes na memria bastanteilegvel 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 dadoassociado mesma e a informaopor ela guardada.

    Nome

    Tipo dedado

    Informao

    Figura 4.4 Atributos de uma varivel.

    Toda varivel possui um nome que tem a funo de diferenci-la das demais. Cadalinguagem de programao estabelece suas prprias regras de formao de nomes devariveis. 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:

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    15/33

    Algoritmo e Lgica de programao

    - 14 -

    SALARIO1ANOANO1A CASA

    SAL/HORASAL_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 seremutilizadas. Isto se faz necessrio para permitir que o compilador reserve um espao namemria 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, pormeio de um comando de uma das formas seguintes:

    VAR :

    VAR :

    a palavra-chave VARdever estar presente sempre e ser utilizada uma nica vez nadefinio de um conjunto de uma ou mais variveis;

    numa mesma linha podero ser definidas uma ou mais variveis do mesmo tipo. Paratal, 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 darepresentao 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 : literal[10]IDADE : inteiro

    SALARIO : realTEM_FILHOS : lgico

    No exemplo acima foram declaradas quatro variveis:

    a varivel NOME, capaz de armazenar dados literais de comprimento 10 (dezcaracteres);

    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.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    16/33

    Algoritmo e Lgica de programao

    - 15 -

    4.5 Sntese

    A memria dos computadores composta por clulas numeradas ordenadamentedenominadas bytes. Cada byte constitudo por 8 bits.

    Cada tipo de dado requer um nmero diferente de bytes para armazenar a informaorepresentada por ele na memria. Esta quantidade tambm pode variar em funo do tipo decomputador considerado.

    Uma varivel uma entidade dotada de um nomepara diferenci-la das demais e umtipo de dadoque 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. Poroutro lado, a informao til da varivel objeto de constante modificao durante o decorrerdo programa, de acordo com o fluxo de execuo do mesmo.

    4.6 Exerccios Propostos

    1. Assinale com Cos identificadores corretos e com Ios incorretos. Explique o que esterrado nos identificadores incorretos.

    ( ) valor( ) _b248( ) nota*do*aluno( ) a1b2c3( ) 3 x 4( ) 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 notado aluno, o nome do aluno, o nmero da matrcula e o sexo, declare-as corretamente,associando o tipo adequado ao dado que ser armazenado.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    17/33

    Algoritmo e Lgica de programao

    - 24 -

    Captulo 5

    Expresses

    5.1 Conceito

    O conceito de expresso em termos computacionais est intimamente ligado aoconceito de expresso (ou frmula) matemtica, onde um conjunto de variveis e constantesnumricas relacionam-se por meio de operadores aritmticos compondo uma frmula que, umavez 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, eAREA, 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 expressoaplicado computao assume uma conotao mais ampla:uma expresso uma combinao de variveis, constantes e operadores, e que, uma vezavaliada, resulta num valor.

    5.2 Operadores

    Operadores so elementos funcionais que atuam sobre operandos e produzem umdeterminado resultado. Por exemplo, a expresso 3 + 2relaciona dois operandos (os nmeros3 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, osltimos podem ser classificados em:

    binrios, quando atuam sobre dois operandos. Ex.: os operadores das operaes

    aritmticas bsicas (soma, subtrao, multiplicao e diviso);

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    18/33

    Algoritmo e Lgica de programao

    - 25 -

    unrios, quando atuam sobre um nico operando. Ex.: o sinal de (-) na frente deum nmero, cuja funo inverter seu sinal.

    Outra classificao dos operadores feita considerando-se o tipo de dado de seusoperandos e do valor resultante de sua avaliao. Segundo esta classificao, os operadores

    dividem-se em aritmticos, lgicose literais. Esta diviso est diretamente relacionada como tipo de expresso onde aparecem os operadores.

    Um caso especial o dos operadores relacionais, que permitem comparar pares deoperandos 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 estosumarizados na Tabela 5.1.

    Tabela 5.1 Operadores aritmticos e sua ordem de prioridade.

    Operador Tipo Operao Prioridade+ Binrio Adio 4- Binrio Subtrao 4* Binrio Multiplicao 3/ Binrio Diviso 3** Binrio Exponenciao 2+ Unrio Manuteno de sinal 1- Unrio Inverso de sinal 1

    A prioridade entre operadores define a ordem em que os mesmos devem ser avaliadosdentro de uma mesma expresso. Este assunto ser tratado com maior profundidade numaseo posterior.

    O caractere (*) adotado na maioria das linguagens de programao para representara operao de multiplicao, ao invs do caractere (x), devido possibilidade da ocorrncia domesmo no nome de variveis. Pela mesma razo, o smbolo (**) adotado para representar aoperao 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 oureal. Se todas as variveis que aparecem numa expresso so do tipo inteiro, ento o valorresultante da expresso tambm do tipo inteiro. Se ao menos uma das variveis daexpresso aritmtica for do tipo real, ento o valor resultante da avaliao da expresso necessariamente do tipo real.

    Nos exemplos seguintes, assumiremos que:

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    19/33

    Algoritmo e Lgica de programao

    - 26 -

    A, Be Cso variveis do tipo inteiro;

    X,Ye Zso variveis do tipo real.

    Exemplos:

    A + B * C = expresso de resultado inteiroA + B + Y = expresso de resultado realA / B = expresso de resultado realX / Y = expresso de resultado real

    5.3.2 Expresses Lgicas

    Expresses lgicasso 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 suasfunes 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 Tipo Operao Prioridade.OU. Binrio Disjuno 3.E. Binrio Conjuno 2

    .NO. Unrio Negao 1

    Para exemplificar o uso de operadores lgicos, a Tabela 5.3 apresenta duas variveislgicas Ae B. Uma vez que cada varivel lgica possui somente dois valores possveis, entoh 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 combinaespossveis dos valores das variveis Ae B.

    Tabela 5.3 Tabela-Verdade dos operadores apresentados na Tabela 5.2.

    A B .NO. A .NO. B A .OU. B A .E. B.F. .F. .V. .V. .F. .F..F. .V. .V. .F. .V. .F..V. .F. .F. .V. .V. .F..V. .V. .F. .F. .V. .V.

    Tabelas como a da Figura 5.3 so chamadas de Tabelas-Verdade. Convm salientaras 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 seusoperandos seja verdadeiro; Para melhor visualizar este efeito, podemos imaginarque as variveis lgicas A e B so como dois interruptores ligados em paralelonum circuito de acionamento de uma lmpada (Figura 5.2).

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    20/33

    Algoritmo e Lgica de programao

    - 27 -

    Nas expresses lgicas onde aparecem apenas os operadores lgicos da Tabela 5.2somente variveis do tipo lgico podem ser usadas. Isto parece bvio, uma vez que osoperadores lgicos somente atuam sobre valores (constantes ou variveis) lgicos.

    H, ainda, outro tipo de operador que pode aparecer em operaes lgicas: osoperadores relacionais, mostrados na Tabela 5.4.

    Tabela 5.4 Operadores relacionais.

    Operador Operao= Igual

    Diferente< Menor

    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 domesmo tipo de dado. O resultado de uma comparao sempre um valor lgico.

    O uso de operadores relacionais possibilita o aparecimento em expresses lgicas devariveis de outros tipos de dados que no o lgico.

    5.3.3 Expresses Literais

    Expresses literaisso aquelas cujo resultado da avaliao um valor literal. Este tipo

    de expresso bem menos freqente que os anteriores. Os tipos de operadores existentesvariam 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 deconcatenao de strings: toma-se duas strings e acrescenta-se (concatena-se) a segundadelas 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 onmero de operandos sobre os quais atua, um operador pode ser classificado em unriooubinrio. 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 deoperandos 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);

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    21/33

    Algoritmo e Lgica de programao

    - 28 -

    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 deempate, a avaliao se faz da esquerda para a direita.

    2. O uso de parnteses em subexpresses fora a avaliao das mesmas com maiorprioridade.

    3. Os diversos tipos d operadores devem ser avaliados na seguinte seqncia dentrode uma expresso complexa: primeiro os aritmticos e literais; a seguir, osrelacionais e, por ltimo, os lgicos.

    5.6 Exerccios Propostos

    1. Dada a declarao de variveis:

    VAR A, B, C : inteiroX, Y, Z : realNOME, RUA : literal[20]L1, L2 : lgico

    Classifique as expresses seguintes de acordo com o tipo de dado do resultado de suaavaliao, em I(inteiro), R (real), L(literal), B(lgico) ou N (quando no for possveldefini-lo):

    ( ) A + B + C( ) A + B + Z( ) NOME + RUA( ) A B( ) A Y( ) 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 valoresseguintes:

    A= 1

    B= 2C= 3X= 2.0Y= 10.0

    Z= -1.0

    L1= .V.NOME= PEDRORUA= PEDRINHOL2= .F.

    Determine o resultado da avaliao das expresses abaixo:

    A + C / B ___________________________________________________________

    A + B + C __________________________________________________________

    C / B / A ___________________________________________________________

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    22/33

    Algoritmo e Lgica de programao

    - 26 -

    -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) _________________________________________________

    _____________________________________________________________________

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    23/33

    Algoritmo e Lgica de programao

    - 27 -

    Captulo 6

    Instrues Primitivas

    Como o prprio nome diz, instrues primitivas so os comandos bsicos queefetuam tarefas essenciais para a operao dos computadores, como entrada e sada dedados (comunicao com o usurio e com os dispositivos perifricos), e movimentao dosmesmos na memria. Estes tipos de instruo esto presentes na absoluta maioria daslinguagens 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 mundoexterior e, portanto, no tem utilidade alguma.

    Antes de passar descrio das instrues primitivas, necessria a definio dealguns termos que sero utilizados mais frente:

    Dispositivo de entrada o meio pelo qual as informaes (mais especificamenteos dados) so transferidas pelo usurio ou pelos nveis secundrios de memria aocomputador. Os exemplos mais comuns so: o teclado, o carto perfurado (jobsoleto), as fitas e os discos magnticos, entre outros;

    Dispositivo de sada o meio pelo qual as informaes (geralmente, osresultados da execuo de um programa) so transferidas pelo computador aousurio 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 serentendidos pelo tradutor de programas. A violao das regras sintticas

    considerada um erro sujeito pena do no-reconhecimento do comando por partedo tradutor;

    Semntica o significado, ou seja, o conjunto de aes que sero exercidas pelocomputador durante a execuo do referido comando.

    Daqui por diante, todos os comandos novos sero apresentados por meio de suasintaxe e sua semntica, isto , a forma como devem ser escritos e a(s) ao(es) queexecutam.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    24/33

    Algoritmo e Lgica de programao

    - 28 -

    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 :

    Em termos de fluxograma, os comandos de atribuio so representados como naFigura 6.1.

    aa

    Figura 6.1 Forma de representao de comandos de atribuio em fluxogramas.

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

    Fluxograma

    Incio

    PRECO_UNIT aaa 5.0

    QUANT aaa 10

    PRECO_TOT aaaPRECO_UNIT *

    QUANT

    Fim

    Pseudocdigo

    AlgoritmoEXEMPLO_6.1Var PRECO_UNIT, PRECO_TOT : real

    QUANT : inteiroIncio

    PRECO_UNIT 5.0QUANT 10PRECO_TOT PRECO_UNIT * QUANT

    Fim.

    Figura 6.2 Exemplo de aplicao de comandos de atribuio.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    25/33

    Tcnicas de Programao

    - 29 -

    6.2 Instruo Primitiva de Sada de Dados

    As instrues primitivas de sada de dados so o meio pelo qual informaes contidasna memria dos computadores so colocadas nos dispositivos de sada, para que o usuriopossa visualiz-las.

    H duas sintaxes possveis para esta instruo:

    Escreva

    ou

    Escreva

    Daqui por diante, Escrevaser considerada uma palavra reservada e no mais poder

    ser utilizada como nome de varivel, de modo que toda vez que for encontrada em algoritmosser 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 naFigura 6.3.

    ou

    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 reservadaEscreva, 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 argumentosdo comando so enviados para o dispositivo de sada. No caso de uma lista de variveis, ocontedo de cada uma delas pesquisado na posio de memria correspondente varivel edepois enviado para o dispositivo de sada. No caso de argumentos do tipo string, estes soenviados diretamente ao referido dispositivo.

    H, ainda, a possibilidade de se misturar nomes de variveis com literais na lista de ummesmo comando. O efeito obtido bastante til e interessante: a lista lida da esquerda paraa direita e cada elemento da mesma tratado separadamente; se um nome de varivel forencontrado, ento a informao da mesma pega da memria e colocada no dispositivo desada; 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.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    26/33

    Tcnicas de Programao

    - 1 -

    Fluxograma

    Incio

    PRECO_UNIT aaa 5.0

    QUANT aaa 10

    PRECO_TOT aaaPRECO_UNIT *

    QUANT

    Fim

    PRECO_TOT

    Pseudocdigo

    AlgoritmoEXEMPLO_6.4Var PRECO_UNIT, PRECO_TOT : real

    QUANT : inteiro

    IncioPRECO_UNIT 5.0QUANT 10PRECO_TOT PRECO_UNIT * QUANTEscrevaPRECO_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 eQUANT permanecem inalterados. Seria interessante que estes valores pudessem serfornecidos 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 deentrada de dados foi criada para suprir esta necessidade.

    Sua sintaxe :

    Leia

    Da mesma forma que Escreva, daqui em diante Leiaser tratada como uma palavra-reservada e no mais poder ser usada como nome de varivel em algoritmos. Alista_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 emfluxogramas. Esta representao dispensa o uso da palavra-reservada Leia, pelo fato damesma j estar de certo modo embutida na forma geomtrica da figura.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    27/33

    Algoritmo e Lgica de Programao

    - 30 -

    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 nalista_de_variveis.

    O algoritmo da Figura 6.4, modificado para que os valores das variveis PRECO_UNITe QUANTsejam lidos no dispositivo de entrada, est na Figura 6.6.

    Pseudocdigo

    AlgoritmoEXEMPLO_6.6Var PRECO_UNIT, PRECO_TOT : real

    QUANT : inteiroIncio

    LeiaPRECO_UNIT, QUANT

    PRECO_TOT PRECO_UNIT * QUANTEscrevaPRECO_TOT

    Fim.

    Fluxograma

    Incio

    PRECO_TOT aaaPRECO_UNIT *

    QUANT

    PRECO_UNIT,QUANT

    Fim

    PRECO_TOT

    A

    B

    Figura 6.6 Exemplo de aplicao da instruo primitiva deentrada 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 variveisPRECO_UNITe QUANT.Um usurio diferente daquele que criou o programa, a no ser queesteja bem treinado no uso do mesmo, poder encontrar dificuldades na interao com oprograma. Ele pode confundir a ordem em que os dados devem ser fornecidos ousimplesmente esquecer o que o programa deseja que ele digite. Ao trmino da execuo oprograma escreve como resultado um nmero que pode no possuir nenhum significado aousurio 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 umprograma "amigo do usurio". Esta preocupao traduzida no planejamento de urna

    interface com o usurio (meio pelo qual um programa e o usurio "conversam") bastanteamigvel. Em termos prticos, isto se resume aplicao de duas regras bsicas:

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    28/33

    Algoritmo e Lgica de Programao

    - 31 -

    toda vez que um programa estiver esperando que o usurio fornea a ele umdeterminado dado (operao de leitura), ele deve antes enviar uma mensagemdizendo ao usurio o que ele deve digitar, por meio de uma instruo de sada dedados;

    antes de enviar qualquer resultado ao usurio, um programa deve escrever umamensagem 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

    PRECO_UNIT

    "Digite o preounitrio:"

    "Digite a quantidade:"

    PRECO_TOT aaaPRECO_UNIT *

    QUANT

    Fim

    "Preo total: ",PRECO_TOT

    QUANT

    A

    A

    Pseudocdigo

    AlgoritmoEXEMPLO_6.7Var PRECO_UNIT, PRECO_TOT : real

    QUANT : inteiroIncio

    EscrevaDigite o preo unitrio: LeiaPRECO_UNITEscrevaDigite a quantidade: LeiaQUANTPRECO_TOT PRECO_UNIT * QUANTEscrevaPreo total: , PRECO_TOT

    Fim.

    Figura 6.7 Exemplo de aplicao das instrues primitivas de atribuio,

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    29/33

    Algoritmo e Lgica de Programao

    - 32 -

    entrada e sada de dados num algoritmo.

    6.4 Sntese

    A instruo primitiva de atribuio avalia uma expresso e armazena o valorresultante numa varivel. O valor resultante da expresso e a varivel devem ter tiposcompatveis.

    A instruo primitiva de sada de dados admite como argumentos uma lista devariveis, um literal, ou uma mistura de ambos. No primeiro caso, o valor de cada uma dasvariveis buscado na memria e colocado no dispositivo de sada. No caso de literais, estesso copiados diretamente no dispositivo de sada.

    A instruo primitiva de entrada de dados busca, no dispositivo de entrada, dadosque so guardados nas posies de memria correspondentes s variveis da lista que lhe sopassadas como argumento.

    6.5 Exerccios Resolvidos

    1. Escreva um algoritmo (fluxograma e pseudocdigo) para calcular a mdia entre doisnmeros quaisquer.

    Soluo:

    A idia principal do algoritmo est centrada na expresso matemtica utilizada noclculo da mdia (M) entre dois nmeros, N1e N2, dada por:

    M = (N1 + N2) / 2

    Para que o valor de Mpossa ser calculado pelo algoritmo, necessrio que os valoresde N1e N2tenham sido fornecidos ao mesmo com antecedncia. Portanto, a primeiraetapa do algoritmo consiste da obteno (leitura) dos valores de N1 e N2 earmazenamento dos mesmos em posies distintas de memria (variveis).

    Na seqncia, o valor da mdia deve ser calculado por meio de uma expressoapropriada e atribudo a uma terceira varivel (M).

    Por fim, deve-se relatar ao usurio o valor calculado por meio de uma instruoprimitiva de sada de dados.

    O fluxograma do algoritmo descrito mostrado a seguir. Note que ele est enriquecidocom instrues para informar sua finalidade, os dados que devem ser fornecido aousurio e o significado do valor calculado.

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    30/33

    Algoritmo e Lgica de Programao

    - 33 -

    Incio

    N1

    "Digite o primeironmero: "

    "Digite o segundonmero: "

    "Algoritmo para calculara mdia entre dois

    nmeros"

    M aaa (N1 + N2) / 2

    Fim

    "A mdia ", M

    N2

    A

    A

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    31/33

    Algoritmo e Lgica de Programao

    - 34 -

    A transformao do fluxograma em pseudocdigo exige a disponibilidade de algumasinformaes adicionais concernentes ao tipo das variveis utilizadas. Como o algoritmoopera apenas com dados numricos, certamente as variveis utilizadas sero do tipointeiro ou real. Como se deseja calcular a mdia entre dois nmeros quaisquer, entoas 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 mdioentre dois nmeros reais um nmero que pode ou no ter parte fracionria, ento avarivel Mtambm deve ser do tipo real.

    De posse dessa informao, pode-se escrever o pseudocdigo do algoritmo emquesto, a partir de seu fluxograma.

    AlgoritmoMEDIAVar N1, N2, M : realIncio

    EscrevaAlgoritmo para calcular a mdia entre dois nmerosEscrevaDigite o primeiro nmero: LeiaN1

    EscrevaDigite o segundo nmero: LeiaN2M (N1 + N2) / 2EscrevaO valor da mdia :, M

    Fim.

    2. Escreva um algoritmo para calcular o valor de ycomo funo de x, segundo a funoy(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 ea mostra do resultado obtido ao usurio:

    Veja fluxograma correspondente a seguir:

    Incio

    "X:"

    "Algoritmo paracalcular

    y = 3x + 2"

    Y aaa 3 * X + 2

    Fim

    "Y = ", Y

    A

    A

    X

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    32/33

    Algoritmo e Lgica de Programao

    - 35 -

    Para que se possa escrever o pseudocdigo do algoritmo deve-se decidir qual ser otipo das variveis X e Y. Como especificado no enunciado do problema, o algoritmodeve operar num domnio real e, portanto, as variveis Xe Ydevem ser do tipo real.Ento, o pseudocdigo fica assim:

    AlgoritmoFUNCAO_DE_XVarX, Y : realIncio

    EscrevaAlgoritmo para calculary = 3x +2

    EscrevaX: LeiaXY 3 * X + 2EscrevaY = , 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 combustvelconsumido para percorr-la (medido em litros).

    Soluo:

    A principal questo a ser levantada na obteno do algoritmo pedido consiste naformulao da expresso usada para calcular o consumo mdio (CM) a partir dadistncia 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 ovalor 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

    "Distncia totalpercorrida (Km):"

    "Algoritmo para calcularo consumo"

    CM aaa DIST / VOL

    Fim

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

    A

    B

    DIST

    "Volume decombustvelgasto (L):"

    B

    A

    VOL

  • 7/21/2019 APOSTILA PROGRAMAO UFRN

    33/33

    Algoritmo e Lgica de Programao

    Assumindo que todas as variveis utilizadas (CM, DISTe VOL) so do tipo real, pode-se escrever o pseudocdigo seguinte para o fluxograma anterior:

    Pseudocdigo

    AlgoritmoCONSUMO_MEDIOVar CM, DIST, VOL : realIncio

    EscrevaAlgoritmo para calcular o consumoEscrevaDistncia total percorrida (Km): LeiaDISTEscrevaVolume de combustvel gasto (L): LeiaVOLCM DIST / VOLEscrevaConsumo mdio =, CM, Km/l

    Fim.

    6.6 Exerccios Propostos

    Para cada um dos problemas propostos a seguir, expresse um algoritmo que pode serusado 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 emFahrenheit (F). (Frmula de converso: F = 9/5 * C + 32)

    3. Leia uma quantidade de chuva dada em polegadas e imprima o equivalente emmilmetros (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 aporcentagem 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 aoconsumidor.

    6. O cardpio de uma lanchonete dado abaixo. Prepare um algoritmo que leia aquantidade de cada item que voc consumiu e calcule a conta final.

    Hambrguer................. R$ 3,00

    Cheeseburger.............. R$ 2,50Fritas............................ R$ 2,50Refrigerante................. R$ 1,00Milkshake..................... R$ 3,00

    7. Uma companhia de carros paga a seus empregados um salrio de R$ 500,00 por msmais uma comisso de R$ 50,00 para cada carro vendido e mais 5% do valor davenda. Elabore um algoritmo para calcular e imprimir o salrio do vendedor num dadoms recebendo como dados de entrada o nome do vendedor, o nmero de carrosvendidos 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.