Vous êtes sur la page 1sur 42

Apostila da Disciplina de Lgica de Programao

Prof. Me. Fbio Magalhes


Professor do Curso de Sistemas de Informao Universidade Nove de Julho - Uninove

http://fabiologica.blogspot.com

1 Semestre / 2010 11/02/2010

1 - Introduo disciplina de Lgica de Programao


Esta pequena apostila resultado da agregao de diversos materiais pesquisados, e rene o contedo bsico para o desenvolvimento da disciplina de Lgica de Programao, do curso de Sistemas de Informao da Universidade Nove de Julho Uninove - 1 Semestre / 2010. Programao da disciplina, materiais auxiliares, listas de exerccios, exerccios para o laboratrio, correo das mesmas estaro disponveis no blog do professor.

2 Lgica de Programao 2.1 - O que Lgica?


a arte de pensar corretamente e, visto que a forma mais complexa do pensamento o raciocnio, a Lgica estuda ou tem em vista a correo do raciocnio. Podemos ainda dizer que a lgica tem em vista a ordem da razo. Isto d a entender que a nossa razo pode funcionar desordenadamente, pode pr as coisas de pernas para o ar. Por isso a Lgica ensina a colocar Ordem no Pensamento. Exemplos: a) Todo o mamfero animal. Todo cavalo mamfero. Portanto, todo cavalo animal. b) Todo mamfero bebe leite. O homem bebe leite. Portanto, todo homem mamfero e animal.

2.2 - Existe Lgica no dia-a-dia?


Sempre que pensamos, o raciocnio e a lgica nos acompanham necessariamente. Tambm quando falamos, pois a palavra falada a representao do pensamento; e, visto que a palavra escrita a representao da palavra falada, tambm pensamos quando escrevemos, utilizando a Lgica ou a Ilgica. Da percebemos a importncia da Lgica na nossa vida no s na teoria, como tambm na prtica, j que quando queremos pensar, falar ou escrever corretamente precisamos colocar em Ordem o Pensamento, isto , utilizar a Lgica. Exemplos: a) A gaveta est fechada. A bala est na gaveta. Preciso primeiro abrir a gaveta, para depois pegar a bala. b) Joo mais velho que Jos. Marcelo mais novo que Jos. Portanto, Joo mais velho que Marcelo.

2.3 - O que Algoritmo?


Algoritmo uma seqncia de passos que visam atingir um objetivo bem definido. Apesar de achar este nome estranho, algoritmos so comuns em nosso cotidiano, como, por exemplo, uma receita de bolo. Nela est descrita uma srie de ingredientes necessrios, uma seqncia de diversos passos - aes - a serem cumpridos para que se consiga fazer determinado tipo de bolo que um objetivo bem definido. 2

Em geral um algoritmo destina-se a resolver um problema: fixa um padro de comportamento a ser seguido, uma norma de execuo a ser trilhada, com o objetivo de alcanar a soluo de um problema.

2.4 - O que padro de comportamento?


Imagine a seguinte seqncia de nmeros: 1, 3, 5, 7, 9, 11.... Para determinar o stimo elemento da srie, precisamos descobrir qual a sua regra de formatao, isto , seu padro de comportamento. Para tal, observamos que a srie obedece a uma constncia; visto que existe uma diferena constante entre cada elemento, a qual pode ser facilmente determinada, somos capazes de determinar o stimo e qualquer outro termo. Podemos, ento, descrever uma atividade bem quotidiana, como, por exemplo, trocar uma lmpada. Apesar de aparentemente bvias demais, muitas vezes fazemos esse tipo de atividade inconscientemente. Sem percebermos seus pequenos detalhes. Vejamos se ela fosse descrita passo a passo: - pegue a escada; - posicione-a embaixo da lmpada; - busque uma lmpada nova; - suba na escada; - retire a lmpada velha; - coloque a lmpada nova. Involuntariamente, j seguimos uma determinada seqncia de aes que, representadas neste algoritmo, fazem com que ele seja seguido naturalmente por pessoas, estabelecendo um padro de comportamento.

2.5 Programao
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). assim tambm com os algoritmos escritos para computador, voc deve especificar todos os passos, para que o computador possa chegar ao objetivo. Por exemplo:
Dados os nmeros naturais(N) 0, 1, 2, 3, 4, 5, 6, ... passo1 faa N igual a zero passo2 some 1 a N passo3 volte ao passo 2 Soma dos primeiros 100 nmeros naturais: passo1 faa N igual a zero passo2 some 1 a N passo3 se N for menor ou igual a 100 ento volte ao passo 2 seno pare

Nos dois exemplos acima, o primeiro possui repertrio bem definido, mas no finito, enquanto que o segundo tem um critrio de parada, ou seja, finito e descreve um padro de comportamento, ou seja, temos um algoritmo. 3

2.6 Programa
Programas so processos de automao. 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.

2.7 Etapas de um programa


Ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em trs fases fundamentais, como se conceitua Processamento de Dados:

Entrada

Processamento

Sada

Onde temos:

2.7.1 Entrada
So os dados de entrada do algoritmo. Hardwares para entradas de dados: teclado, mouse, microfone, scanner

2.7.2 Processamento
So os procedimentos utilizados para chegar ao resultado final.

2.7.3 Sada
So os dados j processados. Hardwares para sada de dados: impressora, monitor, caixa de som

3 - Formas de Representao de Algoritmos


Existem diversas formas de representao de algoritmos, mas no h um consenso com relao melhor delas. Dentre as formas de representao de algoritmos mais conhecidas podemos citar: - Descrio Narrativa; - Fluxograma; - Pseudocdigo, tambm conhecido como Linguagem Estruturada ou Portugol. 4

3.1 - Descrio Narrativa


Nesta forma de representao os algoritmos so expressos diretamente em linguagem natural. Como exemplo tem-se os algoritmos seguintes: Troca de um pneu furado: 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 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

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". Vantagens: - O portugus bastante conhecido por ns; Desvantagens: - Impreciso; - Pouca confiabilidade (a impreciso acarreta a desconfiana); - Extenso (normalmente, escreve-se muito para dizer pouca coisa).

3.2 - Fluxograma
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, 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.

3.2.1 - Simbologias bsicas


A serem utilizadas nesta disciplina. 5

Terminal indica incio e/ou fim do fluxo de um programa ou sub-programa. Seta de Fluxo de dados indica o sentido do fluxo. Serve para conectar os smbolos. Entrada operao de entrada de dados. L os dados necessrios do programa Processamento operao de atribuio. Indica os clculos a efetuar, ou atribuies de valores Sada operao de sada de dados. Apresenta os dados no monitor (ou algum outro dispositivo de sada) Deciso (a ser tomada) indicando os desvios para outros pontos do fluxo, dependendo do resultado da comparao Preparao grupo de operaes no includas na diagramao (chave que modificar a execuo de um determinado programa) Conector ao receber duas Setas de Fluxo de dados, normalmente aps o fechamento dos processos decorrentes de uma deciso Conector de seo quando for necessrio particionar o fluxograma. Coloca um nmero idntico em ambas as sees / pginas, indicando a sua continuao. Abaixo est a representao do algoritmo de clculo da mdia de um aluno sob a forma de um fluxograma. inicio n1 n2 media ((n1 + n2) / 2)

