apostilalógica - parcial

65
CURSO TÉCNICO EM INFORMÁTICA PROFESSOR JEAN CARLOS COELHO DE ALENCAR Apostila Lógica de Programação Parte 01 OURICURI - PE

Upload: jean-c-c-alencar

Post on 05-Jul-2015

2.600 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 1/65

 

CURSO TÉCNICO EM INFORMÁTICA

PROFESSOR JEAN CARLOS COELHO DE ALENCAR

Apostila

Lógica de Programação

Parte 01

OURICURI - PE

Page 2: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 2/65

 

SUMÁRIO

1.0 INTRODUÇÃO A LÓGICA.......................................................................................3

1.1 Lógica Aplicada à Tecnologia da Informação (Informática)................................42.0 INTRODUÇÃO AO ALGORITMO............................................................................6

2.1 Classificação de Algorítimo.................................................................................6

2.2 Exemplos de Algorítimo......................................................................................9

2.4 Tipos de Dados.................................................................................................12

2.5 Operadores.......................................................................................................12

2.5.1 Operadores Relacionais............................................................................12

2.5.2 Operadores Lógicos..................................................................................13

2.5.2.1 Operador Lógico não..........................................................................13

2.5.2.2 Operador Lógico ou............................................................................14

2.5.2.3 Operador Lógico e..............................................................................14

2.5.2.4 Operador Lógico xou..........................................................................15

2.5.3 Operadores Aritméticos.............................................................................15

2.5.5 Operadores de String................................................................................16

2.5.6 Operadores de Atribuição..........................................................................16

3.0 FORMAS DE REPRESENTAÇÃO DE ALGORÍTMOS.........................................17

3.1 Diagrama de Chaplin........................................................................................17

3.1 Fluxograma.......................................................................................................17

3.2 Português Estruturado (Portugol ou Pseudocódigo)........................................20

4.0 QUALIDADE DO ALGORITIMO:...........................................................................22

5.0 ESTRUTURAS DE ALGORITMO:........................................................................24

5.1 Declaração de Variáveis / Constantes..............................................................24

5.2 Comandos de Saída de Dados.........................................................................25

5.3 Comandos de Entrada (Leitura) de Dados.......................................................26

5.4 Estrutura Sequencial (Incondicional)................................................................26

5.5 Estrutura Condicional........................................................................................33

5.6 Estrutura Seleção Múltipla................................................................................47

5.7 Estrutura de Repetição - Laços........................................................................53

5.7.1 Estrutura de Repetição Pré-testada – "enquanto...faca"...........................54

5.7.2 Estrutura de Repetição Prós-testada – "repita...ate".................................59

Page 3: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 3/65

 

3 de 65

1.0 INTRODUÇÃO A LÓGICA

Neste material serão apresentados os conceitos de lógica e algorítimo, que

são a base para a programação de computadores. Esta pode ser considerada a“arte” de solucionar problemas em computação. Tecnicamente falando, programar é

desenvolver algorítimos, ou seja, definir um conjunto lógico de instruções, que

deverão ser fornecidas ao computador para ele executar alguma tarefa.

É até possível se construir um pequeno programa em alguns dias, e sem

necessariamente saber os conceitos de lógica e algorítimo, mas se você pretende

ser um programador profissional e ter destreza com as centenas de comandos

envolvidos numa programação, além de dominar sua sintaxe set ter de ficar refolheando múltiplas páginas a cada nova ideia que deseja implementar, é preciso,

além de paciência, algumas centenas de horas de estudo e um certo “dom” para

coisa.

Usamos a lógica no nosso dia a dia, e muitas vezes nem nos damos conta.

No ato de escovar os dentes, cozinhar, dirigir dentre outros, estamos sempre

executando tarefas nas quais seguimos alguma sequência “lógica” (raciocínio lógico)

de forma totalmente automática.

Aristóteles, um filósofo grego que é considerado o criador da Lógica, embora

ele não a chamasse assim, mas “Razão”. Definiu que a “Razão” é: um Instrumento,

uma introdução para as ciências e para o conhecimento. O termo lógica foi adotado

posteriormente, sedo originado do grego Logos que significa linguagem racional. De

acordo com o dicionário Michaelis, lógica é a análise das formas e leis do

pensamento, mas não se preocupa com o conteúdo do pensamento e sim com a

forma.

Pode ser definida também como a maneira pela qual um pensamento ou um

ideia é organizada e apresentada, possibilitando que cheguemos a uma

CONCLUSÃO. Um argumento pode ser composto por uma ou mais premissa, as

quais podem ser verdadeiras ou falsas e que conduzem a uma conclusão, que

também podem ser verdadeira ou falsa. Nos argumento apresentado abaixo, 1 e 2

representam as premissas e 3 a conclusão:

1. Ouricuri é uma cidade do estado de Pernambuco.

2. João nasceu em Ouricuri.

3. Portanto, João é Pernambucano.

Page 4: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 4/65

 

4 de 65

Argumento é um conjunto de uma ou mais sentenças declarativas, também

conhecidas como proposições, ou ainda, premissas, acompanhadas de uma outra

frase declarativa conhecida como conclusão. Argumentos são classificados em

dedutivos e indutivos. Os dedutivos afirmam que a verdade de uma conclusão é uma

consequência lógica das premissas que a antecedem. Por exemplo:

1. Mamíferos, são animais que mamam;

2. A cabra mama;

3. Portanto, a cabra é um mamífero.

Já os indutivos afirmam que a verdade da conclusão é apenas apoiada pelas

premissas, neste caso se torna preciso conhecer os fatos para se poder fazer a

comparação.

1. No ano passado não choveu em janeiro e o ano foi de seca;

2. Neste ano choveu em janeiro;

3. Logo, neste ano não haverá seca.

Toda e qualquer premissa, assim como toda conclusão, pode assumir apenas

o valor verdadeiro ou falso e jamais poderá assumir ou possuir valores ambíguos.

Sendo assim, as frases que apresentam um argumento são referidas como sendo

verdadeiras ou falsas.Devemos programar nossas Mentes! Programar não é um tarefa difícil!

• Computador é uma réplica da Mente;

• Com uma – autoprogramação;

• Aprendizado (Cores, símbolos, sons...);

• Processo de aprendizado – autoprogramação;

O que será mais complexo nosso “cérebro” ou um simples “computador ”?

Lembrem-se a “inteligencia” do computador, somos “nós” que “fazemos”

(programamos).

Este será o nosso desafio!!

1.1 Lógica Aplicada à Tecnologia da Informação (Informática)

O estudo da lógica, pode ser aplicado as mais diversas áreas do

conhecimento. O proposito aqui, é apresentar a análise e desenvolvimento da lógica

na construção de Softwares (Programas de Computador), onde a partir da

Page 5: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 5/65

 

5 de 65

observação da lógica o programador (desenvolvedor) constrói seus algorítimos, que

posteriormente virarão um software. Sendo estes, programas de computador,

capazes de apresentar as mais diversas soluções, nas mais variadas áreas do

conhecimento humano (contabilidade, administração, engenharia, educação...).

Usaremos para a solução dos algorítimos, a Lógica Formal, também chamada

de Lógica Simbólica que se preocupa basicamente com a estrutura do raciocínio. E

lida com a relação entre conceitos e fornece um meio de compor provas de

declarações. Os conceitos são rigorosamente definidos, e as sentenças são

transformadas em notações simbólicas precisas, compactas e não ambíguas, esta

também nos permite trabalhar com variáveis, permitindo assim, a utilização do

mesmo raciocínio para a solução de vários problemas. Exemplos:

1. Mamíferos, são animais que mamam;

2. A cabra mama;

3. Portanto, a cabra é um mamífero.

Baseados na lógica formal podemos substituir as palavras Mamíferos e

cabra, por X e Y.

1. X, são animais que mamam;

2. A Y mama;

3. Portanto, Y é um X.

Posteriormente falaremos sobre variáveis, e seu uso.

Na logica aplicada a T.I., o resultado das sentenças será sempre, V ou F

(Verdadeiro ou Falso), ela é a técnica de desenvolver algoritmos (sequências

lógicas) para atingir determinados objetivos dentro de certas regras baseadas na

Lógica Matemática, estes algorítimos serão adaptados para uma Linguagem de

Programação utilizada pelo programador para construir seu software.

Page 6: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 6/65

 

6 de 65

2.0 INTRODUÇÃO AO ALGORITMO

Quando desejamos criar ou desenvolver um programa de computador 

(software) para atender uma determinada situação e/ou para solucionar algumproblema, devemos escrever toda a sequencia lógica (algorítimo) para tal solução, e

