Você está na página 1de 68

PROF.

RAFAEL VARGAS MESQUITA DOS SANTOS

LGICA DE PROGRAMAO

CACHOEIRO DE ITAPEMIRIM 2009

Governo Federal Ministro de Educao Fernando Haddad IFES Instituto Federal do Esprito Santo Diretor Geral Jadir Jos Pla Diretor de Ensino Dnio Rebello Arantes Coordenadora do CEAD Centro de Educao a Distncia Yvina Pavan Baldo Coordenadoras da UAB Universidade Aberta do Brasil Yvina Pavan Baldo Maria das Graas Zamborlini Designer Instrucional Jonathan Toczek Souza Curso Tcnico de Informtica Professor Especialista/Autor Rafael Vargas Mesquita dos Santos DIREITOS RESERVADOS CEFET-ES Centro Federal de Educao Tecnolgica do Esprito Santo Av. Vitria Jucutuquara Vitria ES - CEP - (27) 3331.2139 Crditos de autoria da editorao Capa: Leonardo Tavares Pereira Projeto grfico: Danielli Veiga Carneiro Iconografia: Moreno Cunha Editorao eletrnica: Rafael Vargas Mesquita dos Santos Reviso de texto: Ilioni Augusta da Costa Maria Madalena Covre da Silva COPYRIGHT proibida a reproduo, mesmo que parcial, por qualquer meio, sem autorizao escrita dos autores e do detentor dos direitos autorais.

Ol, Aluno(a)!

um prazer t-lo conosco. Desejamos a voc sucesso e dedicao! Equipe do IFES

ICONOGRAFIA

Veja, abaixo, alguns smbolos utilizados neste material para gui-lo em seus estudos.

Fala do professor.

Conceitos importantes. Fique atento!

Atividades que devem ser elaboradas por voc, aps a leitura dos textos.

Indicao de leituras complementares, referentes ao contedo estudado.

Destaque de algo importante, referente ao contedo apresentado. Ateno!

Reflexo/questionamento sobre algo importante, referente ao contedo apresentado.

Espao reservado para as anotaes que voc julgar necessrias.

Sumrio

CAPTULO 1 - INTRODUO .......................................................................................................................... 9 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 2.1. 2.2. 2.3. 2.4. 3.1. SEQUNCIA LGICA ....................................................................................................................... 9 INSTRUES ..................................................................................................................................... 9 ALGORITMO .................................................................................................................................... 10 LINGUAGEM DE COMPUTADOR ................................................................................................. 12 LINGUAGEM DE PROGRAMAO .............................................................................................. 13 PROGRAMA ..................................................................................................................................... 13 PSEUDO CDIGO ............................................................................................................................ 15 DIRETRIZES PARA CONSTRUO DE ALGORITMOS ............................................................. 15 PARTES ............................................................................................................................................. 16 EXEMPLO DE ALGORITMO .......................................................................................................... 17 O QUE UM DIAGRAMA DE BLOCO?......................................................................................... 19

CAPTULO 2 - DESENVOLVENDO ALGORITMOS................................................................................... 15

CAPTULO 3 - DIAGRAMA DE BLOCO ....................................................................................................... 19 CAPTULO 4 - VISUALG - ITENS FUNDAMENTAIS................................................................................. 23 4.1. CONSTANTES.................................................................................................................................. 23 4.1.1. Constantes Numricas ................................................................................................................... 24 4.1.2. Constantes Lgicas........................................................................................................................ 24 4.1.3. Constantes Literais ........................................................................................................................ 24 4.2. VARIVEIS ...................................................................................................................................... 25 4.2.1. Declarao de variveis ................................................................................................................ 26 4.3. EXPRESSES ARITMTICAS........................................................................................................ 27 4.3.1. Prioridade das Operaes............................................................................................................. 28 4.4. EXPRESSES RELACIONAIS ........................................................................................................ 28 4.5. EXPRESSES LGICAS ................................................................................................................. 30 CAPTULO 5 - VISUALG ITENS COMPLEMENTARES......................................................................... 35 5.1. 5.2. 5.3. 5.4. COMENTRIOS ............................................................................................................................... 35 FUNCES MATEMTICAS............................................................................................................ 36 COMANDOS DE ENTRADA E SADA ........................................................................................... 36 ATRIBUIO ................................................................................................................................... 37

CAPTULO 6 - ESTRUTURA DE DECISO E REPETIO ..................................................................... 43 6.1. COMANDOS DE DECISO ............................................................................................................. 43 6.1.1. se entao .......................................................................................................................................... 44 6.1.2. se ... entao ... senao........................................................................................................................ 45 6.1.3. escolha ... caso............................................................................................................................... 46 6.2. COMANDOS DE REPETIO ........................................................................................................ 49 6.2.1. enquanto x faca.............................................................................................................................. 50 6.2.2. repita ... ate x ................................................................................................................................. 51 6.2.3. para ... de ... ate ... faca ................................................................................................................. 52 CAPTULO 7 - ESTRUTURA DE DADOS HOMOGNEAS - VETOR ...................................................... 55 7.1. ESTRUTURAS DE DADOS.............................................................................................................. 55 7.2. VARIVEIS COMPOSTAS HOMOGNEAS ................................................................................. 59 7.3. VARIVEIS COMPOSTAS UNIDIMENSIONAIS VETORES.................................................... 60 7.3.1. Declarao de Vetores .................................................................................................................. 60 CAPTULO 8 - MODULARIZAO............................................................................................................... 63 8.1. 8.2. INTRODUO ................................................................................................................................. 63 PROCEDIMENTOS E FUNES .................................................................................................... 64

8.2.1. 8.2.2. 8.2.3. 8.2.4.

Funes..........................................................................................................................................64 Passagem de Parmetros por Valor e Passagem de Parmetros por Referncia .........................65 Procedimentos ...............................................................................................................................66 Uso de Funes e Procedimentos ..................................................................................................66

Ol! Meu nome Rafael Vargas Mesquita, responsvel pela disciplina de Lgica de Programao. Atuo como professor do IFES h trs anos. Sou graduado em Cincia da Computao (2001) e Mestre em Gesto da Qualidade de Software (2007), ambos pela UFLA. Minhas reas de interesse so: Qualidade de Software, Melhoria de Processo de Software, Medio de Software, Anlise e Projeto de Sistemas Orientados a Objetos. Nesta disciplina voc entender alguns conceitos importantes relacionados a Algoritmos. Os captulos 1, 2, 3 e 4 visam apresentar conceitos iniciais a respeito da disciplina. Nos captulos 5 e 6 vocs comecaro a desenvolver algoritmos simples em uma linguagem alto nvel. Os ltmos captulos, 7 e 8, so captulos nos quais vamos elaborar algoritmos mais complexos, na finalidade de aprofundarmos na lgica de programao. O objetivo deste material auxili-lo no estudo da disciplina de Lgica de Programao, por meio de dicas e sugestes que destacam os pontos mais importantes a serem estudados. Aqui voc encontrar conceitos com os quais trabalharemos ao longo de todo o Curso. importante esclarecer que, alm deste material, voc poder encontrar outros materiais, listas de exerccios, etc no FTP. Para acessar o FTP acesse: ftp.ci.cefetes.br Bons estudos, e sucesso! Prof. Rafael Vargas Mesquita

Lgica de Programao

Captulo 1 - INTRODUO

Prezado aluno, Comearemos o primeiro captulo com uma introduo sobre Algoritmos. Para entendermos Algoritmos, primeiramente precisaremos definir alguns conceitos fundamentais como: Linguagem de Computador, Linguagem de Programao, Programa, etc. Em geral, esta disciplina acumulativa, ou seja, a compreenso dos conceitos estudados em um captulo a base para o entendimento dos captulos posteriores. Bom estudo! A lgica de programao necessria para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a seqncia lgica para o desenvolvimento. Ento o que lgica? Lgica de Programao a tcnica de encadear pensamentos para atingir determinado objetivo.

1.1.

SEQUNCIA LGICA

Estes pensamentos podem ser descritos como uma seqncia de instrues, que devem ser seguidas para se cumprir uma determinada tarefa. Seqncia Lgica so passos executados at atingir um objetivo ou soluo de um problema.

1.2.

INSTRUES

Na linguagem comum, entende-se por instrues um conjunto de regras ou normas definidas para a realizao ou emprego de algo.
IFES Instituto Federal do Esprito Santo

Curso Tcnico em Informtica

Em Informtica, porm, instruo a informao que indica a um computador uma ao elementar a executar. Convm ressaltar que uma ordem isolada no permite realizar o processo completo, para isso necessrio um conjunto de instrues colocadas em ordem seqencial lgica. Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prtica uma srie de instrues: descascar as batatas, bater os ovos, fritar as batatas etc. evidente que essas instrues tm que ser executadas em uma ordem adequada no se podem descascar as batatas depois de frit-las. Dessa maneira, uma instruo tomada em separado no tem muito sentido; para obtermos o resultado, precisamos colocar em prtica o conjunto de todas as instrues, na ordem correta. Instrues so um conjunto de regras ou normas definidas par a a realizao ou emprego de algo. Em Informtica, o que indica a um computador uma ao elementar a executar.

1.3.

ALGORITMO
Um Algoritmo formalmente uma seqncia finita de passos que levam a execuo de uma tarefa.