1 6

1
.F.

(media >= 7)

.V.

reprovado

aprovado

fim Exemplo de um fluxograma convencional. 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. Vantagens: - Uma das ferramentas mais conhecidas; - Figuras dizem muito mais que palavras; - Padro mundial Desvantagens: - Faz com que a soluo do problema j esteja amarrada a dispositivos fsicos; - Pouca ateno aos dados, no oferecendo recursos para descrev-los ou representlos; - Complica-se medida que o algoritmo cresce.

3.3 - Pseudocdigo
De forma semelhante como os programas so escritos. Tambm chamado de Portugol ou Portugus Estruturado. A linguagem de Programao mais prxima o Pascal, com codificao quase idntica ao Ingls Estruturado. 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. 7

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: algoritmo <Nome_do_Programa> <declarao_de_variveis> inicio <corpo do algoritmo> FimAlgoritmo Algoritmo uma palavra que indica o incio da definio de um algoritmo em Portugol ou Pseudocdigo. <Nome_do_Programa> 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. Incio e FimAlgoritmo so respectivamente as palavras que delimitam o incio e o trmino do conjunto de instrues do corpo do algoritmo. Abaixo exemplo na forma de um pseudocdigo, da representao do algoritmo do clculo da mdia de um aluno. algoritmo CalculoMedia var n1, n2, media: real inicio leia n1 leia n2 media ((n1 + n2) / 2) se (media >= 7) entao escreva (aprovado) senao escreva (reprovado) fimse FimAlgoritmo Vantagens: - Independncia fsica da soluo (soluo lgica apenas); - Usa o portugus como base; - Pode-se definir quais e como os dados vo estar estruturados; - Passagem quase imediata do algoritmo para uma linguagem de programao qualquer. Desvantagens: - Exige a definio de uma linguagem no real para trabalho; - No padronizado. Pode ter certas diferenas dependo do autor / programador.

4 - Ciclo de vida de um programa


Como tudo na terra, o programa tem um tempo de vida, chamado de ciclo de vida de um programa.

4.1.1 - Planejamento
a fase onde definimos o problema a ser resolvido utilizando um computador. Nesta fase relacionamos a entrada e a sada do futuro programa, assim como a definio dos arquivos auxiliares que ele venha a utilizar.

4.1.2 - Projeto
a fase onde a resoluo do problema concebida. Neste ponto so definidos detalhes do algoritmo, estrutura de dados empregados pelo programa.

4.1.3 - Escrita
Consiste em codificar o programa em uma linguagem de programao apropriada.

4.1.4 - Depurao
Ao final da escrita estaremos com o programa quase pronto; mas ser que ele funciona? Esta a fase onde se corrigem os erros, at que o objetivo seja alcanado.

4.1.5 - Implantao
O programa disponibilizado ao cliente para utilizao.

4.1.6 - Manuteno
O programa poder ser alterado, tanto para corrigir erros no encontrados na fase de depurao / implantao, como tambm para atender novas necessidades a serem solicitadas pelos usurios.

4.1.7 - Morte do programa


quando o programa no atende mais as necessidades do usurio / cliente. Poder ser substitudo por outro ou nova verso.

4.2 - Mtodo para construo de algoritmos


Ler atentamente o enunciado. justamente o enunciado do exerccio que fornece o encaminhamento necessrio resoluo do problema, que se torna, portanto, dependente de sua completa compreenso. Retirar do enunciado a relao das entradas de dados. Retirar do enunciado a relao das sadas de dados. 9

Determinar o que deve ser feito para transformar as entradas determinadas nas sadas especficas. Nesta fase que determinamos a construo de algoritmos propriamente dita, pois, a partir de alguns requisitos especificados, devemos determinar qual a seqncia de aes capaz de transformar um conjunto definido de dados nas informaes de resultado.

4.3 - Um ambiente para escrever algoritmos


Descreveremos uma mquina hipottica para a qual escreveremos nossos algoritmos. O nosso computador hipottico apresentar a seguinte organizao: Cada uma das partes constituintes da figura abaixo tem os seguintes significados: (1) Dispositivo de entrada (o teclado): o meio pelo qual os dados que sero trabalhados pelo algoritmo vo ser introduzidos em nosso computador hipottico; (2) Unidade Lgica e Aritmtica (ULA): Parte responsvel pelas operaes matemticas e avaliaes lgicas; (3) Unidade de Controle: Exerce controle sobre as demais partes do nosso computador. uma verdadeira gerente que distribui tarefas s outras unidades; (4) Memria: Guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo dado fornecido ao computador e o resultado de suas operaes ficam guardados na memria; (5) Dispositivo de Sada (vdeo e impressora): o meio que se dispe para apresentao dos resultados obtidos.
Unidade Central de Processamento (2) Unidade Lgica e Aritmtica (1) Dispositivo de Entrada (3) Unidade de Controle (5) Dispositivo de Sada

(4) Memria Principal

Conveno:

trajeto de dados trajeto de sinais de controle

10

4.4 - Funcionamento do nosso computador


Todos os computadores, independentemente dos seus tamanhos, so conceitualmente semelhantes ao esquema da figura anterior (h algumas diferenas, mas no trataremos aqui dos casos especiais). Resumidamente, podemos afirmar que existem 4 (quatro) operaes bsicas que qualquer computador pode executar: a) operaes de entrada e sada: ler dados do teclado e escrever dados na tela um exemplo destas operaes. Elas servem para introduzir dados na memria do nosso computador e exibir dados que j estejam l armazenados; b) operaes aritmticas: so utilizadas na realizao de operaes matemticas (adio, subtrao, multiplicao e diviso); c) operaes lgicas e relacionais: tm aplicabilidade em comparaes, testes de condies lgicas (2 > 6 ? X = Y ?); d) movimentao de dados entre os vrios componentes: as operaes aritmticas so executadas na Unidade Lgica e Aritmtica, necessitando da transferncia dos dados para essa unidade e da volta do resultado final para ser guardado na memria.

4.5 - Resolvendo um problema


Suponha que queiramos resolver o seguinte problema: a partir de dois nmeros que sero informados, calcular a adio dos mesmos. Se voc fosse encarregado de efetuar essa tarefa, seria bem provvel que utilizasse os passos a seguir: a) saber quais so os nmeros; b) calcular a soma dos nmeros; c) responder questo com o valor do resultado. Vejamos como seria resolvido esse mesmo problema em termos das operaes bsicas citadas anteriormente: a) operao de entrada de dados dos nmeros; b1) movimento do valor dos nmeros entre a memria e a ULA; b2) operao aritmtica de somar os 2 nmeros; b3) movimentao do resultado da ULA para guardar na memria; c) operao de sada do resultado, que est guardado na memria, para o dispositivo de sada desejado. Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na operao matemtica, no sendo explicitados. Em resumo, pode-se dizer que escrever algoritmos ou, em ltima anlise, programar consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operaes bsicas citadas. Esses passos que compem o algoritmo so denominados de comandos. Os comandos de uma linguagem de programao podem estar mais prximos da mquina (linguagens de baixo nvel) ou serem mais facilmente entendidos pelo homem (linguagens de alto 11

nvel). A seqncia de operaes bsicas, dada anteriormente, para resolver o problema de adicionar dois nmeros, est em uma linguagem de baixo nvel para o nosso computador hipottico. Em uma linguagem de alto nvel teramos um resultado assim: Leia X,Y SOMA = X + Y Escreva SOMA