esta deverá ser posteriormente traduzida para uma linguagem que tando o

homem(programador), quanto a máquina(computador) entendam. Esta linguagem é

denominada de Linguagem de Programação [ASCENCIO & CAMPUS, 2010].

Um algoritmo na realidade, é uma sequência não ambígua de instruções que

é executada até que determinada condição se verifique. Mais especificamente, em

matemática, constitui o conjunto de processos (e símbolos que os representam) paraefetuar um cálculo.

Existem três etapas básicas para se desenvolver um software:

➔ Análise que consiste no estudo do problema a ser corrigido, onde

serão definidos todos os dados, prolemas, soluções...

➔ Algorítimo, onde a partir da análise, serão montadas todas as

sequencia lógica para solução dos problemas levantados. Neste caso,

poderemos utilizar as seguintes formas de representação: Descrição

Narrativa, Fluxograma, Diagrama de Chapin e Pseudocódigos,

também conhecidos como Português Estruturado ou Portugol.

➔ Codificação, fase na qual o algorítimo é traduzido para uma

linguagem de programação, normalmente dominada pelo

programador.

➔ Testes, após a construção do software, são realizados testes para

conferir sua conformidade com os requisitos iniciais. O software deve

satisfazer a todas especificações do cliente.

2.1 Classificação de Algorítimo

Segundo [WIKIBOOKS, 2010] os algorítimos podem ser classificados por:

implementação, paradigma, campo de estudo e complexidade.

Page 7: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 7/65

 

7 de 65

Classificação por implementação: Pode-se classificar algoritmos pela

maneira pelo qual foram implementados.

• Recursivo ou iterativo - um algoritmo recursivo possui a característica

de invocar a si mesmo repetidamente até que certa condição seja

satisfeita e ele é terminado, que é um método comum em programação

funcional. Algoritmos iterativo usam estruturas de repetição tais como

laços, ou ainda estruturas de dados adicionais tais como pilhas, para

resolver problemas. Cada algoritmo recursivo possui um algoritmo

iterativo equivalente e vice versa, mas que pode ter mais ou menos

complexidade em sua construção.

• Lógico - um algoritmo pode ser visto como uma dedução lógica

controlada. O componente lógico expressa os axiomas usados na

computação e o componente de controle determina a maneira como a

dedução é aplicada aos axiomas. Tal conceito é base para a

programação lógica.

• Serial ou paralelo - algoritmos são geralmente assumidos por serem

executados instrução à instrução individualmente, como uma lista de

execução, o que constitui um algoritmo serial. Tal conceito é base para

a programação imperativa. Por outro lado existem algoritmos

executados paralelamente, que levam em conta arquiteturas de

computadores com mais de um processador para executar mais de

uma instrução ao mesmo tempo. Tais algoritmos dividem os problemas

em subproblemas e o delegam a quantos processadores estiverem

disponíveis, agrupando no final o resultado dos subproblemas em um

resultado final ao algoritmo. Tal conceito é base para a programaçãoparalela.

Classificação por paradigma: Pode-se classificar algoritmos pela

metodologia ou paradigma de seu desenvolvimento, tais como:

• Divisão e conquista - algoritmos de divisão e conquista reduzem

repetidamente o problema em subproblemas, geralmente de forma

recursiva, até que o subproblema é pequeno o suficiente para ser 

resolvido. Um exemplo prático é o algoritmo de ordenação merge sort .

Page 8: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 8/65

 

8 de 65

• Programação dinâmica - pode-se utilizar a programação dinâmica para

evitar o recálculo de solução já resolvidas anteriormente.

• Algoritmo ganancioso - um algoritmo ganancioso é similar à

programação dinâmica, mas difere na medida que as soluções dos

subproblemas não precisam ser conhecidas a cada passo, uma

escolha gananciosa pode ser feita a cada momento com o que até

então parece ser mais adequado.

• Programação linear Redução - a redução resolve o problema ao

transformá-lo em outro problema. É chamado também transformação e

conquista.

• Busca e enumeração - vários problemas podem ser modelados através

de grafos. Um algoritmo de exploração de grafo pode ser usado para

caminhar pela estrutura e retornam informações úteis para a resolução

do problema. Esta categoria inclui algoritmos de busca e backtracking .

• Paradigma heurístico e probabilístico - algoritmos probabilísticos

realizam escolhas aleatoriamente. Algoritmos genéticos tentar 

encontrar a solução através de ciclos de mutações evolucionárias entre

gerações de passos, tendendo para a solução exata do problema.

Algoritmos heurísticos encontram uma solução aproximada para o

problema.

Classificação por campo de estudo: Cada campo da ciência possui seus

próprios problemas e respectivos algoritmos adequados para resolvê-los. Exemplos

clássicos são algoritmos de busca, de ordenação, de análise numérica, de teoria de

grafos, de manipulação de cadeias de texto, de geometria computacional, de análise

combinatória, de aprendizagem de máquina, de criptografia, de compressão dedados e de interpretação de texto.

Classificação por complexidade: Alguns algoritmos são executados em

tempo linear, de acordo com a entrada, enquanto outros são executados em tempo

exponencial ou até mesmo nunca terminam de serem executados. Alguns problemas

possuem múltiplos algoritmos enquanto outros não possuem algoritmos para

resolução.

Page 9: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 9/65

 

9 de 65

2.2 Exemplos de Algorítimo

Considere o problema das Torres de Hanoi . Analise e descreva uma maneira

de mover os discos do pino A para o pino C, mantendo a mesma ordem. Em

hipótese nenhuma um disco maior poderá ficar sobre o menor. Veja a figura abaixo:

Obs.: deve-se mover um único anel por vez e um anel de diâmetro maior nunca

pode repousar sobre algum outro de diâmetro menor.

Solução: Algoritmo para resolver o problema das Torres de Hanoi.

Início1. Mover o anel P da haste A para a haste C.

2. Mover o anel M da haste A para a haste B.

3. Mover o anel P da haste C para a haste B.

4. Mover o anel G da haste A para a haste C.

5. Mover o anel P da haste B para a haste A.

6. Mover o anel M da haste B para a haste C.

7. Mover o anel P da haste A para a haste C.Fim

Um homem precisa atravessar um rio com um barco que possui capacidade

de carregar apenas ele mesmo e mais uma das três cargas que são: um lobo, um

bode e um maço de alfafas.

Observe as leis naturais: o lobo é carnívoro e o bode é herbívoro.

O que o homem deve fazer para conseguir atravessar o rio sem perder suas

cargas?Solução: Algoritmo para resolver o problema das Travessia.

Page 10: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 10/65

 

10 de 65

Início

1) O Homem leva o bode da margem 1 para a margem 2.

2) O Homem navega da margem 2 para a margem 1.

3) O Homem leva o lobo da margem 1 para a margem 2.

4) O Homem leva o bode da margem 2 para a margem 1.

5) O Homem leva a alfafa da margem 1 para a margem 2.

6) O homem navega da margem 2 para a margem 1.

7) O Homem leva o bode da margem 1 para a margem 2.

Fim

No nosso dia a dia, muitas vezes tratamos algorítimos sem nem perceber,

observe a seguinte situação: Um cozinheiro precisa fazer um sanduíche de queijo,

só que ele passa pelos seguintes dilemas: o queijo está fatiado ou o queijo está sem

Fatiar.

Solução 1: Algoritmo para resolver o problema de se fazer o sanduíche com o

queijo estando fatiado.

Início

1) Pegar a faca;

2) Pegar o pão;

3) Cortar o pão;

4) Colocar a faca na mesa;

5) Pegar a fatia de queijo;

6) Abrir o pão;

7) Colocar a fatia de queijo no pão.

Fim

Solução 2: Algoritmo para resolver o problema de se fazer o sanduíche com o

queijo não estando fatiado.

Início

1) Pegar a faca;

2) Pegar o pão;

3) Cortar o pão;

4) Colocar o pão na mesa;5) Pegar o queijo;

Page 11: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 11/65

 

11 de 65

6) Cortar uma fatia de queijo;

7) Colocar a faca na mesa;

8) Pegar e abrir o pão;

9) Colocar a fatia de queijo no pão.

Fim

Solução 3: Algoritmo para prevendo os dois problemas anteriores.

Início

1) Pegar a faca;

2) Pegar o pão;

3) Cortar o pão;4) Se o queijo estiver fatiado então

5) Passos de 4 a 6 da solução 1

6) Senão

7) Passos de 4 a 8 da solução 2

8) Colocar a fatia de queijo no pão.