Podemos pensar em algoritmo como uma receita, uma seqncia de instrues para atender a uma meta especfica. Estas tarefas no podem ser redundantes nem subjetivas na sua definio, devem ser claras e precisas. Como exemplos de algoritmos podemos citar os algoritmos das operaes bsicas (adio, multiplicao, diviso e subtrao) de nmeros reais decimais. Outros exemplos seriam os manuais de aparelhos eletrnicos, como um videocassete, que explicam passo-a-passo como, por exemplo, gravar um evento. At mesmo as coisas mais simples, podem ser descritas por seqncias lgicas. Por exemplo:

10
Instituto Federal do Esprito Santo

Lgica de Programao

Chupar uma bala. Pegar a bala Retirar o papel. Chupar a bala. Jogar o papel no lixo.

Fritar Batatas Suponhamos a existncia de uma dispensa onde se encontram as batatas e que haja um cesto para se colocar estas batatas. Suponhamos ainda que o leo, a panela, a faca, o prato e o sal estejam em um armrio. Pegar cesto. Ir dispensa. Colocar as batatas no cesto. Trazer o cesto para prximo do fogo. Pegar a panela e o leo no armrio. Colocar o avental. Pegar a faca no armrio. Descascar as batatas que esto no cesto. Cortar as batatas em pedaos menores. Colocar o leo na panela. Colocar a panela com leo no fogo. Ligar o fogo. Aguardar at o leo esquentar. Colocar as batatas no leo. Aguardar fritar. Pegar prato no armrio. Retirar batatas da panela . Colocar as batatas no prato. Pegar o sal no armrio. Colocar sal na batata. Jogar cascas da batata no lixo. Vamos supor que a colocao do avental seja condicionada a cor da roupa da pessoa que frita as batatas. Se a cor da roupa for clara o avental e colocado seno o avental no colocado. Vejamos como fica o algoritmo: Pegar cesto. Ir dispensa. Colocar as batatas no cesto. Trazer o cesto para prximo do fogo.
IFES Instituto Federal do Esprito Santo

11

Curso Tcnico em Informtica Pegar a panela e o leo no armrio. Se roupa clara ento Colocar o avental. Pegar a faca no armrio. Descascar as batatas que esto no cesto. Cortar as batatas em pedaos menores. Colocar o leo na panela. Colocar a panela com leo no fogo. Ligar o fogo. Aguardar at o leo esquentar. Colocar as batatas no leo. Aguardar fritar. Pegar prato no armrio. Retirar batatas da panela. Colocar as batatas no prato. Pegar o sal no armrio. Colocar sal na batata. Jogar cascas da batata no lixo. Ns podemos tambm subdividir certas instrues. Por exemplo, a instruo: Descascar as batatas que esto no cesto. Pode ser mais bem detalhada na forma: Enquanto houver batatas no descascadas no cesto faa Descascar uma batata.

1.4.

LINGUAGEM DE COMPUTADOR

O computador possui uma linguagem prpria, formada por conjuntos especficos de zeros e uns ( Linguagem Binria ou de Mquina) para a qual todos os caracteres da linguagem humana so convertidos de modo que o computador possa entender os comandos que desejamos que ele execute. A Linguagem de Mquina a forma de se representar os dois estados (ligado/desligado) da corrente eltrica utilizados nos circuitos eletrnicos dos computadores. a nica linguagem inteligvel pelo computador.

12
Instituto Federal do Esprito Santo

Lgica de Programao

1.5.

LINGUAGEM DE PROGRAMAO

Como a Linguagem de Mquina de difcil compreenso e manipulao, foram desenvolvidas linguagens intermedirias entre a da mquina e a do homem; estas linguagens denominam-se Linguagens de Programao. A Linguagem de Programao um mtodo padronizado para expressar instrues para um computador.

Dizemos que quanto mais prxima da linguagem humana for a linguagem de programao ela de alto nvel, caso contrrio considerado baixo nvel. Os programas so geralmente, escritos em linguagem de programao e convertidos para linguagem de mquina atravs de programas especficos. Tais programas se dividem em duas categorias: Compiladores: convertem o programa escrito em uma linguagem de programao em linguagem de mquina uma nica vez, a partir da, toda vez que o programa executado ele executado j no formato binrio. Interpretadores: convertem o programa escrito em uma linguagem de programao em linguagem de mquina toda vez que ele for executado.

1.6.

PROGRAMA
Os Programas de Computadores nada mais so do que algoritmos escritos numa linguagem de programao (Visualg, Pascal, C, Cobol, Fortran, Visual Basic, Java, entre outras) e que so interpretados e executados por uma mquina, no caso um computador.

Notem que dada esta interpretao rigorosa, um programa , por natureza, muito especfico e rgido em relao aos algoritmos da vida real.

IFES Instituto Federal do Esprito Santo

13

Curso Tcnico em Informtica Notar que: Toda linguagem de programao define um conjunto de instrues que ela consegue converter para linguagem de mquina. Logo se tivermos uma linguagem que entenda a instruo: Descascar todas as batatas. Ele ir executar tal instruo, entretanto normalmente as linguagens de programao no definem instrues to especficas, da necessrio transformar esta instruo em sub-instrues compreensveis pela linguagem escolhida e passvel de gerao de linguagem de computador. Vamos resumir o contedo visto neste captulo: Aprendemos conceitos importantes, como: Instrues, em informtica, o que indica a um computador uma ao elementar a executar. Algoritmo uma seqncia finita de passos que levam a execuo de uma tarefa. Linguagem de Mquina ou de Computador a nica linguagem inteligvel pelo computador. Linguagem de Programao um mtodo padronizado para expressar instrues para um computador. Programa algoritmos escritos numa linguagem de programao.

Atividades
1. Elabore um algoritmo para tomar banho. 2. Faa um algoritmo para trocar o pneu de um carro. 3. Faa um algoritmo para trocar uma lmpada. (Descreva em detalhes) 4. Escreva um algoritmo para descrever como voc faz para ir de sua casa at a escola.

14
Instituto Federal do Esprito Santo

Lgica de Programao

Captulo 2 - DESENVOLVENDO ALGORITMOS

Prezado aluno, Agora que voc j tem uma viso geral de algoritmos, apresentaremos neste captulo como desenvolver alguns algoritmos simples. Os algorimos desenvolvidos nesta fase da disciplina so bem simples, todavia no menos importantes, pois a partir do entendimendo destes vocs tero uma maior facilidade na compreenso dos demais. Bom estudo!

2.1.

PSEUDO CDIGO

Os algoritmos so descritos em uma linguagem chamada pseudocdigo. Este nome uma aluso posterior implementao em uma linguagem de programao, ou seja, quando formos programar em uma linguagem, por exemplo C, estaremos gerando cdigo em C. Por isso os algoritmos so independentes das linguagens de programao. Ao contrrio de uma linguagem de programao no existe um formalismo rgido de como deve ser escrito o algoritmo. O algoritmo deve ser fcil de interpretar e fcil de codificar. Ou seja, ele deve ser o intermedirio entre a linguagem falada e a linguagem de programao.

2.2.

DIRETRIZES PARA CONSTRUO DE ALGORITMOS

Para escrever um algoritmo precisamos descrever a seqncia de instrues, de maneira simples e objetiva. Para isso utilizaremos algumas tcnicas: Usar somente um verbo por frase.

IFES Instituto Federal do Esprito Santo

15

Curso Tcnico em Informtica Imaginar que voc est desenvolvendo um algoritmo para pessoas que no trabalham com informtica. Usar frases curtas e simples. Ser objetivo. Procurar usar palavras que no tenham sentido dbio.

2.3.

PARTES

No Captulo anterior vimos que ALGORITMO uma seqncia lgica de instrues que podem ser executadas. importante ressaltar que qualquer tarefa que siga determinado padro pode ser descrita por um algoritmo, como por exemplo: COMO FAZER ARROZ DOCE ou ento CALCULAR O SALDO FINANCEIRO DE UM ESTOQUE Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em trs partes fundamentais (Figura 2-1).

Figura 2-1: Partes Fundamentais

Onde temos: ENTRADA: So os dados de entrada do algoritmo. Em algoritmos de alto nvel podem ser identificados por verbos como: Ler, Receber etc. PROCESSAMENTO: So os procedimentos utilizados para chegar ao resultado final SADA: So os dados j processados. Em algoritmos de alto nvel podem ser identificados por verbos como: Retornar, Imprimir, Mostrar etc. A analogia com o homem pode ser observado na Figura 2-2.

16
Instituto Federal do Esprito Santo

Lgica de Programao

Figura 2-2: Analogia com o Homem

2.4.

EXEMPLO DE ALGORITMO

Imagine o seguinte problema: Calcular a mdia final de um aluno da 3 Srie. O aluno realizar quatro provas: P1, P2, P3 e P4. Onde: Mdia Final = (P1 + P2 + P3 + P4) / 4 Para montar o algoritmo proposto, faremos trs perguntas:
a) Quais so os dados de entrada?

R: Os dados de entrada so P1, P2, P3 e P4


b) Qual ser o processamento a ser utilizado?

R: O procedimento ser somar todos os dados de entrada e dividi-los por 4 (quatro)


c) Quais sero os dados de sada?

R: O dado de sada a mdia final

IFES Instituto Federal do Esprito Santo