5 - Tipos de Dados e Instrues Primitivas


As informaes manipuladas pelo computador se apresentam atravs dos dados (informaes) e das instrues (comandos). 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. A classificao apresentada a seguir no se aplica a nenhuma linguagem de programao especfica; pelo contrrio, ela sintetiza os padres utilizados na maioria das linguagens.

5.1 - Dados Numricos


So categorizados normalmente em 2 categorias: - Inteiros; - Reais.

5.1.1 - Dados Numricos Inteiros


Os nmeros inteiros so aqueles que no possuem componentes decimais ou fracionrios, podendo ser positivos ou negativos. Como exemplo de nmeros inteiros tem: 24 - nmero inteiro positivo 0 - nmero inteiro -12 - nmero inteiro negativo

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

12

Como dito anteriormente, os elementos dos conjuntos de nmeros fracionrios e reais so necessariamente representados no computador por dados do tipo real. Havendo a parte decimal, dever ser utilizado o caractere ponto (.) e no a vrgula. 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 casa decimal

5.2 - Dados Literais


O tipo de dados literal constitudo por uma seqncia de caracteres contendo letras, dgitos e/ou smbolos especiais (!, @, #, $, %, ^, &, *, etc.). Este tipo de dados tambm muitas vezes chamado de alfanumrico, cadeia de caracteres, ainda, do ingls, string. 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.

5.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 13

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

Representao dos diversos tipos de dados

5.4 - Variveis
Tudo o que instvel, inconstante. Sero armazenadas pela memria do computador, e necessrio identificar qual o melhor tipo de dados a ser utilizado. Para que no se "esquea" das informaes, o computador precisa guard-las em sua memria. Cada varivel representa um valor, e a qualquer instante pode ser alterado (quando for realizado um comando para fornecer um novo valor).

5.5 Arquitetura de Memria


De um modo geral, a memria do computador pode ser vista como um conjunto de clulas, cada identificada unicamente por um nmero inteiro distinto, conhecido como endereo.

5.5.1 Memria
O acesso s informaes armazenadas na memria (leitura, escrita) feita Byte a Byte. Cada Byte formado por uma combinao de 8 dgitos binrios (0 e 1), sendo assim, um Byte possui 256 (28) estados possveis ou representa 256 smbolos de informao.

5.5.2 Armazenamento de dados na memria


Cada informao de determinado tipo representada de diferentes formas, e necessita de certa quantidade de memria para armazen-las. O nmero de bytes necessrios para armazenar uma informao depender do seu tipo. Por exemplo, na maioria das linguagens de programao o tipo inteiro armazenado ocupando 2 bytes, ou seja, 65536 (28 x 28 = 216) possibilidades (-32767, -32766, ....., -1,0, 1..... 32767, 32768). Um dado do tipo caractere formado por vrios smbolos, sendo que cada um ocupa 1 byte. Desta forma o nmero de bytes utilizados no armazenamento do tipo caractere depender do seu tamanho. 1 endereo - 1 byte.

5.5.3 Identificadores
Podemos imaginar a memria como sendo um armrio repleto de gavetas, no qual as gavetas seriam os locais fsicos responsveis por armazenar objetos; os objetos (que podem ser substitudos ou no) seriam as informaes (dados), e as gavetas as variveis ou constantes. 14

Visto que na memria (armrio) existem inmeras variveis (gavetas), precisamos diferenci-las, o que feito por meio de identificadores (etiquetas). Cada varivel (gaveta), no entanto, pode guardar apenas uma informao (objeto) de cada vez, sendo sempre do mesmo tipo (material). Os identificadores possuem certas regras para serem formados: - Devem comear por um caractere alfabtico; - Podem ser seguidos por mais caracteres alfabticos e/ou alfanumricos; - No permitido o uso de caracteres especiais ou espaos; - No pode ser uma Palavra Reservada (instruo). Exemplos vlidos: pe, media, valor, jksp, m1, m2, nomeusuario.

5.6 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, devem-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 : temfilhos : caractere inteiro real logico 15

No exemplo acima foram declaradas quatro variveis: - a varivel nome, capaz de armazenar dados alfanumricos (tipo Literal); - 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 (tipo booleano).

5.7 Instrues Primitivas


So representadas pelo conjunto de Palavras-chave (Vocabulrio) de uma determinada Linguagem de Programao. Em Portugol, ser utilizado as seguintes Instrues Primitivas: algoritmo (ou programa) ate (ou ateque) caractere caso e enquanto entao escolha escreva faca falso fimalgoritmo (ou fim) fimenquanto fimescolha fimpara fimrepita fimse inicio leia logico mensagem nao numerico ou outrocaso para passo repita se senao verdadeiro

Uma determinada ao poder ser escrita diferente dependendo da Linguagem de Programao utilizada.

6 - Expresses 6.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 - Tringulo de base (B) e altura (H). Por exemplo, a frmula de clculo da rea do tringulo dada por: 16

area <- 0.5 * b * 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 (*), 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.

6.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); - 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.

6.3 - Tipos de Expresses


As expresses so classificadas de acordo com o tipo do valor resultante de sua avaliao.

6.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 so permitidos em expresses deste tipo. Os operadores aritmticos relacionados s operaes aritmticas bsicas esto sumarizados na Tabela. 17

Tabela - Operadores aritmticos e sua ordem de prioridade Operador Tipo Operao Prioridade + Binrio Adio 4 Binrio Subtrao 4 * Binrio Multiplicao 3 / Binrio Diviso 3 ^ ou ** 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 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. O smbolo (^) adotado para representar a operao de exponenciao, e em muitas literaturas ser visto o smbolo (**) para esta finalidade, mas ser adotado preferencialmente o smbolo (^).

6.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 abaixo.
Tabela - Operadores lgicos e suas relaes de prioridade Operador Tipo Operao Prioridade .ou. Binrio Disjuno 3 .e. Binrio Conjuno 2 .nao. Unrio Negao 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 - Tabela-Verdade dos operadores apresentados na Tabela anterior a b .nao. a .nao. b a .ou. b .F. .F. .V. .V. .F. .F. .V. .V. .F. .V. .V. .F. .F. .V. .V. .V. .V. .F. .F. .V. a .e. b .F. .F. .F. .V.

A Tabela acima chamada de Tabela-Verdade. Convm salientar as seguintes concluses que podem ser extradas por observao da Tabela: O operador lgico .nao. sempre inverte o valor de seu operando. Ex.: . nao. .V. = .F. e . nao. .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 18

variveis lgicas a e b so como dois interruptores ligados em paralelo num circuito de acionamento de uma lmpada. H, ainda, outro tipo de operador que pode aparecer em operaes lgicas: os operadores relacionais, mostrados na Tabela.
Tabela - 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.

7 - Comandos de Atribuio
Um comando de atribuio permite-nos fornecer um valor a certa varivel, onde o tipo dessa informao deve ser compatvel com o tipo da varivel, isto , somente podemos atribuir um valor lgico a uma varivel capaz de comport-lo, ou seja, uma varivel declarada do tipo lgico. O comando de atribuio uma seta apontando para a varivel ou dois pontos e o sinal de igual (<-): Exemplo: var a, b,c : inicio a <- 5 b <- a+b c <- b*a real