Fim

2.3 Variáveis / Constantes

O uso de variáveis / constantes, nos permite a utilização do mesmo algorítimo

para a solução de vários problemas, inclusive determinando seus tipos de dados.

As variáveis são alocações na memória do computador para armazenar 

dados podem mudar seus valores no decorrer do algorítimo.

Já as constantes são alocações na memória do computador para armazenar dados que no decorrer do algoritmo ou processamento sempre terá o mesmo valor.

Toda variável / constante tem um nome e um valor.

O nome das variáveis deverá ser escrito no padrão CamelCase, as

constantes devem ser nomeadas em caixa alta(maiúsculas), e seguindo as

seguintes regras:

Devem começar por uma letra e depois conter letras, números ou underline

“_” , até um limite de 30 caracteres. As variáveis podem ser simples ou estruturadas.

Page 12: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 12/65

 

12 de 65

Não pode haver duas variáveis com o mesmo nome, com a natural exceção dos

elementos de um mesmo vetor.

2.4 Tipos de Dados

Existem quatro tipos de dados básicos utilizados na construção de

algorítimos: inteiro, real, cadeia de caracteres(strings) e lógico(booleano).

Baseado na utilização do VisuAlg, um editor e interpretador de Pseudocódigos. As

palavras-chave que utilizaremos para definir estes tipos serão as seguintes (observe

que elas não têm acentuação):

➢ inteiro: define variáveis numéricas do tipo inteiro, ou seja, sem casas

decimais.

➢ real: define variáveis numéricas do tipo real, ou seja, com casas

decimais.

➢ caractere: define variáveis do tipo string , ou seja, cadeia de

caracteres.

➢ logico: define variáveis do tipo booleano, ou seja, com valor 

VERDADEIRO ou FALSO.

No caso de constantes, os tipos de dados aceitáveis são: Caracteres,

Lógicos e Numéricos que podem ser inteiros ou reais. Neste último caso, o

separador de decimais é o ponto e não a vírgula.

2.5 Operadores

São os símbolos usados para o trabalho com variáveis e constantes. Há

basicamente cinco grupos de operadores:

 ✗ relacionais;

 ✗ lógicos;

 ✗ aritméticos;

 ✗ de strings;

 ✗ de atribuição.

2.5.1 Operadores Relacionais

Page 13: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 13/65

 

13 de 65

São utilizados em expressões lógicas para se testar a relação entre dois

valores do mesmo tipo, são eles:

= igual;

< menor que;

> maior que;

<= menor ou igual a;

>= maior ou igual a;

<> diferente de

P.S.: Retornam Verdadeiro ou Falso, como resposta. Exemplos:

3 = 4 ---> FALSO3 < 4 ---> VERDADEIRO3 > 4 ---> FALSO3 <= 4 ---> VERDADEIRO3 >= 4 ---> FALSO3 <> 4 ---> VERDADEIRO”A” = ”A” ---> VERDADEIRO”C” = ”D” ---> FALSO“A” = “a” ----> VERDADEIRO (Em algumas linguagens de programação

case sensitive, como Java, é considerado FALSO)

2.5.2 Operadores Lógicos

São utilizados em expressões lógicas para se testar a relação entre dois

valores lógicos(booleanos).

• nao;• ou;• e;• xou;

P.S.: Retornam Verdadeiro ou Falso, como resposta.

2.5.2.1 Operador Lógico não

Operador unário de negação.

nao VERDADEIRO = FALSO,

nao FALSO = VERDADEIRO.

Tem a maior precedência entre os operadores lógicos. Equivale ao NOT do

Pascal ou ! Do Java.

Page 14: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 14/65

 

14 de 65

2.5.2.2 Operador Lógico ou

Operador que resulta VERDADEIRO quando um dos seus operandos lógicos

for verdadeiro. Equivale ao OR do Pascal ou || do Java. Observe a tabela abaixo:

Valor 01 Valor 02 Resultado

Verdadeiro Verdadeiro Verdadeiro

Falso Verdadeiro Verdadeiro

Verdadeiro Falso Verdadeiro

Falso Falso Falso

Exemplos:

A = verdadeiro , B = falso e C = falso

A ou nao B ---> VERDADEIROnao(A ou B) ---> FALSOA ou B ---> VERDADEIRO

C ou B ---> FALSOnao A ou B ---> FALSO

2.5.2.3 Operador Lógico e

Operador que resulta VERDADEIRO quando todos os seus operandos

lógicos forem verdadeiros. Possui precedência sobre “ou” e “xou”.

Equivale ao AND do Pascal ou && do Java. Observe a tabela abaixo:

Valor 01 Valor 02 Resultado

Verdadeiro Verdadeiro Verdadeiro

Falso Verdadeiro FALSO

Verdadeiro Falso FALSO

Falso Falso Falso

Exemplos:

Page 15: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 15/65

 

15 de 65

A = verdadeiro , B = falso e C = falso

A e ( B ou A) ---> VERDADEIRO(A e B ) ou nao (B e C) ---> VERDADEIRO(A e B ) ou (B e C) ---> VERDADEIRO(A e B) e (A ou B) ---> FALSOnao(A ou B) e nao(B e C) ---> FALSO

2.5.2.4 Operador Lógico xou

Operador que resulta VERDADEIRO se seus dois operandos lógicos forem

diferentes, e FALSO se forem iguais.

Equivale ao XOR do Pascal. Observe a tabela abaixo:

Valor 01 Valor 02 Resultado

Verdadeiro Verdadeiro FALSO

Falso Verdadeiro Verdadeiro

Verdadeiro Falso Verdadeiro

Falso Falso FALSO

Exemplos:

A = verdadeiro , B = falso e C = falso

A e ( B xou A) ---> VERDADEIRO(A xou B ) e nao (B e C) ---> VERDADEIRO(A e B ) xou (B ou C) ---> FALSO

(A e B) xou (A e B) ---> FALSOnao(A xou B) xou nao(B e C) ---> VERDADEIRO

2.5.3 Operadores Aritméticos

São os que recebem números e retornam números, após terem efetuado

alguma operação aritmética. São eles:

+,-

Operadores unários, isto é, são aplicados a um único operando. Sãoos operadores aritméticos de maior precedência. Exemplos: -3, +x.

Enquanto o operador unário - inverte o sinal do seu operando, ooperador + não altera o valor em nada o seu valor.

Page 16: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 16/65

 

16 de 65

\Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesmaprecedência do operador de divisão tradicional.

+,-,*,/

Operadores aritméticos tradicionais de adição, subtração, multiplicação

e divisão. Por convenção, * e / têm precedência sobre + e -. Paramodificar a ordem de avaliação das operações, é necessário usar parênteses como em qualquer expressão aritmética.

MODou %

Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8MOD 3 = 2. Tem a mesma precedência do operador de divisãotradicional.

^Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a maior precedência entre os operadores aritméticos binários (aqueles que têmdois operandos).

2.5.5 Operadores de String

+Operador de concatenação de strings (isto é, cadeias de caracteres),quando usado com dois valores (variáveis ou constantes) do tipo"caractere". Por exemplo: "Ouri" + "curi" = "Ouricuri" .

2.5.6 Operadores de Atribuição

Os operadores de atribuição servem basicamente para atribuirmos valores a

variáveis e constantes.

<-Operador de atribuição usado com todos os tipos de dados. Por exemplo: A <- 2, isto quer dizer que o valor de A é 2; B <- A + 3,significa q B é cinco (2+3 = 5)

Page 17: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 17/65

 

17 de 65

3.0 FORMAS DE REPRESENTAÇÃO DE ALGORÍTMOS

Existem diversas formas de representação e confecção de algoritmos. Dentre

elas, podemos destacar o diagrama de chaplin, o fluxograma e o PortuguêsEstruturado (Portugol ou pseudocódigo).

3.1 Diagrama de Chaplin

O diagrama de Chaplin utiliza poucos símbolos com significados predefinidos.

Constitui-se de dois segmentos verticais de retas paralelas, interligadas por outros

segmentos, formando retângulos ou triângulos sobrepostos. Este tipo de diagrama

dispensa modelos específicos de desenho, como gabaritos, e é de fácil confecção.

Veja os símbolos abaixo:

3.1 Fluxograma

Uma das técnicas usadas para definir os passos da solução dos algoritmos é

a fluxogramação, que consiste em escrevê-los utilizando algumas figuras

geométricas interligadas entre si. Estas figuras seguem padrões baseados na Norma

ISO 5807 – 1985.

A utilização de símbolos com significados próprios não requer papel

específico e tem a vantagem de ser muito fácil de entender, pois ao visualizar já se