17

Curso Tcnico em Informtica

Algoritmo Receba a nota da prova1. Receba a nota de prova2. Receba a nota de prova3. Receba a nota da prova4. Some todas as notas e divida o resultado por 4. Mostre o resultado da diviso. Vamos resumir o contedo visto neste captulo: Aprendemos que os algoritmos podem ser descritos utilizando-se uma linguagem denominada Pseudo-Cdigo. Esta linguagem nos ajuda a entendermos os passos que um algoritmo possui. Compreendemos algumas regras bsicas que devem ser seguidas para construo de algoritmos, como: utilizar apenas um verbo por frase, etc. E, principalmente, passamos a entender que podemos dividir nosso algoritmo em trs partes: Entrada, Processamento e Sada.

Atividades
1. Identifique os dados de entrada, processamento e sada no algoritmo abaixo: Receba cdigo da pea. Receba valor da pea. Receba Quantidade de peas. Calcule o valor total da pea (Quantidade * Valor da pea). Mostre o cdigo da pea e seu valor total. 2. Faa um algoritmo para Calcular o estoque mdio de uma pea, sendo que:
ESTOQUEMDIO = (QUANTIDADE MNIMA + QUANTIDADE MXIMA) /2

3. Teste o algoritmo anterior com dados definidos por voc.

18
Instituto Federal do Esprito Santo

Lgica de Programao

Captulo 3 - DIAGRAMA DE BLOCO

3.1.

O QUE UM DIAGRAMA DE BLOCO?

O Diagrama de Blocos uma forma padronizada e eficaz para representar os passos lgicos de um determinado processamento. Com o diagrama podemos definir uma seqncia de smbolos, com significado bem definido, portanto, sua principal funo a de facilitar a visualizao dos passos de um processamento. Existem diversos smbolos em um diagrama de bloco. Na Figura 3-1 apresentaremos os principais:

Figura 3-1: Smbolos de um Diagrama de Blocos

Dentro do smbolo sempre ter algo escrito, pois somente os smbolos no nos dizem nada. Veja no exemplo a seguir:
IFES Instituto Federal do Esprito Santo

19

Curso Tcnico em Informtica Exemplos de Diagrama de Bloco (Figura 3-2): CHUPAR UMA BALA INCIO CALCULAR MDIA DE 4 NOTAS INCIO

PEGAR BALA

RECEBER N1

RETIRAR O PAPEL

RECEBER N2

CHUPAR A BALA

RECEBER N3

JOGAR PAPEL NO LIXO

RECEBER N4

FIM

CALCULAR MDIA MDIA = ( N1 + N2 + N3 + N4 ) / 4

MDIA

FIM

Figura 3-2: Exemplos de Diagramas de Blocos

20
Instituto Federal do Esprito Santo

Lgica de Programao

Vamos resumir o contedo visto neste captulo: Aprendemos a construir algoritmos graficamente, utilzando smbolos padres, os quais juntos constroem o que chamado de Diagrama de Blocos. Ser importante este entendimento, pois alguns algoritmos mais complexos, de captulos posteriores, sero melhor entendidos graficamente, ou seja, em Diagrama de Blocos.

Atividades
1. Construa um diagrama de blocos que: Leia a cotao do dlar. Leia um valor em dlares. Converta esse valor para Real. Mostre o resultado. 2. Desenvolva um diagrama que: Leia 4 (quatro) nmeros. Calcule o quadrado para cada um. Somem todos. Mostre o resultado. 3. Faa testes numricos para testar seu algoritmo. 4. Identifique nestes algoritmos o que entrada, processamento e sada.

IFES Instituto Federal do Esprito Santo

21

Curso Tcnico em Informtica

22
Instituto Federal do Esprito Santo

Lgica de Programao

Captulo 4 - VISUALG - ITENS FUNDAMENTAIS

Prezado aluno, Para compreendermos melhor como elaborar algoritmos que possam ser executados em um computador precisamos escolher uma Linguagem de Programao. A partir desta escolha, poderemos ento escrever nossos algoritmos na Linguagem de Programao escolhida, fazendo com que estes algoritmos possam ser considerados Programas de Computador. Nesta disciplina a Linguagem de Programao escolhida foi o Visualg. Esta uma Linguagem bem prxima a nossa linguagem natural, e por isso ficar bem fcil de aprendermos a Lgica de Programao em si. A partir deste captulo os conceitos apresentados sero associados a Linguagem de Programao Visualg. Bom estudo!

4.1.

CONSTANTES
Uma Constante um determinado valor fixo que no se modificar ao longo do tempo, durante a execuo do programa.

Uma constante pode ser um nmero (como se conhece na Matemtica), um valor lgico ou uma seqncia de caracteres com algum significado para o problema em estudo. No contexto de Algoritmos escritos em Visualg uma constante pode ser classificada como sendo numrica (inteira ou real), lgica ou literal.

IFES Instituto Federal do Esprito Santo

23

Curso Tcnico em Informtica

4.1.1. Constantes Numricas


A representao de uma constante numrica nos algoritmos feita no sistema decimal, podendo ser um nmero com ou sem parte fracionria. Exemplos: 33 -4 44.21 Observe que na Linguagem de Programao Visualg utilizamos o ponto . como separador da parte decimail de um nmero. comum a representao de constantes com parte exponencial, isto , um fator de 10 elevado a um expoente inteiro. Exemplos: 44.17 X 105 22,35 X 10-1

4.1.2. Constantes Lgicas


um valor lgico, isto , s pode ser falso ou verdadeiro.

4.1.3. Constantes Literais


Uma constante deste tipo pode ser qualquer seqncia de caracteres (literais, dgitos ou smbolos especiais) que forme um literal com algum significado para o problema em estudo. Para que no ocorra confuso na identificao de constantes literais elas sero colocadas entre aspas.

24
Instituto Federal do Esprito Santo

Lgica de Programao

Exemplos: JOO DE DEUS MK3227 23/02/2006

4.2.

VARIVEIS

Na Matemtica, uma varivel a representao simblica dos elementos de certo conjunto. Na Informtica, uma Varivel um espao de memria em uma determinada posio, cujo contedo pode variar ao longo do tempo durante a execuo de um programa, mas a cada instante existe um nico valor. Toda varivel definida por um nome ou identificador. Um identificador uma seqncia de caracteres alfanumricos vlida na nomeao de variveis. Nos compiladores atuais uma seqncia validade de caracteres alfanumricos definida como: O primeiro caractere deve ser obrigatoriamente uma letra. Os caracteres seguintes devem ser letras ou dgitos, no sendo permitido o uso de caracteres especiais. No devemos utilizar acentos (, ^, ~). Isso porque as linguagens de programao classificam estes smbolos como caracteres especiais. Exemplos: Identificadores vlidos A NOTA X5 A33C423

IFES Instituto Federal do Esprito Santo

25

Curso Tcnico em Informtica FITTKM nome_da_cidade Identificadores No Vlidos 5B (14)B5 B(B) XY 5(KM32) Considerando a linguagem Visualg importante entender que: o caractere underline (_) pode ser utilizado em identificadores. J o caractere fem (-) no deve ser utilizado.

4.2.1. Declarao de variveis


No Visualg, as variveis s podem armazenar valores de um mesmo tipo. Podendo ser classificadas em numricas, lgicas e literais, assim como as constantes. A declarao de variveis deve ser feita da seguinte forma: <Lista de Identificadores > : <Nome do Tipo > Onde: Lista de Identiciadores: a lista de nomes escolhidos para as variveis, que devem estar separados por vrgula. Nome do Tipo: um dos quatro tipos que indicam o tipo da varivel: inteiro, real, logico ou literal. Exemplos: idade: inteiro peso, altura, nota: real cidade, nome, sobrenome : literal 26
Instituto Federal do Esprito Santo

Lgica de Programao

flag, teste, maior_de_18 : logico Observe que o nome dos tipos deve estar sem acentos. Exemplos: inteiro, real, literal e logico. No Visualg a palavra literal pode ser substituda por caractere, ambos representam o mesmo tipo.

4.3.

EXPRESSES ARITMTICAS

Expresso aritmtica aquela que utiliza operadores aritmticos e cujos operandos so constantes e/ou variveis do tipo numrico. So operadores aritmticos: Adio, Subtrao, Multiplicao, Diviso, Potenciao e Radiciao. A tabela abaixo mostra exemplos de utilizao de operadores na matemtica em comparao com a utilizao no Visualg. Para tal, considere A e B como sendo variveis numricas.
OPERADOR Adio Subtrao Multiplicao Diviso Potenciao Radiciao MATEMTICA (EXEMPLO) A+B AB AxB A/B AB
Y

VISUALG (EXEMPLO) A+B AB A*B A/B A^B X ^ (1/Y)

Exemplos de Expresses Aritmticas em Visualg: X+Y XY 2 * NOTA NOTA ^ 2

IFES Instituto Federal do Esprito Santo

27

Curso Tcnico em Informtica

4.3.1. Prioridade das Operaes


Assim como na Matemtica os operadores aritmticos obedecem a seguinte ordem: 1 Potenciao e Radiciao 2 Multiplicao e Diviso 3 Adio e Subtrao Para mudar a procedncia podemos, como na matemtica, utilizar parnteses. Colchetes e Chaves no devem ser utilizados nas expresses aritmticas pois so usados nos algoritmos com outras finalidades.