7.1 Constantes
Entendemos que uma informao constante quando no sofre nenhuma variao no decorrer do tempo. As constantes so definidas junto com as variveis antes de iniciar o programa, e em seguida aps o incio do algoritmo, as constantes recebem seu valor fixo atravs do comando de atribuio (<-): var nomepadrao : valorpi: inicio nomepadrao <- Joo valorpi <- 3.1415 19 caracter real

No exemplo acima foram declaradas duas constantes: - a varivel constante nomepadrao, que foi atribudo um valor fixo Joo do tipo Alfanumrico; - a varivel constante valorpi, que foi atribudo um valor fixo 3.1415 do tipo Real;

7.2 - Entrada de Dados


Para que nossos algoritmos funcionem, em quase todos os casos precisaremos de informaes que sero fornecidas somente aps o algoritmo pronto, e que sempre estaro mudando de valores, para que nossos algoritmos recebem estas informaes, devemos ento construir entradas de dados, pelas quais o usurio (pessoa que utilizar o programa) poder fornecer todos os dados necessrios. A sintaxe do comando de entrada de dados a seguinte: leia (varivel)

7.3 - Sada de Dados


Da mesma forma que nosso algoritmo precisa de informaes, o usurio precisa de respostas as suas perguntas, para darmos estas respostas usamos um comando de sada de dados para informar a resposta. A sintaxe do comando de sada de dados a seguinte: escreva (varivel) escreval (varivel) // Para pulara para a linha seguinte, basta acrescentar a letra l

8 - Estruturas de Controle 8.1 - Estrutura Seqencial


o conjunto de aes primitivas que sero executadas numa seqncia linear de cima para baixo e da esquerda para direita, isto , na mesma ordem em que foram escritas. Como podemos perceber, todas as aes devem pular uma linha, o que objetiva separar uma ao de outra. Variveis; (declarao de variveis) incio comando 1 comando 2 comando 3 FimAlgoritmo.

Algoritmo - 01: Criar um programa que efetue a leitura de dois valores numricos. Faa a operao de soma entre os dois valores e apresente o resultado obtido.

20

Planejamento Problema: Calcular a soma de dois nmeros. Objetivo: Apresentar a soma de dois nmeros. Entradas: N1, N2 Sadas: SOMA Projeto Clculos: SOMA <- N1 + N2 Fluxograma

Portugol algoritmo Algoritmo01 var N1 : real N2 : real SOMA: real inicio leia N1 leia N2 SOMA <- N1 + N2 escreva SOMA FimAlgoritmo

8.2 - Estruturas de Seleo ou Deciso


Uma estrutura de deciso permite a escolha de um grupo de aes e estruturas a ser executado quando determinadas condies, representadas por expresses lgicas, so ou no satisfeitas. 21

8.2.1 - Deciso Simples


Se <condio> entao {bloco verdade} Fimse <condio> uma expresso lgica, que, quando inspecionada, pode gerar um resultado falso ou verdadeiro. Se .V., a ao primitiva sob a clusula ser executada; caso contrrio, encerra o comando, neste caso, sem executar nenhum comando.

Algoritmo - 02: Ler dois valores numricos, efetuar a adio e apresentar o resultado caso o valor somado seja maior que 10.
Planejamento Problema: Calcular a soma de dois nmeros e apresentar o resultado com condio. Objetivo: Apresentar o resultado apenas se for maior que 10. Entradas: N1, N2 Sadas: SOMA Projeto Clculos e detalhamento: SOMA <- N1 + N2 Se (SOMA > 10) entao escreva SOMA Fimse Fluxograma INICIO N1 N2 SOMA N1 + N2

.F.

SOMA > 10

.V.

SOMA

FIM 22

Portugol Algoritmo Algoritmo02 Var N1: Real N2: Real SOMA: Real Inicio Leia N1 Leia N2 SOMA <- N1 + N2 Se (SOMA > 10) entao Escreva SOMA Fimse FimAlgoritmo

8.2.2 - Deciso Composta


Se <condio> entao {bloco verdade} Senao {bloco falso} Fimse <condio> uma expresso lgica, que, quando inspecionada, pode gerar um resultado falso ou verdadeiro. Se .V., a ao primitiva sob a clusula ser executada; caso contrrio, isto , se for .F., a ao primitiva sob a clusula ser executada.Aps isto, encerra a condio com o comando Fimse.

Algoritmo - 03: Ler dois valores numricos, efetuar a adio. Caso o valor somado seja maior ou igual a 10, este dever ser apresentado somando-se a ele mais 5, caso o valor somado no seja maior ou igual a 10, este dever ser apresentado subtraindo-se 7.
Planejamento Problema: Calcular a soma de dois nmeros e apresentar o resultado com uma condio. Objetivo: Apresentar o Resultado se for igual ou maior que 10 adicionando mais 5, se no for igual ou maior que 10 dever subtrair 7. Entradas: A, B Sadas: TOTAL Auxiliares: SOMA Projeto Clculos e detalhamento: SOMA <- A + B Se (SOMA >= 10) Ento TOTAL <- SOMA + 5 Seno TOTAL <- SOMA - 7 Fimse 23

Fluxograma INICIO A B SOMA A+B

.F.

SOMA > =10

.V.

TOTAL SOMA - 7

TOTAL SOMA + 5

TOTAL FIM Portugol Algoritmo Algoritmo03 Var A: Real B: Real SOMA: Real TOTAL: Real Inicio Leia A Leia B SOMA A + B Se (SOMA >= 10) entao TOTAL SOMA + 5 Senao TOTAL SOMA 7 Fimse Escreva TOTAL FimAlgoritmo

8.2.3 Seleo Mltipla


Esta estrutura evita que faamos muitos blocos se, quando o teste ser sempre em cima da mesma varivel. Exemplo: 24

Se (variavel = valor1) entao comando1 Senao Se (variavel = valor2) entao Comando2 Senao Se (variavel = valor3) entao Comando3 Senao Se (variavel = valor4) entao Comando4 Senao comando5 Fimse Fimse Fimse Fimse

Com a estrutura de escolha mltipla, o algoritmo ficaria da seguinte maneira:


escolha variavel caso valor1 comando1 caso valor2 comando2 caso valor3 comando3 caso valor4 comando4 outrocaso comando5 fimescolha

Algoritmo - 04: Ler um nmero inteiro entre 1 e 4 e escrever o nmero por extenso correspondente: exemplo: Lido 1, ser apresentado um. Lido 2, ser apresentado dois etc.
Planejamento Objetivo: Apresentar um nmero por extenso. Entradas: numero Sadas: Auxiliares: Projeto Clculos e detalhamento:
escolha numero caso 1 escreva um caso 2 escreva dois caso 3 escreva trs caso 4 escreva quatro outrocaso escreva nmero invlido fimescolha

25

Fluxograma INICIO numero Numero=1 .V. um

Numero=2

.V.

dois

Numero=3

.V.

tres

Numero=4

.V.

quatro

numero invalido

FIM Portugol Algoritmo Algoritmo04 Var numero: inteiro Inicio Leia numero escolha numero caso 1 escreva um caso 2 escreva dois caso 3 escreva trs caso 4 escreva quatro outrocaso escreva nmero invlido fimescolha FimAlgoritmo