entende o que aquela instrução deseja executar, sua desvantagem é obrigar o

Utilizado na representação de inicio ou fim do algoritmo, e processamento /

instruções.

Utilizado na representação de uma estrutura de decisão (seleção ou

condicional).

condição

V F

Estrutura de Repetição: REPITA-ATÉ.condição

instruções

instruções

Estrutura de Repetição: ENQUANTO-FAÇA e PARA-ATÉ-FAÇAinstruções

condição

Page 18: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 18/65

 

18 de 65

programador a saber o significado de cada símbolo existente para este fim. Veja os

símbolos abaixo:

Utilizado na representação de inicio ou fim do algoritmo.

Utilizado na representação de um processamento / instrução.

Utilizado na representação de uma entrada de dados manual.

Utilizado na representação de uma exibição no vídeo (monitor)

Utilizado na representação de uma estrutura de decisão

(seleção ou condicional), bem nas Estrutura de Repetição:

REPITA-ATÉ e ENQUANTO - FAÇA.

Este símbolo representa a definição de um grupo de operações

estabelecidas como uma sub-rotina de processamento.

Utilizado na representação de uma estrutura de Repetição:

PARA – ATÉ - FAÇA

Conector - Este símbolo representa a entrada ou saída em

outra parte do fluxograma.

Conector de Páginas – Utilizado para interligar partes do

fluxogramas em distintas.

Seta de orientação de Fluxo

Terminal

Processamento

Entradamanual

Exibição

Decisão

Preparação

Page 19: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 19/65

 

19 de 65

Exemplo:

Algoritmo para exibir o nome da disciplina:

Exemplo 2:

Algoritmo para receber dois números, via teclado e verificar se são iguais:

Início

”Lógica deProgramação”

Fim

Page 20: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 20/65

 

20 de 65

3.2 Português Estruturado (Portugol ou Pseudocódigo)

Consiste em escrever o algorítimo por meio de regras pré-definidas. OPortuguês Estruturado, é uma forma especial de linguagem bem mais restrita que a

Língua Portuguesa e com significados bem definidos para todos os termos utilizados

nas instruções (comandos).

Essa linguagem também é conhecida como Portugol (junção de Português

com Algol), Pseudocódigo ou Pseudolinguagem. O Português Estruturado na

verdade é uma simplificação extrema da língua portuguesa, limitada a pouquíssimas

palavras e estruturas que têm significado pré-definido, pois deve-se seguir umpadrão. Emprega uma linguagem intermediária entre a linguagem natural e uma

linguagem de programação, para descrever os algoritmos.

Faremos aqui uma adaptação do portugol de forma utilizarmos esta

linguagem de construção de algoritmos, no padrão do software VisualG, da Apoio

Informática.

Segue abaixo, o formato básico do nosso pseudocódigo no padrão VisualG:

algoritmo "semnome"

// Função :// Autor :// Data :// Seção de Declaraçõesinicio

// Seção de Comandosfimalgoritmo

Portugol - VisualG

Exemplo:

Algoritmo para exibir o nome da disciplina:

algoritmo "Exibe disciplina"

// Autor : Jean Carlos// Data: 20/02/2011inicio

escreva (“Lógica de Programação”)

fimalgoritmoExemplo:

Page 21: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 21/65

 

21 de 65

Algoritmo para receber dois números, via teclado e verificar se são iguais:

algoritmo "Verifica números iguais"

var 

A, B: inteiroinicioleia (A,B)se(A = B) entao

escreva (“iguais”)senao

escreva (“diferentes”)fimse

fimalgoritmo

Page 22: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 22/65

 

22 de 65

4.0 QUALIDADE DO ALGORITIMO:

Para mantermos uma boa qualidade nos nossos algoritmos, devemos

observar dentre outras, as seguintes regras:➢ Indentação: Segundo [WIKIPROG 2010], em algoritmos / programação,

indentação (recuo, neologismo derivado da palavra em inglês indentation,

também encontram-se as formas indentação e endentação) é um termo

aplicado ao código fonte de um programa para indicar que os elementos

hierarquicamente dispostos têm o mesmo avanço relativamente à posição

(x,0). Na maioria das linguagens a indentação tem um papel meramente

estético / organizacional, tornando a leitura do código fonte muito mais fácil(read-friendly ), porém é obrigatória em outras. A verdadeira valia deste

processo é visível em arquivos de código fonte extensos, não se fazendo

sentir tanto a sua necessidade em arquivos pequenos (relativamente ao

número de linhas).

A figura acima representa um algoritmo utilizando de indentação.

Page 23: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 23/65

 

23 de 65

A figura acima representa um algoritmo que não utiliza indentação.

➢ Nomenclatura de Variáveis / Constantes, como demonstrado no item 2.3.

➢ Comentários: são informações que você inclui no seu algorítimo para

documentar o que está fazendo. Exemplo:

algoritmo "Verifica se números são iguais"var 

A, B: inteiroinicio

escreva ("Digite o primeiro Número: ")leia (A)escreva ("Digite o segundo Número: ")leia (B)//teste se A e B são iguais

se(A = B) entaoescreva (A, " e", B ," são iguais")

senaoescreva (A, " e", B ," são diferentes")

fimsefimalgoritmo

➢ Modularização: é um conceito onde o sistema ou software é divido em partes

distintas. Compõe o ferramental necessário para um programa mais legível

com uma melhor manutenção e melhor desempenho por meio da

programação estruturada, falaremos mais sobre modularização algunscapítulos a frente.

Exemplo de comentário

Page 24: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 24/65

 

24 de 65

5.0 ESTRUTURAS DE ALGORITMO:

Os algoritmos são basicamente formados por uma ou mais das estruturas

abaixo:➔ Estrutura Sequencial (Incondicional);

➔ Estrutura Seletiva (de Seleção ou Condicional);

➔ Estrutura Multi seletiva;

➔ Estrutura de Repetição.

5.1 Declaração de Variáveis / Constantes.Constantes, são valores que não se alteram ao longo do programa. Uma

constante pode aparecer sob forma de um valor explícito (constante literal) ou um

nome simbólico que representa um determinado valor ao longo do programa

(constante simbólica). Em VisuAlg não existe declaração de constantes, mas para

simular o uso de constantes, usamos uma atribuição no início o programa a uma

variável. Devemos tomar o cuidado de não alterar o seu valor durante a execução do

algoritmo.Uma constante simbólica é definida da seguinte forma:

< NOME_CONSTANTE > : < tipo >

E no inicio do corpo se atribui o seu valor como demonstrado abaixo:

...var 

PI : numerico…

inicioPI <- 3.14…

fimalgoritimo

OBS: Utiliza-se como padrão colocar nome da constante simbólica em letra

maiúscula.

Variáveis, uma variável identifica um espaço na memória do computador,

reservado para armazenar valores de um determinado tipo.

Uma variável é definida da seguinte forma:

< nomeDaVariavel > : < tipo >

< listaDeVariaveis > : < tipo >

Page 25: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 25/65

 

25 de 65

...var 

PI : numericoa: inteiro

Valor1, Valor2: real nomeDoAluno: caracteresinalizador: logico…

5.2 Comandos de Saída de Dados

escreva (<lista-de-expressões>)

Escreve no dispositivo de saída padrão (isto é, na área à direita da metade

inferior da tela do VisuAlg) o conteúdo de cada uma das expressões que compõem<lista-de-expressões>. As expressões dentro desta lista devem estar separadas

por vírgulas; depois de serem avaliadas, seus resultados são impressos na ordem

indicada. É equivalente ao comando write do Pascal ou print do Java.

escreval (<lista-de-expressões>).

Idem ao anterior, com a única diferença que força a quebra de uma linha (pula

uma linha em seguida). É equivalente ao writeln do Pascal ou println do Java.

Exemplos:algoritmo "exemplo"var 

salario : realcodigo : inteironome : caractereteste : logico

iniciosalario <- 1500.3456codigo <- 23nome <- "João"teste <- falsoescreval (salario : 1: 2)

escreval (codigo )escreval (nome)escreval (“Seu nome é: ”,nome)escreval (teste)escreva (nome,” é”, teste)

fimalgoritmo

Resultado na máquina:

Page 26: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 26/65

 

26 de 65

5.3 Comandos de Entrada (Leitura) de Dados

 leia (<lista-de-variáveis>)

Recebe valores digitados pelos usuário, atribuindo-os às variáveis cujos

nomes estão em <lista-de-variáveis> (é respeitada a ordem especificada nesta

lista). É análogo ao comando read do Pascal.