4.4.

EXPRESSES RELACIONAIS

Expresses Relacionais so aquelas que utilizam operadores relacionais, cujos operandos em uma relao so do mesmo tipo e cujo resultado do tipo lgico. So operadores relacionais (Tabela 4-1):
DESCRIO IGUAL A DIFERENTE DE MAIOR QUE MENOR QUE MAIOR OU IGUAL A MENOR OU IGUAL A SMBOLO = <> > < >= <=

Tabela 4-1: Operadores Relacionais

28
Instituto Federal do Esprito Santo

Lgica de Programao

Exemplo: Suponhamos duas variveis do tipo numrico: A = 50 B = 30 Ao fazermos comparaes entre elas teramos o seguinte soluo (Tabela 4-2):
EXPRESSO A=B A <> B A>B A<B A >= B A <= B RESULTADO FALSO VERDADEIRO VERDADEIRO FALSO VERDADEIRO FALSO Tabela 4-2: Soluo para A = 50 e B = 30

Fazendo uma pequena referncia aos diagramas de blocos o smbolo que indica os operadores relacionais (Figura 4-1):

Figura 4-1: Smbolo do operador Relacional.

Vejamos ento alguns exemplos de uso, na Figura 4-2 temos a comparao de duas variveis, na Figura 4-3 temos a comparao de uma varivel numrica com uma constante numrica e na Figura 4-4 temos a comparao de uma varivel (literal) com uma constante literal.

IFES Instituto Federal do Esprito Santo

29

Curso Tcnico em Informtica

codigo = codant

Sim

No

Figura 4-2: Comparando duas variveis

codigo > 1000

Sim

No

Figura 4-3: Comparando uma varivel (numrica) com uma constante numrica

nome = Jos

Sim

No

Figura 4-4: Comparando uma varivel (literal) com uma constante literal

4.5.

EXPRESSES LGICAS

Expresses lgicas so aquelas que utilizam operadores lgicos e cujos operandos so expresses relacionais, pois seus resultados so do tipo lgico, constantes e/ou variveis do tipo lgico. Toda expresso lgica tem como resultado um valor lgico VERDADEIRO ou FALSO.

30
Instituto Federal do Esprito Santo

Lgica de Programao

Os operadores lgicos so (Tabela 4-3):


E OU NAO Tabela 4-3: Operadores Lgicos

E: Uma expresso lgica ( E ) verdadeira se todos os seus operandos possurem o valor VERDADEIRO. OU: Uma expresso lgica ( OU ) verdadeira se algum de seus operandos possuir o valor VERDADEIRO. NAO: Uma expresso lgica ( NO ) verdadeira se seu operando FALSO. A Tabela 4-4 ilustra o comportamento dos operadores lgicos:
1 VALOR VERDADEIRO VERDADEIRO FALSO FALSO VERDADEIRO VERDADEIRO FALSO FALSO VERDADEIRO FALSO OPERADOR E E E E OU OU OU OU NAO NAO 2 VALOR VERDADEIRO FALSO VERDADEIRO FALSO VERDADEIRO FALSO VERDADEIRO FALSO RESULTADO VERDADEIRO FALSO FALSO FALSO VERDADEIRO VERDADEIRO VERDADEIRO FALSO FALSO VERDADEIRO

Tabela 4-4: Comportamento dos Operadores Lgicos

IFES Instituto Federal do Esprito Santo

31

Curso Tcnico em Informtica Exemplo: Suponha que temos 3 variveis A = 50, B = 80 e C = 10 Os resultados das expresses seriam conforme a Tabela 4-5:
EXPRESSES A=B A<>B A>B A<B A >= B A <= B E OU NAO E OU NAO B>C B=C B>C B<C RESULTADO FALSO VERDADEIRO VERDADEIRO VERDADEIRO FALSO FALSO

Tabela 4-5: Resultado das expresses de acordo com o exemplo dado

Vamos resumir o contedo visto neste captulo: Neste captulo definimos: Constante: um determinado valor fixo que no se modificar ao longo do tempo, durante a execuo do programa. Varivel: um espao de memria em uma determinada posio, cujo contedo pode variar ao longo do tempo durante a execuo de um programa, mas a cada instante existe um nico valor. Vimos tambm que podemos realizar expresses com estas constantes e variveis. Os tipos de expresses so: Aritmticas, Relacionais e Lgicas.

32
Instituto Federal do Esprito Santo

Lgica de Programao

Atividades
1. Identifique o tipo das constantes utilizando a seguinte legenda: 1 Constante Numrica 2 Constante Lgica 3 Constante Literal a. ( b. ( c. ( d. ( e. ( f. ( g. ( ) 33 ) 33 ) Constante Lgica ) Constante Literal ) Constante Numrica ) 5878987.23 ) verdadeiro h.( ) falso i. ( ) verdadeiro j. ( ) falso k. ( ) 123KO l. ( ) 123verdadeiro123 m. ( ) 9999999 n. ( ) fim

2. Assinale X nos identificadores vlidos: a. ( ) VALOR b. ( ) 33 c. ( ) 33 d. ( ) X2 e. ( ) 2X f. ( ) x2 g. ( ) 2X h.( ) AHHHH i. ( ) AHHHH!!! j. ( ) SALARIO-LQUIDO k. ( ) NOTA*DO*ALUNO l. ( ) m{23} m. ( ) sacada256 n. ( ) 256sacada o. ( ) NOMEDAEMPRESA

3. Supondo que temos as variveis SALARIO, IR e SALLIQ e que os valores esto representados na tabela abaixo. Aplicando as expresses na tabela qual o resultado lgico obtido:

4. Sabendo que A = 3, B = 7 e C = 4, informe se as expresses abaixo so V (verdadeiro) ou F (falso). a. ( b.( c. ( d.( e. ( f. ( )(A+B)>C ) B >= ( A + 2 ) )C=(BA) ) ( B A ) <= C ) ( B + A ) <= C ) ( C+ A) > B h.( i. ( j. ( k.( l. ( ) (B^2 A^2 2 ) >= 49 ) ( C^(1/2) + B A/2 ) < 15 ) NAO ( C^2 = (A^2 + B) ) ) NAO ( C^2 < > (A^2 + B) ) ) NAO ( NAO ( NAO ( NAO ( A >B)))) 33

IFES Instituto Federal do Esprito Santo

Curso Tcnico em Informtica g.( ) ( B^2 A^2 ) >= 39 5. Repita o exerccio anterior com A = 1, B = 2 e C = 16. a. ( b.( c. ( d.( e. ( f. ( g.( )(A+B)>C ) B >= ( A + 2 ) )C=(BA) ) ( B A ) <= C ) ( B + A ) <= C ) ( C+ A) > B ) ( B^2 A^2 ) >= 39 h.( i. ( j. ( k.( l. ( ) (B^2 A^2 2 ) >= 49 ) ( C^(1/2) + B A/2 ) < 15 ) NAO ( C^2 = (A^2 + B) ) ) NO ( C^2 < > (A^2 + B) ) ) NAO ( NAO ( NAO ( NAO ( A >B))))

34
Instituto Federal do Esprito Santo

Lgica de Programao

Captulo 5 - VISUALG ITENS COMPLEMENTARES

Caro aluno, At o presente momento abordamos conceitos fundamentais com relao a Linguagem de Programao Visualg. Vamos continuar aprofundando nossos conhecimentos sobre esta Linguagem de Programao neste captulo. Leia com ateno todas as novas informaes contidas neste captulo, pois comearemos a programar de verdade. Depois de entendermos estes conceitos vamos, de fato, utilizar a Ferramenta de Programao Visualg. Bom estudo!

5.1.

COMENTRIOS

Quando implementamos um algoritmo fundamental a preocupao com a clareza (facilidade de entendimento) do algoritmo. O comentrio uma observao que se coloca no cdigo de forma a possibilitar o entendimento do mesmo. No Visualg, os comentrios so representados por um texto aps //. No seguinte exemplo a declarao das variveis foi comentada de forma a explicar para que serve cada varivel: MATRICULA: inteiro // nmero da matricula do aluno NOTA: real // nota do aluno CODIGO: inteiro // cdigo do curso

IFES Instituto Federal do Esprito Santo

35

Curso Tcnico em Informtica

5.2.

FUNCES MATEMTICAS

Alm dos operadores aritmticos normalmente utilizados, podemos usar funes disponibilizadas pela linguagem Visualg, que comumente esto presentes em muitas linguagens (Quadro 6):
NOME log ( X ) abs ( X ) int ( X ) X div Y X mod Y sen ( X ) cos ( X ) tan ( X ) RESULTADO Logaritmo na base 10 de X Valor Absoluto de X Parte inteira de um nmero fracionrio Quociente inteiro da diviso de X por Y Resto da diviso de X por Y Funo seno aplicada ao argumento X (em radianos) Funo co-seno aplicada ao argumento X (em radianos) Funo tangente aplicada ao argumento X (em radianos) Tabela 5-1: Funes do Visualg

Exemplos de Funes em Visualg: Sendo A, B, X variveis do tipo numrico, quais os resultados fornecidos por cada uma das seguintes funes, onde A = 10, B = 3 e X = 1.2. A div B = 10 div 3 = 3 A mod B = 10 mod 3 = 1 abs ( B A ) = abs ( 3 10 ) = abs ( -7 ) = 7 int ( 4 * X ) = int ( 4 * 1.2 ) = int ( 4.8 ) = 4