26

8.3 Estruturas de Repetio


Estas estruturas possibilitam que nosso algoritmo seja muito mais enxuto e fcil de se programar. Imagine um algoritmo de fatorial de 8: Algoritmo FatorialNumero8 variaveis fat : real; incio fat <- 8 * 7 fat <- fat * 6 fat <- fat * 5 fat <- fat * 4 fat <- fat * 3 fat <- fat * 2 escreva (fat) FimAlgoritmo. O resultado ser o fatorial com certeza, mas, imagine se fosse o fatorial de 250. Ou ainda, o usurio deseja fornecer o nmero e o algoritmo deve retornar o fatorial, qual nmero ser digitado? Quantas linhas devero ser escritas? Para isso servem as estruturas de repetio, elas permitem que um determinado bloco de comandos seja repetido vrias vezes, at que uma condio determinada seja satisfeita. Sero estudadas as seguintes estruturas de repetio: - Enquanto - Faca, o teste realizado no Incio do looping - Repita - Ateque, o teste realizado no Final do looping - Para - de - ate - Passo - faca, cuja Estrutura utilizada uma varivel de Controle.

8.3.1 Enquanto ... Faca - Estrutura com teste no Incio


Esta estrutura faz seu teste de parada antes do bloco de comandos, isto , o bloco de comandos ser repetido, at que a condio seja F. Os comandos de uma estrutura enquanto .. faca poder ser executada uma vez, vrias vezes ou nenhuma vez. Enquanto < condio > Faa < bloco de comandos > FimEnquanto

Algoritmo - 05: Apresentar o total da soma obtida dos cem primeiros nmeros inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Enquanto ... Faca)
Planejamento Objetivo: Apresentar o resultado da soma obtida dos cem primeiros nmeros inteiros Entradas: Num Sadas: Tot 27

Projeto Clculos e detalhamento: Enquanto Num <= 100 faca Tot<--Tot+Num num=num+1 FimEnquanto Fluxograma INICIO num <- 0 tot <- 0 .F.

Enquanto Num <= 100

.V. Tot <-Tot+Num Num <- num+1

tot FIM Portugol Algoritmo Algoritmo05 Var Num, tot : inteiro Inicio Num <- 0 Tot <- 0 Enquanto Num <= 100 faca Tot <-Tot+Num Num <- num+1 FimEnquanto Escreva Tot FimAlgoritmo

28

8.3.2 Repita ... Ateque - Estrutura com teste no final


Esta estrutura faz seu teste de parada aps o bloco de comandos, isto , o bloco de comandos ser repetido, at que a condio seja V. Os comandos de uma estrutura repita .. at sempre sero executados pelo menos uma vez. Repita comando1 comando2 comando3 ateque <condio>

Algoritmo 06: Apresentar o total da soma obtida dos cem primeiros nmeros inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Repita ... At)
Planejamento Objetivo: Apresentar o resultado da soma obtida dos cem primeiros nmeros inteiros Entradas: Num Sadas: Tot Projeto Clculos e detalhamento: Num=1 Repita Tot <-Tot+Num Num <- num+1 Ateque Num >= 100 Portugol Algoritmo Algoritmo06 Var Num, tol : inteiro Inicio Num <- 1 Tot <- 0 Repita Tot <-Tot+Num Num <- num+1 Ateque Num >= 100 Escreva Tot FimAlgoritmo

29

Fluxograma INICIO num <- 1 tot <- 0

Tot <-Tot+Num Num <- num+1 .F. .V.

Ateque Num >= 100

tot FIM

8.3.3 Para ... de ... ate ... Passo ... faca Estrutura com varivel de Controle
Nas estruturas de repetio vistas at agora, acorrem casos em que se torna difcil determinar quantas vezes o bloco ser executado. Sabemos que ele ser executado enquanto uma condio for satisfeita - enquanto..faa, ou at que uma condio seja satisfeita - repita...at. A estrutura para .. passo repete a execuo do bloco um nmero definido de vezes, pois ela possui limites fixos: Para <varivel> <- <valor> at <valor> passo N faca < bloco de comandos > FimPara

Algoritmo - 07: Apresentar o total da soma obtida dos cem primeiros nmeros inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Para .. Passo)
Planejamento Objetivo: Apresentar o resultado da soma obtida dos cem primeiros nmeros inteiros Entradas: Num Sadas: Tot 30

Projeto Clculos e detalhamento: Para num de 1 a 100 passo 1 faca Tot <-Tot+Num FimPara Fluxograma INICIO tot <- 0 .F.

Para num de 1 a 100 passo 1 f .V. Tot <-Tot+Num

tot FIM Portugol Algoritmo Algoritmo07 Var Num, tol : inteiro Inicio Tot <- 0 Para num de 1 a 100 passo 1 faca Tot <-Tot+Num FimPara Escreva Tot FimAlgoritmo

9 - Concluso
Este semestre teve como principal objetivo capacitar o aluno a entender os conceitos fundamentais de lgica de programao de forma independente da linguagem e introduzilo a uma metodologia de desenvolvimento de programas. Saber Lgica de Programao mais importante que saber uma Linguagem de Programao. Sem saber como se planeja um programa, dificilmente poder ser implantada tanto na Linguagem de Programao mais antiga como nas mais modernas. Deseja-se boa sorte a todos os colegas, futuros profissionais da rea de Informtica!!! 31

Sumrio
1 - Introduo disciplina de Lgica de Programao.......................................................2 2 Lgica de Programao................................................................................................2 2.1 - O que Lgica? .........................................................................................................2 2.2 - Existe Lgica no dia-a-dia? ........................................................................................2 2.3 - O que Algoritmo? ....................................................................................................2 2.4 - O que padro de comportamento?..........................................................................3 2.5 Programao .............................................................................................................3 2.6 Programa...................................................................................................................4 2.7 Etapas de um programa ............................................................................................4 2.7.1 Entrada ...................................................................................................................4 2.7.2 Processamento.......................................................................................................4 2.7.3 Sada ......................................................................................................................4 3 - Formas de Representao de Algoritmos .....................................................................4 3.1 - Descrio Narrativa ....................................................................................................5 3.2 - Fluxograma ................................................................................................................5 3.2.1 - Simbologias bsicas................................................................................................5 3.3 - Pseudocdigo.............................................................................................................7 4 - Ciclo de vida de um programa.......................................................................................9 4.1.1 - Planejamento ..........................................................................................................9 4.1.2 - Projeto .....................................................................................................................9 4.1.3 - Escrita .....................................................................................................................9 4.1.4 - Depurao...............................................................................................................9 4.1.5 - Implantao.............................................................................................................9 4.1.6 - Manuteno.............................................................................................................9 4.1.7 - Morte do programa ..................................................................................................9 4.2 - Mtodo para construo de algoritmos ......................................................................9 4.3 - Um ambiente para escrever algoritmos....................................................................10 4.4 - Funcionamento do nosso computador .....................................................................11 4.5 - Resolvendo um problema.........................................................................................11 5 - Tipos de Dados e Instrues Primitivas ......................................................................12 5.1 - Dados Numricos .....................................................................................................12 5.1.1 - Dados Numricos Inteiros .....................................................................................12 5.1.2 - Dados Numricos Reais........................................................................................12 5.2 - Dados Literais ..........................................................................................................13 5.3 - Dados Lgicos..........................................................................................................13 5.4 - Variveis...................................................................................................................14 5.5 Arquitetura de Memria ...........................................................................................14 5.5.1 Memria................................................................................................................14 5.5.2 Armazenamento de dados na memria................................................................14 5.5.3 Identificadores ......................................................................................................14 5.6 Definio de Variveis em Algoritmos .....................................................................15 5.7 Instrues Primitivas................................................................................................16 6 - Expresses..................................................................................................................16 6.1 - Conceito ...................................................................................................................16 6.2 - Operadores ..............................................................................................................17 6.3 - Tipos de Expresses ................................................................................................17 32