Veja no exemplo abaixo o resultado:

algoritmo "exemplo 1"var 

x: inteiroinicio

escreval(“Digite um número:”)leia (x)escreva (“O número digitado foi”,x)

fimalgoritmo

Resultado na máquina:

5.4 Estrutura Sequencial (Incondicional)

A estrutura sequencial é aquela na qual uma ação (instrução) segue a outra

em sequência, sem que haja algum tipo de desvio.

Exemplo 01:

Algoritmo para exibir um nome:

Pseudocódigo:

algoritmo “Exiba um nome”

Inicio

escreva(“Jean Carlos”)

fimalgoritmo

Diagrama de Chaplin:

Inicio

Escreva “Jean Carlos”

Inicio

Page 27: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 27/65

 

27 de 65

Fluxograma:

Resultado na máquina:

Exemplo 02:

Algoritmo para ler e exibir um número:

Pseudocódigo:

algoritmo “Ler e exibir um número”

var 

numero: inteiro

inicio

escreval(“Digite um número”)

leia(numero)

escreva(“O número digitado foi:”, numero)

fimalgoritmo

Diagrama de Chaplin:

Inicio

“Jean Carlos”

Fim

Inicio

Escreva “O número digitado foi:”, numero

Fim

Leia(numero)

Escreva “Digite um número”

Neste momento, a variável numerorecebe o valor digitado pelousuário, ou seja, se o usuáriodigitar 30, o valor de numero será30

Page 28: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 28/65

 

28 de 65

Fluxograma:

Resultado na máquina:

Exemplo 03:

algoritmo, onde se solicite ao usuário o seu nome e sua idade, eposteriormente seja exibido na tela a seguinte mensagem:

<nome digitado> tem <idade digitada> anos de idade.

Informações sobre como gerar o resultado:

O usuário digitou João e depois 20.O resultado será:

Inicio

“Digite um número:”

“O número digitadofoi:”, numero

Fim

numero

Page 29: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 29/65

 

29 de 65

João tem 20 anos de idade

Pseudocódigo:

algoritmo “Ler e exibir nome e idade”

var idade: inteiro

nome: caracter 

inicio

escreva(“Digite seu nome: ”)

leia(nome)

escreva(“Digite sua idade: ”)

leia(idade)

escreva(nome,” tem “, idade,” anos de idade”)

fimalgoritmo

Diagrama de Chaplin:

Neste momento, a variável nome recebe o valor digitado pelousuário, ou seja, se o usuáriodigitar André, o valor de nome será André.Neste momento, a variável idade recebe o valor digitado pelousuário, ou seja, se o usuáriodigitar 14, o valor de idade será14.

Inicio

Escreva nome,” tem “, idade,” anos de idade”

Fim

Leia(nome)

Escreva “Digite seu nome: ”

Leia(idade)

Escreva “Digite sua Idade: ”

Page 30: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 30/65

 

30 de 65

Fluxograma:

Resultado na máquina:

Exemplo 04:

 algoritmo, onde se solicite ao aluno o seu nome e sua nota 01, sua nota 02,

e posteriormente seja exibido na tela a seguinte mensagem:

Inicio

“Digite seu nome: ”

“Digite sua Idade: ”

nome,” tem “, idade,”

anos de idade”

Fim

idade

nome

Page 31: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 31/65

 

31 de 65

<nome digitado>, sua média é: <valor da média>.

Informações sobre como gerar o resultado:

  O usuário digitou João, e depois 6 e 7.

O resultado será:

João , sua média é: 6.5

Pseudocódigo:

algoritmo “Ler o nome, duas notas e exibir exibir a média”

var 

nota1, nota2, media: realnome : caracter 

inicio

escreva(“Digite seu nome: ”)

leia(nome)

escreva(“Digite a primeira nota: ”)

leia(nota1)

escreva(“Digite a segunda nota: ”)

leia(nota2)

media <- (nota1 + nota2)/2escreva(nome,” sua média é: ”, media)

fimalgoritmo

Diagrama de Chaplin:

Inicio

Escreva nome,” sua média é: ”, media

Fim

Leia(nome)

Escreva “Digite seu nome: ”

Leia(nota1)

Escreva “Digite a primeira nota: ”

Escreva “Digite a segunda nota: ”

media <- (nota1 + nota2)/2

Leia(nota2)

Page 32: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 32/65

 

32 de 65

Fluxograma:

Resultado na máquina:

Inicio

“Digite seu nome: ”

“Digite a segunda nota: ”

nome,” sua média é: ”, media

Fim

nota2

nota1

nome

“Digite a primeira nota: ”

media <- (nota1 + nota2)/2

Page 33: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 33/65

 

33 de 65

5.5 Estrutura Condicional

É a estrutura que permite a tomada de decisão, em um algoritmo, mediante a

análise lógica de uma condição – teste lógico / expressão-lógica;Condição → comparação que somente possui dois valores possíveis

(verdadeiro ou falso);

Estrutura:

se <expressão-lógica> entao

<sequência-de-comandos>

fimse

Se o seu resultado da <expressão-lógica> for VERDADEIRO, todos oscomandos da <sequência-de-comandos>  (entre esta linha e a linha com fimse)

são executados. Se o resultado for FALSO, estes comandos são desprezados e a

execução do algoritmo continua a partir da primeira linha depois do fimse.

se <expressão-lógica> entao

<sequência-de-comandos-1>

senao

<sequência-de-comandos-2>

fimse

Nesta outra forma do comando, se o resultado da avaliação de <expressão- 

lógica> for VERDADEIRO, todos os comandos da <sequência-de-comandos-1>

(entre esta linha e a linha com senao) são executados, e a execução continua

depois a partir da primeira linha depois do fimse. Se o resultado for FALSO, estes

comandos são desprezados e o algoritmo continua a ser executado a partir da

primeira linha depois do senao, executando todos os comandos da <sequência-de- 

comandos-2> (até a linha com fimse).

Estes comandos equivalem ao if...then e if...then...else do Pascal, e ao if  e

if...else do JAVA. Note que não há necessidade de delimitadores de bloco (como

begin e end, e { }), pois as sequências de comandos já estão delimitadas pelas

palavras-chave senao e fimse. O VisuAlg permite o aninhamento desses comandos

de desvio condicional.

Page 34: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 34/65

 

34 de 65

Exemplo 01:

Algoritmo para verificar e um número é par:

Pseudocódigo:

algoritmo “Verifica se é Par”

var 

num, resto: inteiro

Inicio

escreva(“Digite um número ”)

leia(num)

resto <- num mod 2 //Poderia ser também num % 2

se resto = 0 entao

escreva(“O número ”, num, “ é par.”)fimse

fimalgoritmo

Fluxograma:

Page 35: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 35/65

 

35 de 65

Diagrama de Chaplin:

Resultado na máquina:

Exemplo 02:

Algoritmo para verificar e um número é par ou impar:

Pseudocódigo:

algoritmo “Verifica se é Par ou Impar”

var 

num, resto: inteiro

Inicio

escreva(“Digite um número ”)

leia(num)

resto <- num mod 2 //Poderia ser também num % 2

se resto = 0 entao

escreva(“O número”, num, “ é par.”)

senao

escreva(“O número”, num, “ é impar.”)

fimse

fimalgoritmo

Page 36: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 36/65

 

36 de 65

Fluxograma:

Diagrama de Chaplin:

Page 37: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 37/65

 

37 de 65

Resultado na máquina:

Exemplo 03:Algoritmo que solicite dois números e informe qual é o maior:

Pseudocódigo:

algoritmo “Verifica qual é o maior”

var 

num1, num2: inteiro

Inicio

escreva(“Digite o primeiro número ”)

leia(num1)escreva(“Digite o segundo número ”)

leia(num2)

se num1 > num2 entao

escreva(“O número”, num1, “ é maior que ”, num2)

senao

se num1 < num2 entao

escreva(“O número”, num2, “ é maior que ”, num1)

senao

escreva(“O número”, num1, “ é igual ao ”, num2)

fimse

fimse

fimalgoritmo

Resultado na máquina:

Page 38: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 38/65

 

38 de 65

Exemplo 04:

Faça um algoritmo, onde se solicite ao aluno o seu nome e sua nota 01,sua nota 02, e posteriormente seja exibido na tela as seguintes mensagens:

Quando o aluno atingir nota superior ou igual a 6,00:

<nome digitado>, sua média é: <valor da média>, você está aprovado.

Caso contrário:

<nome digitado>, sua média é: <valor da média>, você está reprovado.

Pseudocódigo:

algoritmo “Calcula média e verifica aprovação”

var 

nota1, nota2, media: real

nome: caracter 

Inicio

escreva(“Digite seu nome”)

leia(nome)

escreva(“Digite a primeira nota”)

leia(nota1)escreva(“Digite a segunda nota”)

leia(nota2)

media <- (nota1 + nota2) / 2

se media >= 6 entao

  escreva(nome, “ sua média é:”, media, “ você está aprovado.”)

senao

  escreva(nome, “ sua média é:”, media, “ você está reprovado.”)

fimse

fimalgoritmo

Page 39: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 39/65

 

39 de 65

Resultado na máquina:

Exemplo 05:

Fazer um algoritmo que receba dois números e um operador (+, -, / e *),

e de acordo com o operador digitado, efetue a operação correta e exiba o

resultado. Caso a operação escolhida seja divisão, verificar se o segundo

número é igual a 0, e sendo, informar que a divisão não é possível.

Pseudocódigo:

algoritmo "Calculadora"

// Seção de Declarações

var 

n1, n2: inteiro

sinal:caracter 

inicio

escreval("Digite um número")

leia(n1)

escreval("Digite a operação (+, -, * ou / )")

leia(sinal)

escreval("Digite um número")

leia(n2)

se(sinal = "+") entao

escreva("O resultado é: ", n1 + n2)

senao

se(sinal = "-") entao

escreva("O resultado é: ", n1 - n2)

senao

se(sinal = "*") entao

Page 40: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 40/65

 

40 de 65

escreva("O resultado é: ", n1 * n2)

senao

se(sinal = "/") entao

se (n2 = 0) entaoescreva("Divisão por zero não é permitido")

senao

escreva("O resultado é: ", n1 / n2)

fimse

senao

escreva(sinal, ", não é um operador válido")

fimse

fimse

fimsefimse

fimalgoritmo

Resultado na máquina:

Page 41: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 41/65

 

41 de 65

Exemplo 06:

Fazer um algoritmo que receba o tipo de figura: q, r, t (quadrado,

retângulo e triângulo respectivamente). Para q solicitar um lado, r e t dois

lados. Calcular e exibir sua área e valores digitados. Caso se digite tipos

diferentes informar.

Área do quadrado = L² ;

Área do quadrado = L1 * L2

Área do triângulo = (L1 * L2) / 2

Pseudocódigo:

algoritmo "Calcula área de polígonos"// Seção de Declaraçõesvar 

L1, L2 : inteiropoligono : caracter area : real

inicioescreval("Digite um Poligono:")escreval("Q - Quadrado")escreval("R - Retângulo")escreval("T - Triângulo")leia(poligono)

se(poligono = "Q") entaoescreval("Digite o lado do Quadrado")leia(L1)se(L1 > 0) entao

area <- L1 ^ 2escreva("A área do Quadrado é:", area)

senaoescreva("O valor do Lado não pode ser menor ou igual a 0")

fimsesenao

se(poligono = "R") entaoescreval("Digite o lado 1 do Retângulo")

leia(L1)escreval("Digite o lado 2 do Retângulo")leia(L2)se(L1 <= 0) e (L1 <= 0)entao

escreva("O valor do Lado não pode ser menor ou igual a 0")senao

area <- L1 * L2escreva("A área do Retângulo é:", area)

fimsesenao

se(poligono = "T") entaoescreval("Digite o lado 1 do Triângulo")leia(L1)escreval("Digite o lado 2 do Triângulo")leia(L2)se(L1 <= 0) e (L1 <= 0)entao

escreva("O valor do Lado não pode ser menor ou igual a 0")

Page 42: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 42/65

 

42 de 65

senaoarea <- L1 * L2/2escreva("A área do Triângulo é:", area)

fimsesenao

escreva(poligono, ", não é um poligono válido!!!!")fimse

fimsefimse

fimalgoritmo

Resultado na máquina:

Exemplo 07:

Fazer um algoritmo que receba o tipo de associação de resistores: S ou

P (Série ou Paralelo), e três valores de resistências. Caso se digite tipos

Page 43: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 43/65

 

43 de 65

diferentes de associação, informar! Se o valor da resistência for zero informar 

que este valor é inválido.

Série => RT = R1 + R2 + R3

Paralelo => 1/RT = 1/R1 + 1/R2 + 1/R3 ou (R1 * R2) / (R1 +R2) de dois em dois.

Pseudocódigo:

Algoritmo "Calcula Resistência"var 

acao: caracter RT, R1, R2, R3 : Real

inicioescreval("Digite a associação:")

escreval("S - Série")escreval("P - Paralelo")leia(acao)

se acao = "S" entaoescreva("Digite o valor de R1 ")leia(R1)escreva("Digite o valor de R2 ")leia(R2)escreva("Digite o valor de R3 ")leia(R3)se (R1 <= 0) ou (R2 <= 0) ou (R3 <= 0) entao

escreva("Impossível calcular")

senaoescreva("O valor da Resistência é: ", R1 + R2 + R3)fimse

senaose acao = "P" entao

escreva("Digite o valor de R1 ")leia(R1)escreva("Digite o valor de R2 ")leia(R2)escreva("Digite o valor de R3 ")leia(R3)se (R1 <= 0) ou (R2 <= 0) ou (R3 <= 0) entao

escreva("Impossível calcular")

senaoRT <- (R1 * R2) / R1 + R2RT <- (RT * R3) / RT + R3escreva("O valor da Resistência é: ", RT)

fimsesenao

escreva(acao, " É um valor inválido")fimse

fimsefimalgoritmo

Page 44: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 44/65

 

44 de 65

Resultado na máquina:

Exemplo 08:

Fazer um algoritmo que calcule os valores de corrente (i), tensão (u) e

resistência (r), de acordo com as fórmulas abaixo:

u = i * r; i = u / r ; r = u / i

Se algum valor digitado for zero informar q é inválido.

Page 45: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 45/65

 

45 de 65

Pseudocódigo:

Algoritmo "Cálculo de P, U, R, I"var 

acao: caracter U,I,R,P : Real

inicioescreval("Indique o que você pretende calcular:")escreval("P - Potência")escreval("U - Tensão")escreval("I - Corrente")escreval("R - Resistência")leia(acao)

 se acao = "P" entao

escreva("Digite o valor de U - Tensão: ")leia(U)escreva("Digite o valor de I - Corrente: ")leia(I)se (U > 0) e (I > 0) entao

P <- U * Iescreva("O valor de P, é: ",P,"W")

senaoescreva("Impossível calcular")

fimsesenao

se acao = "I" entaoescreva("Digite o valor de U - Tensão: ")leia(U)escreva("Digite o valor de R - Resistência: ")leia(R)se (U > 0) e (R > 0) entao

I <- U / Rescreva("O valor de I, é: ",I,"A")

senaoescreva("Impossível calcular")

fimsesenao

se acao = "U" entaoescreva("Digite o valor de R - resistência: ")leia(R)

escreva("Digite o valor de I - Corrente: ")leia(I)U <- R * Iescreva("O valor de U, é: ",U,"V")

senaose acao = "R" entao

escreva("Digite o valor de U - Tensão: ")leia(U)escreva("Digite o valor de I - Corrente: ")leia(I)se (U > 0) e (I > 0) entao

R <- U / Iescreva("O valor de R, é: ",R,"ohm")

senaoescreva("Impossível calcular")fimse

senao

Page 46: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 46/65

 

46 de 65

escreva(acao, ", é um valor inválido!!")fimse

fimsefimse

fimse

fimalgoritmo

Resultado na máquina:

Exemplo 09:

Faça um algoritmo que receba um número e verifique se ele é impar.

Sendo verificar se é múltiplo de 9, e quando for informar ao usuário com a

seguinte mensagem: <Número digitado> é impar e múltiplo de 9. quando for 

apenas impar exibir a mensagem: <Número digitado> é impar e , mas não é

múltiplo de 9. caso contrário, apresentar a seguinte informação: <Númerodigitado> não é impar:

Page 47: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 47/65

 

47 de 65

Pseudocódigo:

algoritmo "Verifica se é impar e múltiplo 9"// Data : 2/5/2011// Seção de Declaraçõesvar 

num, res, eDivi9 : inteiroinicio

escreva("Digite um número: ")leia(num)res <- num mod 2eDivi9 <- num mod 9se (res <> 0) e (eDivi9 = 0) entao

escreva(num, ", é impar e múltiplo de 9")senao

se (res <> 0) e (num mod 9 <> 0) entaoescreva(num, ", é impar, mas não é múltiplo de 9")