5.3.

COMANDOS DE ENTRADA E SADA

Precisamos de alguns comandos para entrada/sada de dados nos algoritmos, para tanto utilizaremos os seguintes comandos: Entrada: leia (<Nome da Varivel>) Onde: leia: uma palavra-chave. ( ): Os parnteses delimitam o identificador da varivel 36
Instituto Federal do Esprito Santo

Lgica de Programao

<Nome da Varivel>: o nome da varivel na qual ser armazenado o valor proveniente do meio de entrada. importante ressaltar que as linguagens de programao normalmente utilizadas obrigam a leitura varivel a varivel. Sada: escreva (<Lista de variveis>) Onde: escreva: uma palavra chave. ( ): Os parnteses delimitam os identificadores das variveis <Lista de variveis>: so os nomes das variveis, separados por vrgula, das quais sero obtidos os valores a serem escritos. Voc ainda pode utilizar uma variao do comando escreva na Linguagem de Programao Visualg: escreval O comando escreval tem a mesma finalidade que o comando escreva, todavia aps mostrar o valor especificado na tela, o computador salta uma linha para separar as prximas exibies de valores na tela. Exemplos de Comandos de Entrada e Sada: leia (A) leia (NOME) escreva (A) escreva (NOME, SOBRENOME, TECEIRONOME)

5.4.

ATRIBUIO

O comando responsvel pela colocao de um valor em uma varivel o comando de atribuio. Tal comando pode ser apresentado da seguinte forma:

IFES Instituto Federal do Esprito Santo

37

Curso Tcnico em Informtica Identificador Expresso Onde: Identificador: o nome da varivel qual est sendo atribudo o valor. : o smbolo de atribuio Expresso: pode ser uma expresso aritmtica, expresso lgica ou expresso literal de cuja avaliao obtido o valor a ser atribudo varivel. Exemplo de Atribuio: NOTA 5 MEDIA NOTA + 3

Vamos resumir o contedo visto neste captulo: Neste captulo aprendemos sobre alguns comandos da linguagem Visual muito importantes: Descrio No Visualg Comentrios // Comandos de Entrada leia Comandos de Sada escreva Atribuio

Atividades
1. Suponha as seguintes variveis: SOMA, NUMERO, CONT: real NOME, COR, DIA, MES, ANO: literal TESTE, CODIGO, TUDO: logico Determine que atribuies so vlidas e escreva nas que no so por que no so: a. NOME 5 b. SOMA NUMERO + 2 * CONT c. TESTE CODIGO ou CONT^2 < > SOMA 38
Instituto Federal do Esprito Santo

Lgica de Programao

d. TUDO SOMA e. COR Preto CONT^(1/2) f. CONT CONT + 1 g. NUMERO *abC* h. DIA SEGUNDA FEIRA i. MES AGOSTO j. ANO 2006 k. SOMA + 2 CONT^2 NUMERO^(1/2) l. CONT NOME >= CODIGO 2. Determine os valores obtidos por cada uma das expresses aritmticas a seguir: Para fazer este exerccio muito importante lembrar que: 2 ^ (1/2) = 2 2 2 ^ (1/3) = 3 2 Suponha as seguintes instrues antes das expresses aritmticas: P, Q, R: inteiro S: real P2 Q3 R 12 S 4.5 a. 100 * (Q div P) + R b. P * (R mod 5) - Q/2 c. abs ( S - R ) + 100 * (Q div P) + R - P * (R mod 5) - Q/2 d. ( R + P^2 ) ^ (1/2) + int( S ) e. ( int(S) mod (P + 1)) - Q * R f. 1 + ( ( P ^3 + 2 * R ) ^ ( 1/5 ) ) - int (S - 1) g. abs ( int ( abs ( S - R ) ) ) h. int (abs ( S - R ) ) i. 1 + (int(R+S) div (P)) * int(2 * P * Q - R) j. abs ( int ( abs ( R - S ) ) ) k. int ( abs ( R - S ) ) l. P + abs ( 2.9 + int ( 0.3 + S ) * 2 ) 3. Determine o que ser escrito pelo comando ESCREVA: A) Supondo que o comando leia ler informaes a partir do teclado e que as informaes digitadas sero as seguintes:
IFES Instituto Federal do Esprito Santo

39

Curso Tcnico em Informtica

INFORMATICA, 35 algoritmo "Cap05-3.a" var N, P: literal X, A: real inicio X <- 10 leia(N) leia(A) X <- X + A P <- N escreva(P, X) X <- X + A escreva(X) A <- X escreva(N, X, A) fimalgoritmo Utilize as tabelas abaixo para responder o exerccio 3.A: Variveis N P X A

Comando escreva 1 2 3 B) Supondo que o comando leia ler informaes a partir do teclado e que as informaes digitadas sero as seguintes: JOAO, SILVA, SILVA, 35, 47, 26, VERDADEIRO, FALSO, VERDADEIRO algoritmo "Cap05-3.b" var NOME, SOBRENOME, TERCEIRONOME: literal NUM1, NUM2, NUM3: inteiro FLAG1, FLAG2, FLAG3: logico inicio leia(NOME) leia(SOBRENOME) 40
Instituto Federal do Esprito Santo

Lgica de Programao

leia(TERCEIRONOME) leia(NUM1) leia(NUM2) leia(NUM3) leia(FLAG1) leia(FLAG2) leia(FLAG3) FLAG1 <- ( SOBRENOME = TERCEIRONOME ) FLAG2 <- ( NUM2 <= NUM1 + NUM3 ) FLAG3 <- (FLAG1 e FLAG2) ou FLAG3 NUM1 <- NUM2 + NUM1 - (NUM3 mod 3) NUM2 <- NUM1 + (NUM3 div 3) NUM3 <- 10 TERCEIRONOME <- NOME NOME <- SOBRENOME FLAG3 <- ( NOME = TERCEIRONOME ) escreva(NOME, SOBRENOME, TERCEIRONOME) escreva(NUM1, NUM2, NUM3) escreva(FLAG1, FLAG2, FLAG3) fimalgoritmo Utilize as tabelas abaixo para responder o exerccio 3.B: Variveis TERCEIRONOME

SOBRENOME

FLAG1

FLAG2

FLAG3

NOME

NUM1

NUM2

NUM3

IFES Instituto Federal do Esprito Santo

41

Curso Tcnico em Informtica Comando escreva 1 2 3

Para facilitar o entendimento dos algoritmos descritos na apostila, daqui para frente, iremos colorir os cdigos de acordo com o padro de cores da ferramenta Visualg. Cada cor tem um significado especfico: Elementos Palavras Especiais Palavras-Chave Comentrios Constantes Tipo de Dados Texto em Geral Cores Azul Azul Escuro Verde Vermelho Vermelho Escuro Preto Exemplo algoritmo leia // Teste 1 , Teste inteiro nome

Obs.: Palavras Especiais e Palavras-Chave (ou Palavras Reservadas) so palavras com uma finalidade especfica dentro da linguagem de programao utilizada (no nosso caso, Visualg), as quais no podem ser utilizadas como identificadores de variveis.

42
Instituto Federal do Esprito Santo

Lgica de Programao

Captulo 6 - ESTRUTURA DE DECISO E REPETIO

Prezado programador (agora j posso te chamar assim), Fizemos nossos primeiros programas utilizando a Linguagem de Programao Visualg. Neste captulo sero abordados os importantssimos conceitos de Comandos de Deciso e Comandos de Repetio. A partir de agora voc vai entender que nem todas as linhas de cdigo de nosso programas precisam ser executadas pelo computador. Ou seja, vai aprender que por meio de Comandos de Desiso voc pode criar diferentes possibilidades de execuo de um determinado programa. Alm disso, por meio de Comandos de Repetio, compreender que um certo trecho do cdigo de um programa pode ser executado repetidamente um certo nmero de vezes. Bom estudo!

6.1.

COMANDOS DE DECISO

Os comandos de deciso ou desvio fazem parte das tcnicas de programao que conduzem a estruturas de programas que no so totalmente seqenciais. Com as instrues de SALTO ou DESVIO pode-se fazer com que o programa proceda de uma ou outra maneira, de acordo com as decises lgicas tomadas em funo dos dados ou resultados anteriores. As principais estruturas de deciso so: se entao se entao senao escolha caso

IFES Instituto Federal do Esprito Santo

43

Curso Tcnico em Informtica

6.1.1. se entao
A estrutura de deciso se normalmente vem acompanhada de um comando, ou seja, se determinada condio for satisfeita pelo comando Se ento execute determinado comando. Imagine um algoritmo que determinado aluno somente estar aprovado se sua mdia for maior ou igual a 5.0, veja no exemplo de algoritmo como ficaria. se (media >= 5.0) entao escreva(Aluno Aprovado) fimse O comando de deciso caracterizado por: se (expresso lgica) entao comandos fimse Onde: Expresso lgica tem como resultado um valor lgico VERDADEIRO ou FALSO. Comandos so linhas de cdigo no algoritmo. Em diagrama de blocos ficaria conforme Figura 6-1:

Media >= 5.0

Sim

Aluno Aprovado No