6.3.1 - Expresses Aritmticas .........................................................................................17 6.3.2 - Expresses Lgicas ..............................................................................................18 7 - Comandos de Atribuio .............................................................................................19 7.1 Constantes ..............................................................................................................19 7.2 - Entrada de Dados ....................................................................................................20 7.3 - Sada de Dados........................................................................................................20 8 - Estruturas de Controle.................................................................................................20 8.1 - Estrutura Seqencial ................................................................................................20 Algoritmo - 01: Criar um programa que efetue a leitura de dois valores numricos. Faa a operao de soma entre os dois valores e apresente o resultado obtido.........................................20 8.2 - Estruturas de Seleo ou Deciso ...........................................................................21 8.2.1 - Deciso Simples....................................................................................................22 Algoritmo - 02: Ler dois valores numricos, efetuar a adio e apresentar o resultado caso o valor somado seja maior que 10. .............................................................................................................22 8.2.2 - Deciso Composta ................................................................................................23 Algoritmo - 03: Ler dois valores numricos, efetuar a adio. Caso o valor somado seja maior ou igual a 10, este dever ser apresentado somando-se a ele mais 5, caso o valor somado no seja maior ou igual a 10, este dever ser apresentado subtraindo-se 7..................................................23 8.2.3 Seleo Mltipla ...................................................................................................24 Algoritmo - 04: Ler um nmero inteiro entre 1 e 4 e escrever o nmero por extenso correspondente: exemplo: Lido 1, ser apresentado um. Lido 2, ser apresentado dois etc..........25 8.3 Estruturas de Repetio ..........................................................................................27 8.3.1 Enquanto ... Faca - Estrutura com teste no Incio.................................................27 Algoritmo - 05: Apresentar o total da soma obtida dos cem primeiros nmeros inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Enquanto ... Faca).........................27 8.3.2 Repita ... Ateque - Estrutura com teste no final ....................................................29 Algoritmo 06: Apresentar o total da soma obtida dos cem primeiros nmeros inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Repita ... At)................................29 8.3.3 Para ... de ... ate ... Passo ... faca Estrutura com varivel de Controle..............30 Algoritmo - 07: Apresentar o total da soma obtida dos cem primeiros nmeros inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Para .. Passo).................................30 9 - Concluso ...................................................................................................................31 Sumrio ............................................................................................................................32 Anexo - Bibliografia ..........................................................................................................34 Anexo - Listas de Exerccios ............................................................................................35 1 Lista de Exerccios .....................................................................................................................35 2 Lista de Exerccios .....................................................................................................................35 3 Lista de Exerccios .....................................................................................................................36 4 Lista de Exerccios .....................................................................................................................37 5 Lista de Exerccios .....................................................................................................................38 6 Lista de Exerccios .....................................................................................................................38 7 Lista de Exerccios .....................................................................................................................38 8 Lista de Exerccios .....................................................................................................................39 9 Lista de Exerccios .....................................................................................................................39 10 Lista de Exerccios ...................................................................................................................39 11 Lista de Exerccios ...................................................................................................................40 12 Lista de Exerccios ...................................................................................................................40 13 Lista de Exerccios ...................................................................................................................41 14 Lista de Exerccios ...................................................................................................................42 15 Lista de Exerccios ...................................................................................................................42 33

Anexo - Bibliografia
Bibliografia bsica recomendada: Manzano, J. A. N. G., Oliveira, J. F.: Algoritmos Lgica para o Desenvolvimento da Programao. 10. Ed. So Paulo: rica, 2001. Bibliografia complementar: Puga, S., Rissetti, G. Lgica de programao e estruturas de dados - com aplicaes em Java. So Paulo: Prentice Hall, 2004. Lopes, A., Garcia, G.: Introduo Programao 500 Algoritmos resolvidos. Rio de Janeiro: Campus, 2002. Apostilas consultadas para confeco desta apostila: ________. Algoritmo e Lgica de Programao. Natal: Universidade Federal do Rio Grande do Norte - Departamento de Engenharia de Computao e Automao, 2004. Agosti, C. Curso Tecnlogo em Informtica - Prof. - Apostila de Pascal. Xanxer: Universidade do Oeste de Santa Catarina Unoesc, 2001. Costa, R.; Paradzinski, A. Apostila de Lgica de Programao. Curso Tcnico em Processamento de Dados. Egypto, C. Introduo Programao. Joo Pessoa: Asper Associao Paraibana de Ensino Renovado - Faculdade Paraibana de Processamento de Dados - Curso de Tecnologia em Processamento de Dados, 2004. Egypto, C. Linguagens e Tcnicas e Programao I. Joo Pessoa: Asper Associao Paraibana de Ensino Renovado - Faculdade Paraibana de Processamento de Dados Curso de Tecnologia em Processamento de Dados, 1998. Mandaguari, C. B. M. Apostila da Disciplina de Anlise de Algoritmos. Faculdade de Filosofia, Cincias e Letras de Mandaguari - Departamento de Informtica, 2004. Mazer Jr, A. Curso Tcnico em Informtica Disciplina de Tcnicas de Programao I. Ponta Grossa : Senai - Servio Nacional de Aprendizagem Industrial. Moraes, P. S. Curso Bsico de Lgica de Programao. Unicamp - Centro de Computao - Lgica de Programao. Shine, C. Y. A Torre de Hani. Artigo baseado em aula ministrada na IV Semana Olmpica, Salvador: Colgio Etapa. Tonin, N. Apostila de Algoritmos e Estrutura de Dados I. Erechim: Universidade Regional Integrada do Alto Uruguai e das Misses - URI Campus de Erechim - Curso de Graduao em Cincia da Computao, 2005.

34

Anexo - Listas de Exerccios


Instrues gerais As Listas de Exerccios comporo 30% das notas A1 e A2. O prazo de entrega dever ser cuidadosamente respeitado. Aps uma semana de atraso no ser contabilizada nota. A entrega ser sempre individual Precisa constar sempre. Havendo falta de informaes no ser corrigido e no ser contabilizada nota. - curso, turma, disciplina - nome do aluno em todas as folhas - nmero da lista de exerccios - nmero do exerccio.

1 Lista de Exerccios
Montar em Descrio Narrativa, Fluxograma e Portugol. 1 - Crie uma seqncia lgica para tomar banho. Verificar o que fazer se acabar a gua. 2 - Descreva com detalhes a seqncia lgica para Trocar um pneu de um carro. Verificar se tem estepe. 3 - Faa um algoritmo que crie um suco de acerola. Caso no tenha acar substituir por adoante.