senaoescreva(num, ", Nao impar")

fimsefimse

fimalgoritmo

Resultado na máquina:

5.6 Estrutura Seleção Múltipla

É a estrutura que permite a tomada de decisão, comparando um dado valor aconstantes, desviando o fluxo de código para o ponto indicado pela primeira

constante onde há similaridade;

Page 48: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 48/65

 

48 de 65

O VisuAlg implementa (com certas variações) o comando case do Pascal ou

switch case do Java. A sintaxe é a seguinte:

Estrutura:

escolha <expressão-de-seleção>

caso <exp11>, <exp12>, ..., <exp1n>

<sequência-de-comandos-1>

caso <exp21>, <exp22>, ..., <exp2n>

<sequência-de-comandos-2>

...

outrocaso

<sequência-de-comandos-extra>fimescolha

Quando o resultado da avaliação de <expressão-de-seleção> for igual ao

valor de <exp11> ou <exp12> ou <exp1n> (caso <exp11>, <exp12>, ..., <exp1n>),

todos os comandos da <sequência-de-comandos-1> são executados, caso

contrário, serão testados os valores para <exp21> ou <exp22> ou <exp2n> (caso

<exp21>, <exp22>, ..., <exp2n>) e neste caso, todos os comandos da <sequência- 

de-comandos-2> são executados, e assim por diante. Se ocorrer de nenhum dos

valores testados nas linhas com a palavra-chave “caso”, ocorrerá a execução do

que for previso com a palavra-chave “outrocaso”, ou seja, todos os comandos da

<sequência-de-comandos-extra> são executados.

Exemplo 01:

Algoritmo para selecionar um dia da semana:

Pseudocódigo:

Algoritmo "Dias da semana"var dia: inteiroinicio

escreval("Digite um número de 1 a 7")leia(dia)escolha dia

caso 1escreva("Domingo")

caso 2escreva("Segunda-feira")

caso 3escreva("Terça-feira")

caso 4

Page 49: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 49/65

 

49 de 65

escreva("Quarta-feira")caso 5

escreva("Quinta-feira")caso 6

escreva("Sexta-feira")

caso 7escreva("Sábado")

outrocasoescreva(dia, " É um valor inválido")

fimescolhafimalgoritmo

Fluxograma:

Page 50: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 50/65

 

50 de 65

Resultado na máquina:

Exemplo 02:

Algoritmo que solicita ao usuário a quantidade e o código de um

produto e depois seja exibido qual produto, quantidade de produtos informadae o valor total da compra:

Veja a tabela abaixo:

Código Produto Preço

1 Feijão R$2,30

2 Arroz R$4,21

3 Macarrão R$1,104 Picanha R$9,66

5 Leite R$2,15

Pseudocódigo:

Algoritmo "Localiza produtos"var codigo: inteiro

quantidade, valorTotal: realinicioescreval("Digite o código do produto:")leia(codigo)

Page 51: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 51/65

 

51 de 65

escolha codigocaso 1

escreval("Digite a quantidade de produtos")leia(quantidade)

se quantidade <= 0 entaoescreva("A quantidade não pode ser igual ou menor que 0")senao

valorTotal <- quantidade * 2.30escreva("Você comprou", quantidade, "Kg de Feijão e vai pagar, R$",valorTotal)

fimse 

caso 2escreval("Digite a quantidade de produtos")leia(quantidade)se quantidade <= 0 entao

escreva("A quantidade não pode ser igual ou menor que 0")

senaovalorTotal <- quantidade * 4.21escreva("Você comprou", quantidade, "Kg de Arroz e vai pagar, R$",valorTotal)

fimsecaso 3

escreval("Digite a quantidade de produtos")leia(quantidade)se quantidade <= 0 entao

escreva("A quantidade não pode ser igual ou menor que 0")senao

valorTotal <- quantidade * 1.10

escreva("Você comprou", quantidade, "Kg de Macarrão e vai pagar, R$",valorTotal)fimsecaso 4

escreval("Digite a quantidade de produtos")leia(quantidade)se quantidade <= 0 entao

escreva("A quantidade não pode ser igual ou menor que 0")senao

valorTotal <- quantidade * 9.66escreva("Você comprou", quantidade, "Kg de Picanha e vai pagar, R$",valorTotal)

fimsecaso 5

escreval("Digite a quantidade de produtos")leia(quantidade)se quantidade <= 0 entao

escreva("A quantidade não pode ser igual ou menor que 0")senao

valorTotal <- quantidade * 2.15escreva("Você comprou", quantidade, "L de Leite e vai pagar, R$",valorTotal)

fimseoutrocaso

escreva(codigo, " É um valor inválido")fimescolha

fimalgoritmo

Page 52: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 52/65

 

52 de 65

Resultado na máquina:

Exemplo 03:

Algoritmo para exibir quantidade de dias de um determinado mês:

Pseudocódigo:

Algoritmo "Dias / Mês"var 

mes: inteiroinicio

escreval("Digite um Mês de 1 a 12")leia(mes)escolha mes

caso 1, 3, 5, 7, 8, 10, 12escreva("O Mês",mes, ", possui 31 mess")

caso 2escreva("O Mês",mes, ", possui 28 mess")

caso 4, 6, 9, 11escreva("O Mês",mes, ", possui 30 mess")

outrocasoescreva(mes, " É um valor inválido")

fimescolhafimalgoritmo

Resultado na máquina:

Page 53: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 53/65

 

53 de 65

5.7 Estrutura de Repetição - Laços

É a estrutura de desvio do fluxo de controle presente em algoritmos que

realiza e repete diferentes ações dependendo de uma condição ser verdadeira ou

falsa;Estão associados a uma estrutura de repetição uma condição de parada

(teste lógico) e um conjunto (sequência) de instruções: verifica-se a condição, e caso

seja verdadeira (dependendo do tipo de laço, pode ser verificado antes ou após a

execução das instruções), o bloco é executado. Após o final da execução do

conjunto de instruções, a condição é verificada novamente, e caso ela ainda seja

verdadeira, o código é executado novamente.

Um item que merece atenção na criação de algoritmos que utilizem estruturasde repetição é: se o conjunto de instruções nunca alterar o estado da condição, o

algoritmo entrará numa situação conhecida com laço infinito, ou seja, o algoritmo

nunca saíra da execução do laço.

Existem três estruturas de repetição usuais nas linguagens de programação e

algoritmos, sendo estas também implementadas no VisuAlg:

➔ Repetição pré-testada – "enquanto...faca";

➔ Repetição pós-testada - “Repita … até”;

➔ Repetição com variável de controle - “ para...ate...faca”.

Page 54: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 54/65

 

54 de 65

5.7.1 Estrutura de Repetição Pré-testada – "enquanto...faca"

Esta estrutura repete uma sequência de comandos enquanto uma

determinada condição (especificada através de uma expressão lógica) for satisfeita.Estrutura:

enquanto <expressão-lógica> faca

<sequência-de-comandos>

fimenquanto

Neste tipo de laço, a <expressão-lógica> (condição de parada) é

primeiramente verificada, e se for verdadeira a <sequência-de-comandos> é

executada. No final da execução da <sequência-de-comandos>, atingir o comando

fimenquanto, volta-se ao início do laço onde a condição de parada <expressão-

lógica> é novamente testada, dando prosseguimento a repetição do laço até a

<expressão-lógica>, retornar falso.

Exemplo 01:

Algoritmo que solicite ao usuário um número, e seja capaz de exibir 

todos os números inteiros a partir do digitado até 50:

Pseudocódigo:

algoritmo "sequencia de números até 50"// Função :// Autor :// Data : 28/5/2011

// Seção de Declarações

var num:inteiro

inicioescreva("Digite um numero: ")leia(num)enquanto num <= 50 faca

escreva(num)num <- num + 1

fimenquantofimalgoritmo

Page 55: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 55/65

 

55 de 65

Fluxograma:

Diagrama de Chaplin:

Page 56: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 56/65

 

56 de 65

Resultado na máquina:

Exemplo 02:

Elabore um algoritmo que solicite ao usuário um número, e seja capaz

de exibir todos os números inteiros de 1 até ele:

Pseudocódigo:algoritmo "sequencia de números até até o digitado"// Função :// Autor :// Data : 28/5/2011// Seção de Declarações

var num,aux:inteiro

inicioescreva("Digite um numero: ")leia(num)aux<-1enquanto aux <= num faca

escreva(aux)aux<-aux+1

fimenquantofimalgoritmo

Resultado na máquina:

Page 57: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 57/65

 

57 de 65

Exemplo 03:

Elabore um algoritmo que a partir do exemplo 2 exiba também a soma

dos números gerados:

Pseudocódigo:

algoritmo "sequencia de números até até o digitado + Soma"// Função :// Autor :// Data : 28/5/2011// Seção de Declarações

var num,soma,aux:inteiro

inicioescreva("Digite um numero: ")leia(num)aux<-1soma<-0enquanto aux<=num faca

escreval(aux)soma<-soma+auxaux<-aux+1

fimenquantoescreva("A soma e: ",soma)

fimalgoritmo

Resultado na máquina:

Exemplo 04:

Elabore um algoritmo que solicite o nome do usuário ou a letra “s” para

sair, e enquanto não se desejar sair, solicitar também o telefone:

Pseudocódigo:

algoritmo "Solicita nome e telefone - Laço"// Função :// Autor :

// Data : 28/5/2011// Seção de Declarações

var 

Page 58: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 58/65

 

58 de 65

nome, telefone: caracter 

inicioescreva("Digite seu nome ou 's' para sair: ")leia(nome)

enquanto nome <> "s" facaescreva("Digite seu telefone:")leia(telefone)escreval("Usuário: ", nome, " - Telefone: ", telefone)escreva("Digite seu nome ou 's' para sair: ")

leia(nome)fimenquanto

fimalgoritmo

Resultado na máquina:

Exemplo 05:

Elabore um algoritmo que a partir do exemplo 4 exiba também a

quantidade de usuários cadastrados:

Pseudocódigo:

algoritmo "Solicita nome e telefone - Laço e conta usuários"// Função :// Autor :// Data : 28/5/2011// Seção de Declarações

var 

nome, telefone: caracter cont: inteiro

iniciocont <- 0

escreva("Digite seu nome ou 's' para sair: ")leia(nome)enquanto nome <> "s" faca

escreva("Digite seu telefone:")leia(telefone)escreval("Usuário: ", nome, " - Telefone: ", telefone)escreva("Digite seu nome ou 's' para sair: ")

leia(nome)cont <- cont + 1

fimenquantoescreva("Total de usuários cadastrados: ", cont)

fimalgoritmo

Page 59: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 59/65

 

59 de 65

Resultado na máquina:

5.7.2 Estrutura de Repetição Pós-testada – "repita...ate"

É uma variação da estrutura anterior, e difere pela verificação da condiçãoque é feita após uma execução da sequencia de comandos e a expressão lógica

que necessita de seu resultado falso para dá prosseguimento ao laço.

Estrutura:repita

<sequência-de-comandos>

ate <expressão-lógica> 

Neste tipo de laço, a <sequência-de-comandos> é executada primeiramentepara depois a <expressão-lógica> (condição de parada) ser verificada. A palavra

chave repita indica o inicio do laço. Já a palavra chave ate indica o fim da

<sequência-de-comandos>  a serem repetidos (laço). Cada vez que o programa

chega neste ponto (ate), <expressão-lógica> é avaliada, e se for falsa, volta-se ao

início do laço (repita), onde a <sequência-de-comandos> é executada novamente,

e depois a condição de parada <expressão-lógica> é novamente testada, dando

prosseguimento a repetição do laço até seu valor ser verdadeiro.

Page 60: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 60/65

 

60 de 65

Exemplo 01:

Algoritmo que solicite ao usuário um número, e seja capaz de exibir 

todos os números inteiros a partir do digitado até 50:

Pseudocódigo:

algoritmo "sequencia de números até 50"// Função :// Autor :// Data : 28/5/2011// Seção de Declarações

var num:inteiro

inicioescreva("Digite um numero: ")leia(num)repita

escreva(num)num <- num + 1

ate num > 50fimalgoritmo

Fluxograma:

Observe que utilizando a

estrutura enquanto, o teste

era efetuado ao contrário:

num <= 50, e não, num > 50

Se o usuário digitar umnúmero maior que 50 ele seráexibido pelo menos uma vez!Corrigível com a estrutura“se”, não utilizada para

simplificar o algoritmo

Page 61: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 61/65

 

61 de 65

Diagrama de Chaplin:

Resultado na máquina:

Obs: resultado incorreto para o solicitado no algoritmo

Exemplo 02:

Elabore um algoritmo que solicite ao usuário um número, e seja capaz

de exibir todos os números inteiros de 1 até ele:Pseudocódigo:

algoritmo "sequencia de números até até o digitado"// Função :// Autor :// Data : 28/5/2011// Seção de Declarações

var num,aux:inteiro

inicioescreva("Digite um numero: ")leia(num)aux<-1

Page 62: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 62/65

 

62 de 65

enquanto aux <= num facaescreva(aux)aux<-aux+1

fimenquantofimalgoritmo

Resultado na máquina:

Exemplo 03:

Elabore um algoritmo que a partir do exemplo 2 exiba também a somados números gerados:

Pseudocódigo:

algoritmo "sequencia de números até até o digitado + Soma"// Função :// Autor :// Data : 28/5/2011// Seção de Declarações

var num,soma,aux:inteiro

inicioescreva("Digite um numero: ")leia(num)aux<-1soma<-0enquanto aux<=num faca

escreval(aux)soma<-soma+auxaux<-aux+1

fimenquantoescreva("A soma e: ",soma)

fimalgoritmo

Page 63: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 63/65

 

63 de 65

Resultado na máquina:

Exemplo 04:

Elabore um algoritmo que solicite o nome do usuário ou a letra “s” para

sair, e enquanto não se desejar sair, solicitar também o telefone:Pseudocódigo:

algoritmo "Solicita nome e telefone - Laço"// Função :// Autor :// Data : 28/5/2011// Seção de Declarações

var nome, telefone: caracter 

inicio escreva("Digite seu nome ou 's' para sair: ")leia(nome)enquanto nome <> "s" faca

escreva("Digite seu telefone:")leia(telefone)escreval("Usuário: ", nome, " - Telefone: ", telefone)escreva("Digite seu nome ou 's' para sair: ")

leia(nome)fimenquanto

fimalgoritmo

Resultado na máquina:

Exemplo 05:

Page 64: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 64/65

 

64 de 65

Elabore um algoritmo que a partir do exemplo 4 exiba também a

quantidade de usuários cadastrados:

Pseudocódigo:

algoritmo "Solicita nome e telefone - Laço e conta usuários"// Função :// Autor :// Data : 28/5/2011// Seção de Declarações

var nome, telefone: caracter cont: inteiro

iniciocont <- 0

escreva("Digite seu nome ou 's' para sair: ")leia(nome)enquanto nome <> "s" faca

escreva("Digite seu telefone:")leia(telefone)escreval("Usuário: ", nome, " - Telefone: ", telefone)escreva("Digite seu nome ou 's' para sair: ")

leia(nome)cont <- cont + 1

fimenquantoescreva("Total de usuários cadastrados: ", cont)

fimalgoritmo

Resultado na máquina:

Page 65: ApostilaLógica - Parcial

5/6/2018 ApostilaLógica - Parcial - slidepdf.com

http://slidepdf.com/reader/full/apostilalogica-parcial 65/65

 

65 de 65

BIBLIOGRAFIA

FORBELLONE, Andre Luiz Vilar; EBERSPACHER, Henri Frederico. Lógica deprogramação: a construção de algoritmos e estruturas de dados. 3. ed. SãoPaulo: Makron Books; Pearson Education do Brasil, 2006.

ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi.Fundamentos da Programação de Computadores: Algorítimos, Pascal, C++ eJava. 2. ed. São Paulo: Pearson Education do Brasil, 2010.

PUGA, Sandra; RISSETTI Gerson. Lógica de Programação e Estruturas deDados: com Aplicações em Java. 2. ed. São Paulo: Pearson Education do Brasil,2010.

ZIVIANI, Nivio. Projeto de Algoritmos: com Implementações em Java e C ++. 2.

ed. São Paulo: Thomson; Cengage Learning, 2007.FREITAS, Maria Ester; DANTAS, Marcelo. Algoritmos e Lógica de Programação.2. ed. São Paulo: Cengage Learning, 2011.

WIKIBOOKS (2010). Introdução à Programação. Acessado em: 02/ 02/ 2011, em:http://pt.wikibooks.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0_programa%C3%A7%C3%A3o/Defini%C3%A7%C3%B5es_sobre_L%C3%B3gica_de_Programa%C3%A7%C3%A3o#T.C3.A9rmino_do_algoritmo

WIKIPROG(2010). Algoritmo (Indentação). Acessado em: 02/ 02/ 2011,em:http://pt.wikipedia.org/wiki/Indentação