Fim

Figura 6-1: Diagrama de Blocos se entao

Vejamos outro exemplo com um algoritmo completo: O algoritmo a seguir escreve uma mensagem caso o terceiro nmero lido seja maior que a soma dos outros dois nmeros lidos.

44
Instituto Federal do Esprito Santo

Lgica de Programao

algoritmo Exemplo se entao var NUM1, NUM2, NUM3: real inicio leia(NUM1) leia(NUM2) leia(NUM3) se (NUM1 + NUM2 < NUM3) entao escreva (O terceiro nmero que a soma dos outros dois) fimse fimalgoritmo

maior

6.1.2. se ... entao ... senao


A estrutura de deciso se/entao/senao, funciona exatamente como a estrutura se, com apenas uma diferena, em se somente podemos executar comandos caso a condio seja verdadeira, diferente de se/senao pois sempre um comando ser executado independente da condio, ou seja, caso a condio seja verdadeira o comando da condio ser executado, caso contrrio o comando da condio falsa ser executado. Em algoritmo o exemplo da seo anterior ficaria assim: se media >= 5.0 entao escreva(Aluno Aprovado) senao escreva(Aluno Reprovado) fimse Em diagrama seria conforme Figura 6-2 .

Figura 6-2: Diagrama de Blocos se entao senao

IFES Instituto Federal do Esprito Santo

45

Curso Tcnico em Informtica No exemplo acima est sendo executada uma condio que, se for verdadeira, executa o comando APROVADO, caso contrrio executa o segundo comando REPROVADO. Podemos tambm dentro de uma mesma condio testar outras condies. Conforme Figura 6-3.

Figura 6-3: Diagrama de Blocos se entao senao se

Neste caso poderamos utilizar o seguinte trecho de algoritmo para representar o diagrama de blocos acima: se media >= 5.0 entao se media >= 7.0 escreva(Aluno Aprovado) senao escreva(Aluno Necessita Fazer Outra Avaliao) fimse senao escreva(Aluno Reprovado) fimse

6.1.3. escolha ... caso


A estrutura de deciso escolha ... caso utilizada para testar, na condio, uma nica expresso, que produz um resultado, ou, ento, o valor de uma varivel, em que est armazenado um determinado 46
Instituto Federal do Esprito Santo

Lgica de Programao

contedo. Compara-se, ento, o resultado obtido no teste com os valores fornecidos em cada clusula Caso. No exemplo do diagrama de blocos da Figura 6-4, recebido uma varivel Op e testado seu contedo, caso uma das condies seja satisfeita, atribudo para a varivel Titulo a String Opo X, caso contrrio atribudo a string Opo Errada.

Figura 6-4: Diagrama de Blocos escolha caso

Neste caso poderamos utilizar o seguinte trecho de algoritmo para representar o diagrama de blocos anteriormente mostrado:
IFES Instituto Federal do Esprito Santo

47

Curso Tcnico em Informtica

algoritmo titulo ; leia op escolha op caso 1 titulo opo 1 caso 2 titulo opo 2 caso 3 titulo opo 3 caso 4 titulo opo 4 caso 5 titulo opo 5 outro caso titulo opo errada fimescolha escreva titulo fimalgoritmo

Atividades
1. Crie um algoritmo que receba pelo teclado o nome de um Funcionrio e seu salrio bruto. Se o salrio for acima de R$ 1.000,00 calcule 11% de desconto de INSS, do contrrio calcule 9%. Ao final exiba o nome do funcionrio, salrio bruto e salrio com o desconto de INSS. 2. Crie um algoritmo que receba pelo teclado o nome de um aluno e trs notas, ao final dever ser exibido o nome do aluno, sua mdia e resultado (se for acima de 6, o aluno estar aprovado do contrrio reprovado). 3. Usando o algoritmo do item 2, altere o resultado para: Mdia <=3, reprovado, Mdia < 6, recuperao e Mdia >=6, aprovado. 4. Crie um algoritmo que dada tabela a seguir calcula o valor de desconto a ser concedido para um determinado cliente de acordo com o valor da compra. O algoritmo dever receber pelo teclado, o nome do cliente e valor total da compra.
Valor a compra At R$ 1.000,00 Entre R$ 1.000,00 a R$ 5.000,00 Acima de R$ 5.000,00 % de desconto 5 10 15

48
Instituto Federal do Esprito Santo

Lgica de Programao