2 Lista de Exerccios
Utilizando linguagem natural, fluxogramas e Portugol, resolver os seguintes problemas: 1 - Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafas. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? 2 - Construa um algoritmo que mostre todos os passos que voc segue para escolher o tipo de roupa com que vai sair, aps levantar, levando em considerao apenas o tempo (bom, nublado, chuvoso) e a temperatura (quente, moderado, frio). 3 - Elabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste em trs hastes (a - b - c), uma das quais serve de suporte para trs discos diferentes (1 - 2 3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo transferir os trs discos para outra haste. Simulao no site: http://www.npd.ufes.br/hanoi 4 - Trs jesutas e trs canibais precisam atravessar um rio; para tal, dispem de um barco com capacidade para duas pessoas. Por medidas de segurana no se permite que em alguma margem a quantidade de jesutas seja inferior de canibais. Qual a seqncia de passos que permitiria a travessia com segurana?

35

3 Lista de Exerccios
Favor entregar esta lista nesta prpria folha (obrigatrio) 1 - Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I os dados do tipo Inteiros, com R os Reais, com A os Alfanumrico, com B os lgicos (Booleanos). Deixe em branco aqueles para os quais no possvel definir a priori um tipo de dado.
( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( " ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) .v. " logico " 7094 F 2X .falso. " verdadeiro " .verdadeiro. y3 + 56 .F. " 01053-067 " "f " ! 89.41 " fone$res " - 7.05706 "-6" ate_que ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) " Boa sorte " + 805 #fone_com 1584 - 54.01 " 14 " -1 "o" .V. 18 .F. 0 x2 8.55551 18 " 15 " 0,8 28B - 1.0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 156 " 6RN " " 11.06 " - 123 " Prova1 + 2 " " 15 " " CARACT " VAR .falso. 111.3500089 " zero " 28B - 1.0n " 156 + 200 " - 16.087 " constante " alfanumerico RESULT= - 18

2 - Indique com um X quais so PALAVRAS RESERVADAS (INSTRUES):


( ( ( ( ( ) ) ) ) ) fim +8 " ramal " enquanto 40P ( ( ( ( ( ) ) ) ) ) programa ate_que " abril/00 " nota_do_aluno fone ( ( ( ( ( ) ) ) ) ) ramal var acabou INICIO comea

3 - Assinale com um X os nomes vlidos para uma VARIVEL: Justifique o motivo quando for um nome invlido:
( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) z8ur8cmv 18log y3 R$ 85.05 PROVA 1 data15_03_2000 ShoppingMorumbi constante80.9 inicio " mediad " simpson@igo.com X fim laranja 12_reais Sul RAMAL O I A 5x var ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________ ____________________________________________

36

4 Lista de Exerccios
Favor entregar esta lista nesta prpria folha (obrigatrio) 1 - Assinale com X os identificadores corretos e explique o que est errado nos identificadores incorretos.
( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) valor _____________________________________________________ ) _b248 _____________________________________________________ ) nota*do*aluno_____________________________________________________ ) a1b2c3 _____________________________________________________ )3x4 _____________________________________________________ ) km/h _____________________________________________________ ) xyz _____________________________________________________ ) nome empr _____________________________________________________ ) sala_215 _____________________________________________________ ) nota _____________________________________________________ ) ah! _____________________________________________________ ) abc _____________________________________________________ ) AB/C _____________________________________________________ ) 123a _____________________________________________________ ) 080 _____________________________________________________ ) DBAC _____________________________________________________ ) xyz _____________________________________________________ ) A_B-C _____________________________________________________ ) U2 _____________________________________________________ ) A123 _____________________________________________________ ) Cos *4 _____________________________________________________ ) SENAO _____________________________________________________

2 - 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 )0 ) + 36 ) +3257 ) F ) 1 ) + 32 ) +3257 ) 'F' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) 0,0 ) - 0,001 ) -0,0 ) .V. ) 0 ) + 0,05 ) .V. ) F ) -1 ) + 3257 ) V ) -32 ) a ) abc ) -1,9E13 ) '0'

3 - Encontrar o resultado dos exerccios abaixo (Operadores Aritmticos):


Para os valores: A=3, B=6, c=8, Respostas: 1) result <- ____ 2) result <- ____ 3) result <- ____ 4) result <- ____ 5) result <- ____ 6) result <- ____ d=2 Para os valores: A=2, B=6, c=6, Respostas: 1) result <- ____ 2) result <- ____ 3) result <- ____ 4) result <- ____ 5) result <- ____ 6) result <- ____ d=1

1) result <2) result <3) result <4) result <5) result <6) result <-

a*b-c+d b/a-c*d a*(b-c)+d a**d-c**d+(b^2) d*(b+c*(c/d)) a*(b-d)*((c-a) ^ 2)

37

5 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Criar um programa que efetue a leitura de quatro valores numricos. Faa a operao de soma entre os quatro valores e apresente o resultado obtido. 2 - Desenvolver a lgica para um programa que efetue o clculo da rea de uma circunferncia e do tringulo apresentando a medida das reas calculadas. 3 - Calcular e apresentar o valor do volume de uma lata de leo, utilizando a frmula: VOLUME = pi * R2 * ALTURA. 4 Ler o nome e o endereo de uma pessoa. Apresentar em tela novamente.

6 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Efetuar a leitura de um nmero inteiro e apresentar o resultado do quadrado deste nmero. 2 - Efetuar o clculo da quantidade de litros de combustvel gastos em uma viagem, utilizando-se um automvel que faz 12 km por litro. Para obter o clculo, o usurios dever fornecer o tempo gasto na viagem e a velocidade mdia durante a mesma. Desta forma, ser possvel obter a distncia percorrida com a frmula DISTANCIA = TEMPO * VELOCIDADE. Tendo o valor da distncia, basta calcular a quantidade de litros de combustvel utilizada na viagem com a frmula: LITROS_USADOS = DISTANCIA / 12. O programa dever apresentar os valores da velocidade mdia, tempo gasto na viagem, a distncia percorrida e a quantidade de litros utilizada na viagem. 3 - Efetuar o clculo do valor de uma prestao em atraso, utilizando a frmula: PRESTAO = VALOR + (VALOR * (TAXA / 100) * TEMPO). 4 - Dados dois nmeros inteiros, trocar o contedo desses nmeros.

7 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - 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 2 - Dados dois nmeros inteiros, achar a mdia aritmtica entre eles. 38

3 - Escreva um algoritmo que tenha como entrada nome, endereo, sexo, salrio. Aps llos, apresente ao usurio os valores digitados. 4 - Fazer a transformao de um valor em dlar, para a moeda corrente do Brasil.

8 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Ler dois valores numricos, efetuar a multiplicao entre eles, e apresentar o resultado caso o valor multiplicado seja maior ou igual que 5000. 2 - Efetue o clculo do reajuste de salrio de um funcionrio. Considere que o funcionrio dever receber um reajuste de 15% caso seu salrio seja menor que R$ 500,00, se o salrio foi maior ou igual a R$ 500,00 mas menor ou igual a R$ 1000,00, seu reajuste ser de 10%, caso seja ainda maior que R$ 1000,00, o reajuste dever ser de 5%. 3 - Efetuar a leitura de um valor positivo ou negativo e apresentar o nmero lido como sendo um valor positivo, ou seja, o programa dever apresentar o mdulo de um nmero fornecido. Lembre-se de verificar se o nmero fornecido menor que zero, sendo multiplique-o por -1.