5. Crie um algoritmo que calcule o valor a ser pago de acordo com a quantidade de m de um tecido no valor de R$ 25,00. Se a quantidade de metros for acima de 10 m, o valor do m passa a ser R$ 23,00. Ao final o algoritmo dever exibir a quantidade de m, o valor pago pelo m e o valor a ser pago. 6. Usando a linguagem Visualg, desenvolva um programa que leia dois nmeros inteiros e a operao que o usurio deseja realizar. O usurio poder escolher entre as operaes: somar, subtrair, multiplicar ou dividir. Ao final o programa dever exibir o resultado da operao. Utilize o comando escolhacaso. Explicando: Exibiremos, para o usurio, as operaes disponveis e solicitaremos os dois nmeros e opo, assim: Digite 1 para somar. Digite 2 para subtrair. Digite 3 para multiplicar. Digite 4 para dividir. Primeiro nmero: (leia o nmero 1) Segundo nmero: (leia o nmero 2 Digite a opo: (leia a opo) Assumindo que o usurio digitou os nmeros 20 e 40 e a opo 1, o resultado exibido ser 60. Obs.: Se o usurio digitar um valor invlido para opo deve ser exibido uma mensagem: "Opo Invlida!"

6.2.

COMANDOS DE REPETIO

A estrutura de repetio permite que uma sequncia de comandos seja executada repetidamente at que uma determinada condio de interrupo seja satisfeita. Trabalharemos com modelos de comandos de repetio: enquanto x faca repita ... ate x para ... de ... ate ... faca

IFES Instituto Federal do Esprito Santo

49

Curso Tcnico em Informtica

6.2.1. enquanto x faca


Neste caso, o bloco de operaes ser executado enquanto a condio x for verdadeira. O teste da condio ser sempre realizado antes de qualquer operao. Enquanto a condio for verdadeira o processo se repete. Podemos utilizar essa estrutura para trabalharmos com contadores. Em diagrama de bloco a estrutura a seguinte (Figura 65):

Se ...

Sim

Processar

No

Cont.

Figura 6-5: Diagrama de Blocos enquanto x faca

A Figura 6-6 mostra um exemplo em Diagrama de Blocos e em seguida temos o algoritmo.

j=0

j <= 100

Sim

j=j+1

No

Cont.

Figura 6-6: Diagrama de Blocos Exemplo: enquanto x faca

50
Instituto Federal do Esprito Santo

Lgica de Programao

algoritmo Exemplo enquanto x faca var j: inteiro inicio j <- 0 enquanto j <= 100 faca j <- j + 1 fimenquanto fimalgoritmo

6.2.2. repita ... ate x


Neste caso, executa-se primeiro o bloco de operaes e somente depois realizado o teste de condio. Se a condio for verdadeira, o fluxo do programa continua normalmente. Caso contrrio processado novamente os comandos antes do teste da condio. Em diagrama de Bloco (Figura 6-7).

Figura 6-7: Diagrama de Blocos repita ... ate x

A Figura 6-8 mostra um exemplo em Diagrama de Blocos e em seguida temos o algoritmo.

IFES Instituto Federal do Esprito Santo

51

Curso Tcnico em Informtica

Figura 6-8: Diagrama de Blocos Exemplo: repita ... ate x

algoritmo "Exemplo repita ... ate x" var j: inteiro inicio j <- 0 repita j <- j + 1 ate j > 100 fimalgoritmo

6.2.3. para ... de ... ate ... faca


O comando para ... de ... ate ... faca possui a caracterstica de ser executado uma quantidade fixa de vezes de acordo com um incremento fixo, no caso do comando na forma padro esse incremento 1 (um). O comando para ... de ... ate ... faca pode ser substitudo por outros comandos de repetio com certa facilidade. Vejamos o exemplo: Sem o uso de para ... de ... ate ... faca algoritmo "Exemplo repita ... ate x" . . j <- 0 repita j <- j + 1 ate j > 100 52
Instituto Federal do Esprito Santo

Lgica de Programao

. . Com o uso de para ... de ... ate ... faca algoritmo "Ex. para...de...ate...faca" var j: inteiro inicio para j de 0 ate 100 faca fimpara fimalgoritmo Caso voc queira utilizar o comando para ... de ... ate ... faca com um incremento diferente de 1 (um), por exemplo dois (dois), voc deve fazer da seguinte forma: para j de 1 ate 100 passo 2 faca fimpara Onde: passo o comando que deve ser utilizado para indicar que a varivel j deve ser atualizada de com um incremento diferente de 1 (um). 2 (dois) o nmero colocado depois do comando passo na finalidade de especificar que o incremento para a varivel j deve ser de dois em dois. Vamos resumir o contedo visto neste captulo: Neste captulo aprendemos sobre dois tipos importantssimos de comandos que nos ajudaro e muito a programar: Comandos de Deciso: se entao se entao senao escolha caso Comandos de Repetio: enquanto x faca repita ... ate x para ... de ... ate ... faca

IFES Instituto Federal do Esprito Santo

53

Curso Tcnico em Informtica

Atividades
7. Elabore um algoritmo que gera e escreve os nmeros mpares dos nmeros lidos entre 100 e 200. 8. Construa um algoritmo que leia 500 valores inteiros e positivos e: Encontre o maior valor Encontre o menor valor Calcule a mdia dos nmeros lidos

54
Instituto Federal do Esprito Santo

Lgica de Programao

Captulo 7 - ESTRUTURA DE DADOS HOMOGNEAS - VETOR

Ol Aluno, Vamos aprender sobre Vetores. Em muitos casos Vetores so alternativas interessantes para se resolver alguns problemas. Alm de Vetores existem muitas outras estruturas de armazenamentos de dados, como por exemplo, matrizes, listas, filas, etc. Todavia como o foco de nossa disciplina tem cunho introdutrio, vamos trabalhar apenas com Vetores. de suma importncia entendermos bem a programao com Vetores, pois isso facilitar muito nosso aprendizado quanto as outras possibilidades de armazenamento de dados. Bom estudo!

7.1.

ESTRUTURAS DE DADOS

J sabemos que variveis correspondem a posies de memria, s quais o programador tem acesso, atravs de algum algoritmo, visando atingir resultados desejados. Uma varivel passa a existir a partir de sua declarao, quando, ento, lhe associado um nome ou identificador que a identificao da posio de memria que a varivel representa. Analisaremos no exemplo, a seguir, a necessidade de se utilizar estruturas de dados: Exemplo: Vamos supor que seja requisitado um algoritmo para calcular a mdia das notas de 5 alunos. Nesse contexto o algoritmo ficaria assim:

IFES Instituto Federal do Esprito Santo

55

Curso Tcnico em Informtica algoritmo "Calculando Mdia de 5 Notas" var //Declarando as variveis I: inteiro NOTA, SOMA, MEDIA: real inicio //Inicializando SOMA SOMA <- 0 //Aplicando o comando de repetio para I de 1 ate 5 faca escreva("Digite a nota:") leia(NOTA) //Acumulando a NOTA lida SOMA <- SOMA + NOTA fimpara //Calculando a mdia MEDIA <- SOMA / 5 //Escrevendo a mdia calculada escreva ("A mdia :", MEDIA) fimalgoritmo Suponhamos agora que desejado saber quantos alunos tiveram nota acima da mdia. fcil ver que, para saber o nmero de alunos com nota acima da mdia necessrio saber a mdia e as notas de cada um dos alunos. Da existem duas abordagens possveis: Abordagem 1: Fazer dois algoritmos: um que l as notas e calcula a mdia e outro que leria a mdia e novamente todas as notas para que as comparaes pudessem ser feitas. Abordagem 2: Fazer um nico algoritmo e armazenar cada uma das notas numa varivel, calcular a mdia dessas notas e finalmente calcular a quantidade de alunos com nota superior a mdia.

56
Instituto Federal do Esprito Santo

Lgica de Programao

Abordagem 1 (Abordagem de dois algoritmos): O primeiro algoritmo j estaria implementado, o algoritmo do calculo da mdia, o segundo algoritmo ficaria da seguinte forma: algoritmo "Abordagem 1" var I, QUANTIDADE: inteiro MEDIA, NOTA: real inicio //Leitura da mdia das notas escreva("Digite a mdia:") leia(MEDIA) //Repetio para cada aluno para I de 1 ate 5 faca escreva("Digite a nota:") leia(NOTA) //Se aluno tem nota superior a mdia se (NOTA > MEDIA) entao //Incremente a Quantidade QUANTIDADE <- QUANTIDADE + 1 fimse fimpara escreva ("Quantidade: ", QUANTIDADE) fimalgoritmo Abordagem 2 (Abordagem de um algoritmo): Este algoritmo realiza o armazenamento das notas em variveis: algoritmo "Abordagem 2" var //Declarando as variveis MEDIA: real NOTA1, NOTA2, NOTA3, NOTA4, NOTA5: real QUANTIDADE: inteiro inicio //Inicializando a Quantidade QUANTIDADE <- 0 //Lendo as notas escreva("Digite a nota 1:") leia(NOTA1) escreva("Digite a nota 2:") leia(NOTA2) escreva("Digite a nota 3:") leia(NOTA3) escreva("Digite a nota 4:") leia(NOTA4) escreva("Digite a nota 5:")
IFES Instituto Federal do Esprito Santo

57

Curso Tcnico em Informtica leia(NOTA5) //Calculando a mdia MEDIA <- (NOTA1+NOTA2+NOTA3+NOTA4+NOTA5)/5 //Escrevendo a mdia calculada escreva("Mdia: ", MEDIA) se NOTA1 > MEDIA entao QUANTIDADE <- QUANTIDADE + 1 fimse se NOTA2 > MEDIA entao QUANTIDADE <- QUANTIDADE + 1 fimse se NOTA3 > MEDIA entao QUANTIDADE <- QUANTIDADE + 1 fimse se NOTA4 > MEDIA entao QUANTIDADE <- QUANTIDADE + 1 fimse se NOTA5 > MEDIA entao QUANTIDADE <- QUANTIDADE + 1 fimse escreva("Quantidade: ", QUANTIDADE) fimalgoritmo

Note que nenhuma das solues completamente adequada, pois: Abordagem 1: implica na releitura das notas dos alunos. Supondo que essas notas fossem informadas via teclado, isso seria bastante desagradvel para quem utiliza esse algoritmo. Abordagem 2: no trs problemas para o usurio, mas implica em termos uma quantidade possivelmente grande de variveis que representam o mesmo tipo de informao, imaginemos que no fossem 5 alunos e sim 5000, a elaborao desse algoritmo seria impraticvel. nesse contexto que as estruturas de dados so apresentadas, especificamente variveis compostas homogneas (vetor).

58
Instituto Federal do Esprito Santo

Lgica de Programao

7.2.

VARIVEIS COMPOSTAS HOMOGNEAS

Variveis compostas homogneas correspondem a posies de memria, identificadas por um mesmo identificador, individualizadas por ndices e cujo contedo do mesmo tipo. No exemplo do calculo da quantidade de alunos com nota acima da mdia, podemos representar o conjunto das 5 notas dos alunos por uma varivel do tipo composta homognea, chamemos essa varivel de NOTA. Tal varivel homognea porque todos os seus elementos so do tipo real e composta porque um conjunto de espaos de memria e no apenas um. A referncia ao n-simo elemento do conjunto ser indicado pela notao NOTA[n], onde n um nmero inteiro ou uma varivel numrica contendo um valor inteiro. Exemplo 1: Suponhamos que a varivel NOTA contivesse os seguintes valores:

NOTA[3] estaria referenciando o terceiro elemento do conjunto cujo contedo 30. Exemplo 2: Voltemos ao exemplo do clculo da quantidade de alunos com nota acima da mdia, mas suponhamos que sejam 250 alunos. O algoritmo ento ficaria da seguinte forma ( No sero apresentadas as declaraes de variveis ): algoritmo "Utilizando Vetor" var //Declarando as variveis SOMA, MEDIA: real QUANTIDADE, I: inteiro NOTA: vetor[1..250] de real inicio //Inicializando SOMA e QUANTIDADE SOMA <- 0 QUANTIDADE <- 0 // Aplicando o comando de repetio para I de 1 ate 250 faca escreva("Digite a nota:") leia ( NOTA[I] ) //Acumulando a NOTA lida SOMA <- SOMA + NOTA[I]
IFES Instituto Federal do Esprito Santo

59

Curso Tcnico em Informtica fimpara //Calculando a mdia MEDIA <- SOMA / 250 para I de 1 ate 250 faca se NOTA[I] > MEDIA entao //Acumulando a Quantidade QUANTIDADE <- QUANTIDADE + 1 fimse fimpara escreva ("Quantidade: ", QUANTIDADE) fimalgoritmo

7.3. VARIVEIS COMPOSTAS UNIDIMENSIONAIS VETORES


Vetor um conjunto de espaos de memria referenciados por um mesmo nome e que necessitam de apenas um ndice para que seus elementos sejam endereados. Graficamente um vetor pode ser representado da seguinte forma:

Exemplos de Vetores: Estados do Sudeste:

Alguns Municpios do Sul do Esprito Santo:

7.3.1. Declarao de Vetores


lista_de_identificadores: vetor [li .. ls] de t Onde:

60
Instituto Federal do Esprito Santo

Lgica de Programao

lista_de_idenficadores: so variveis que se deseja declarar. vetor: palavra reservada.

nomes

associados

li: o limite inferior do intervalo de variao dos ndices. ls: o limite superior do intervalo de variao dos ndices. t: tipo dos componentes do vetor ( inteiro, real, literal, logico ). As regras de declarao de identificadores das variveis compostas ( vetores por exemplo ) so as mesmas das variveis simples.

Exemplo 1: NOTA: vetor [ 1 .. 10 ] de real Exemplo 2: Ser mostrado novamente o exemplo do clculo da quantidade de alunos com nota acima da mdia, tambm supondo 250 alunos. algoritmo "Utilizando Vetor" var //Declarando as variveis SOMA, MEDIA: real QUANTIDADE, I: inteiro NOTA: vetor[1..250] de real inicio //Inicializando SOMA e QUANTIDADE SOMA <- 0 QUANTIDADE <- 0 // Aplicando o comando de repetio para I de 1 ate 250 faca escreva("Digite a nota:") leia ( NOTA[I] ) //Acumulando a NOTA lida SOMA <- SOMA + NOTA[I] fimpara //Calculando a mdia MEDIA <- SOMA / 250 para I de 1 ate 250 faca se NOTA[I] > MEDIA entao 61

IFES Instituto Federal do Esprito Santo

Curso Tcnico em Informtica //Acumulando a Quantidade QUANTIDADE <- QUANTIDADE + 1 fimse fimpara escreva ("Quantidade: ", QUANTIDADE) fimalgoritmo

Atividades
1. Faa um algoritmo, que leia 200 nmeros e verifique quantos deles so iguais a 30. Se existirem escrever as posies onde eles esto armazenados. 2. Faa um algoritmo, que leia n nmeros ( n < 200) e verifique quantos deles so iguais a um nmero k. Se existirem escrever as posies onde eles esto armazenados. 3. Implemente um algoritmo que leia 200 nmeros, esse algoritmo deve escrever quantos deles so maiores que um nmero ki e menores que um nmero kj, ao mesmo tempo. ( ki e kj tambm lidos ). 4. O Instituto de Cincias Exatas da UFMG deseja saber se existem alunos cursando, simultaneamente, as disciplinas Programao de Computadores e Clculo Numrico. Existem disponveis na unidade de entrada os nmeros de matrcula dos alunos de Programao de Computadores (no mximo 150 alunos) e de Clculo Numrico (no mximo 220 alunos). Cada conjunto dos nmeros de matrcula dos alunos de uma disciplina tem a matrcula fictcia 9999 no final. Formular um algoritmo que imprima o nmero de matrcula dos alunos que esto cursando estas disciplinas simultaneamente. Trata-se, ento, da verificao da ocorrncia de um elemento de um conjunto em um outro conjunto. Assim, aps a leitura dos dados, poderiam estar montadas as seguintes variveis compostas unidimensionais PC e CN contendo, respectivamente, os nmeros de matrcula dos alunos que esto cursando: Programao de Computadores e Clculo Numrico.

62
Instituto Federal do Esprito Santo

Lgica de Programao

Captulo 8 - MODULARIZAO

Prezado Aluno, A medida em que estamos avanando nos conceitos de Lgica de Programao somos preparados para resoluo de problemas cada vez mais complexos. No geral, problemas complexos exigem algoritmos complexos, mas sempre possvel dividir um problema grande em problemas menores. Desta forma, cada parte menor tem um algoritmo mais simples. Neste captulo aprenderemos a tcnica de programao Dividir para Conquistar, isto , partindo da diviso de um problema complexo em vrios subprogramas, ao conquistar o objetivo em cada um dos subprogramas, o programador estar caminhando rumo a Soluo Total do problema original. Atravs deste mtodo, desaparece o problema complicado e aparece vrios subprogramas descomplicados, tornando assim a soluo mais simples, direta e objetiva. Sucesso a todos! E vamos aos estudos!

8.1.

INTRODUO

No fim da dcada de 60, um conjunto de problemas no desenvolvimento de programas levou os pases desenvolvidos a chamada crise do software. Isso ocorreu devido a uma ausncia de metodologia no desenvolvimento dos softwares, para tanto foi criada a programao estruturada afim de organizar e diminuir os custos de desenvolvimento de softwares. Uma das principais armas da programao estruturada no desenvolvimento de softwares a modularizao, pois permite um maior reaproveitamento de funcionalidades, diminuindo assim os tempos e custos de desenvolvimento A modularizao a tcnica de subdividir um algoritmo em mdulos menores que podem ser reaproveitados em outros algoritmos. 63

IFES Instituto Federal do Esprito Santo

Curso Tcnico em Informtica

8.2.

PROCEDIMENTOS E FUNES

Os procedimentos e funes possuem trs objetivos bsicos: a) Reaproveitamento de cdigo: se uma certa seqncia de comandos usada em vrios locais. b) Dividir o algoritmo em partes logicamente coerentes: gerar sub-algoritmos. c) Aumentar a legibilidade do algoritmo

8.2.1. Funes
Uma funo um trecho de cdigo que pode ser utilizado em vrios algoritmos e que retorna um valor. Isso fundamental para manutenabilidade dos algoritmos, uma vez que, dessa forma, se for necessrio fazer uma manuteno em um procedimento, essa manuteno automaticamente ser aplicada a todos os algoritmos que a utilizam. Declarao de Funes Uma funo deve ser declarada da seguinte forma:

funcao <nome da funo> ( <declarao parmetros> ) : < tipo do retorno> var < declarao de variveis locais > inicio < implementao da funcao > fimfuncao

de

Exemplo:

funcao menor_numero(numero1,numero2:real): real inicio se numero1 > numero2 entao retorne numero2 senao retorne numero1 fimse fimfuncao

64
Instituto Federal do Esprito Santo

Lgica de Programao

8.2.2. Passagem de Parmetros por Valor e Passagem de Parmetros por Referncia


Passagem por Valor: a declarao de parmetros de forma que os parmetros no tero seus valores alterados aps a execuo do procedimento ou da funo.

Passagem por Referncia: a declarao de parmetros de forma que os parmetros podero ter seus valores alterados aps a execuo do procedimento ou funo. Um parmetro por referncia precedido pela palavra VAR. Passagem por Valor funcao menor_numero(numero1,numero2:real): real inicio se numero1 > numero2 entao retorne numero2 senao retorne numero1 fimse fimfuncao

Passagem por Referncia funcao menor_numero(numero1, numero2: real; var menor:real): inteiro inicio se numero1 > numero2 entao menor <- numero2 retorne 1 senao se numero1 < numero2 entao menor <- numero1 retorne 1 senao //Indica que os nmeros so iguais menor <- 0 retorne -1 fimse fimse fimfuncao 65

IFES Instituto Federal do Esprito Santo

Curso Tcnico em Informtica

8.2.3. Procedimentos
Um procedimento uma funo que no retorna valores. Declarao de Procedimentos Um procedimento deve ser declarado na seguinte forma: procedimento <nome do procedimento>(<declarao de parmetros>) var < declarao de variveis locais > inicio < implementao do procedimento > fimprocedimento

Exemplo: procedimento menor_numero ( numero1, numero2: real ; var menor: real ) inicio se numero1 > numero2 entao menor <- numero2 senao menor <- numero1 fimse fimprocedimento

8.2.4. Uso de Funes e Procedimentos


Para se utilizar uma funo ou procedimento basta fazer da seguinte forma:

algoritmo Uso de Funes e Procedimentos var ... inicio ... <nome da funo> ( <lista de parmetros> ) ... 66
Instituto Federal do Esprito Santo

Lgica de Programao

fimalgoritmo Exemplo: O seguinte algoritmo determina o menor de 3 nmeros algoritmo Exemplo Uso de Funes var n1, n2, n3, menor: real inicio escreva(Digite o primeiro nmero: ) leia( n1 ) escreva(Digite o segundo nmero: ) leia( n2 ) escreva(Digite o terceiro nmero: ) leia( n3 )
menor <- menor_numero(n1, menor_numero(n2, n3))

escreva(O menor nmero :, menor) fimalgoritmo importante ressaltar que, por uma limitao da linguagem Visualg, varaveis do tipo vetor no podem ser passadas por parmetro para funes ou procedimentos. Todavia isso possvel, e muito comum, em outras linguagens de programao, como por exemplo: C, Java, etc.

Atividades
1. Escreva uma funo que calcule a distncia entre dois pontos, sabendo que a distncia entre dois pontos dada pela expresso: DISTANCIA = ( ( X2 X1 ) ^ 2 + ( Y2 Y1 ) ^ 2 ) ^ ( 1 / 2 ) Onde: O primeiro ponto dado por ( X1, Y1 ) e o segundo ponto dado por ( X2, Y2 ) 2. Sabendo-se que um tringulo formado por trs pontos: A = ( X1, Y1 ) B = ( X2, Y2 ) C = ( X3, Y3 )
IFES Instituto Federal do Esprito Santo

67

Curso Tcnico em Informtica

E que o permetro de um tringulo a soma das distncias dos lados do tringulo. Podendo ser escrito da seguinte forma: Permetro = DISTANCIA AB + DISTANCIA AC + DISTANCIA BC Faa um algoritmo que calcule o permetro de um tringulo. 3. Faa uma funo que dados dois valores (X, Y) retorne X ^ Y, entretanto no permitido usar o operador de potncia. ( ^ ). Sugesto: Use o operador de multiplicao. 4. Faa uma funo que dados dois valores ( X, Y ) retorne X * Y, entretanto no permitido usar o operador de multiplicao. ( * ). Sugesto: Use o operador de soma. 5. Refaa a funo do exerccio 3) utilizando a funo de multiplicao do exerccio 4). 6. Faa uma funo para o operador de raiz ( X ^ ( 1 / Y ) ) 7. Implemente um algoritmo de calculadora que faa as operaes de: Adio Subtrao Multiplicao ( usando a funo do exerccio 4 ) Diviso Potenciao ( usando a funo do exerccio 5 ) Radiciao ( usando a funo do exerccio 6 )

68
Instituto Federal do Esprito Santo

Você também pode gostar