9 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Ler 4 notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado, se o valor da mdia for maior ou igual que 7. Caso o contrrio, solicitar a nota do exame final, somar com o valor da mdia e obter a nova mdia. Se a nova mdia for maior ou igual a 5, apresentar uma mensagem que o aluno foi aprovado em exame. Se o aluno no foi aprovado, indicar uma mensagem informando esta condio. Apresentar com as mensagens o valor da mdia do aluno, para qualquer condio. 2 - Conhea trs nmeros inteiros, e informe qual o maior. Exibi-los depois em ordem crescente. 3 - Construa um algoritmo que verifique a validade de uma senha fornecida pelo usurio. A senha vlida deve ser igual a cachorro.

10 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Ler um nmero inteiro entre 1 e 9 e escrever o nmero por extenso correspondente: exemplo: Lido 1, ser apresentado um. Lido 2, ser apresentado dois etc. 2 - Ler um nmero inteiro entre 1 e 12 e escrever o ms correspondente. Caso o usurio digite um nmero fora desse intervalo, dever aparecer uma mensagem informando que no existe ms com este nmero. 39

3 - Uma faculdade atribui menes aos alunos conforme a faixa de notas que tenha atingido: 9,0 a 10: SS (superior) 7,0 a 8,9: MS (mdio superior) 5, 0 a 6,9: MM (mdio) 3,0 a 4,9: MI (mdio inferior) 0,1 a 2,9: II (inferior) 0: SR (sem rendimento). Faa um programa que l a nota e informa a meno.

11 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Imprimir todos os nmeros de 1 a 100. 2 - Imprimir os mltiplos de 5, no intervalo de 1 a 500. 3 - Apresentar os quadrados dos nmeros inteiros de 15 a 200. 4 - Elaborar um programa que apresente o valor de uma potncia de uma base qualquer elevada a um expoente qualquer, ou seja, de NM.

12 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Apresentar as potncias de 3 variando de 0 a 15. Deve ser considerado que qualquer nmero elevado a zero 1, e elevado a 1 ele prprio. Dever ser apresentado, observando a seguinte definio: 30 = 1 31 = 3 32 = 9 (...) 315 = 14348907 2 - Criar um algoritmo que imprima todos os nmeros de 1 a 100 e a soma deles. (1 + 2 + 3 + 4 + 5 + 6 + 7 + etc. + 97 + 98 + 99 + 100). 3 - Apresentar os resultados de uma tabuada de um nmero qualquer. Esta dever ser impressa no seguinte formato: Considerando como exemplo o fornecimento do nmero 2 2x1= 2 2x2= 4 2x3= 6 2x4= 8 2x5=10 (...) 2x10=20

40

13 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Escrever um algoritmo que calcule a mdia dos nmeros digitados pelo usurio, se eles forem pares, termine a leitura se o usurio digitar 0 (zero) e mostre o resultado final. 2 - Fazer um programa para imprimir o conceito de um aluno, dada a sua nota. Supor notas inteiras somente. O critrio para conceitos o seguinte: - nota inferiores a 3 - conceito E; - nota de 3 a 5 - conceito D; - notas 6 e 7 - conceito C; - notas 8 e 9 - conceito B; - nota 10 - conceito A. 3 - Ler vinte valores e contar quantos deles so maiores que 1000. 4 Faa um algoritmo que exiba os nmeros pares entre 1000 e 0, nessa ordem, usando a estrutura para. 5 - Dado um conjunto de nmeros inteiros, obter a soma e a quantidade de elementos. 6 - Desenhar o Fluxograma para o seguinte programa codificado em Portugol: Algoritmo SALARIOCOMREAJUSTE Var SAL: Real SALREAJ: Real Inicio leia SAL se (SAL < 500) entao SALREAJ (SAL * 1.15) senao se (SAL <= 1000) entao SALREAJ (SAL * 1.10) senao SALREAJ (SAL * 1.05) fimse fimse escreva SALREAJ FimAlgoritmo 7 - Programa Seu nome Voc digita seu nome na tela e apresenta como resposta (em tela novamente) o que voc digitou. Formato da tela: ___________________________________ Digite seu nome: ______________ Seu nome : ______________ ___________________________________

41

14 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Faa um programa para gerar e exibir os nmeros inteiros de 20 at 10, decrescendo de 1 em 1. 2 - Calcule o fatorial de um nmero qualquer. Exemplo: Se o valor lido for 5. O fatorial de 5! : 5 x 4 x 3 x 2 x 1. Exemplo: Se o valor lido for 150. O fatorial de 150! : 150 x 149 x 148 x ... 3 x 2 x 1. Se o nmero for zero, o fatorial de 0! tem como resultado 1. 3 - Escreva um algoritmo que escreva 15 vezes o nome do seu time preferido. O valor deve ser inserido pelo usurio. Ao final, apresentar tambm: "O melhor time do sculo!". 4 - Escreva um algoritmo que calcule a soma e a mdia dos salrios dos funcionrios de uma empresa. O programa termina quando o usurio digitar um salrio menor que 0.

15 Lista de Exerccios
Desenvolva os algoritmos nas 3 formas de representao: Descrio Narrativa (Planejamento e Projeto), Fluxograma e codificao em Portugus Estruturado (Portugol) dos seguintes programas: 1 - Realizou-se uma pesquisa para determinar o ndice de mortalidade infantil em um certo perodo. Construa um algoritmo que leia o nmero de crianas nascidas no perodo e, depois, num nmero indeterminado de vezes, o sexo de uma criana morta (masculino, feminino) e o nmero de meses da vida da criana. Como finalizador, teremos a palavra fim no lugar do sexo da criana. Determine e imprima: - a porcentagem de crianas mortas no perodo; - a porcentagem de crianas do sexo masculino mortas no perodo; - a porcentagem de crianas que viveram dois anos ou menos no perodo. 2 - Recebendo quatro mdias bimestrais, calcule a media do ano (ponderada), sabendo que o 1 bimestre tem peso 1, o 2 bimestre tem peso 2, o 3 bimestre tem peso 3 e o 4 bimestre tem peso 4. Sabendo que para aprovao o aluno precisa ter uma mdia anual maior ou igual a 7, escreva uma mensagem indicando se o aluno foi aprovado ou reprovado. Observao: Mdia anual = (1 bimestre * 1+ 2 bimestre * 2 + 3 bimestre * 3 + 4 bimestre * 4) / (1+2+3+4) 3 - Escreva um programa para ler o nome e o sobrenome de uma pessoa e escrev-los na seguinte forma: sobrenome seguido por uma vrgula e pelo nome. Exemplo: entrada: "Antonio","Soares" sada: Soares, Antonio 4 - Deseja-se calcular a conta de consumo de energia eltrica de um consumidor. Para isto, escreva um programa que leia o cdigo do consumidor, o preo do Kw e a quantidade de Kw consumido, e exiba o cdigo do consumidor e o total a pagar. - total a pagar = preo x quantidade - total a pagar mnimo = R$ 11,20 42

Vous aimerez peut-être aussi