Você está na página 1de 42

Apostila da

Disciplina de
Lógica de Programação

Prof. Me. Fábio Magalhães


Professor do Curso de Sistemas de Informação
Universidade Nove de Julho - Uninove

http://fabiologica.blogspot.com

1º Semestre / 2010
11/02/2010
1 - Introdução à disciplina de Lógica de Programação
Esta pequena apostila é resultado da agregação de diversos materiais pesquisados, e
reúne o conteúdo básico para o desenvolvimento da disciplina de Lógica de
Programação, do curso de Sistemas de Informação da Universidade Nove de Julho -
Uninove - 1º Semestre / 2010.

Programação da disciplina, materiais auxiliares, listas de exercícios, exercícios para o


laboratório, correção das mesmas estarão disponíveis no blog do professor.

2 – Lógica de Programação
2.1 - O que é Lógica?
É a arte de pensar corretamente e, visto que a forma mais complexa do pensamento é o
raciocínio, a Lógica estuda ou tem em vista a correção do raciocínio.

Podemos ainda dizer que a lógica tem em vista a ordem da razão. Isto dá a entender que
a nossa razão pode funcionar desordenadamente, pode pôr as coisas de pernas para o
ar. Por isso a Lógica ensina a colocar Ordem no Pensamento. Exemplos:

a) Todo o mamífero é animal. b) Todo mamífero bebe leite.


Todo cavalo é mamífero. O homem bebe leite.
Portanto, todo cavalo é animal. Portanto, todo homem é mamífero e
animal.

2.2 - Existe Lógica no dia-a-dia?


Sempre que pensamos, o raciocínio e a lógica nos acompanham necessariamente.
Também quando falamos, pois a palavra falada é a representação do pensamento; e,
visto que a palavra escrita é a representação da palavra falada, também pensamos
quando escrevemos, utilizando a Lógica ou a Ilógica. Daí percebemos a importância da
Lógica na nossa vida não só na teoria, como também na prática, já que quando queremos
pensar, falar ou escrever corretamente precisamos colocar em Ordem o Pensamento, isto
é, utilizar a Lógica. Exemplos:

a) A gaveta está fechada.


A bala está na gaveta. b) João é mais velho que José.
Preciso primeiro abrir a gaveta, para Marcelo é mais novo que José.
depois pegar a bala. Portanto, João é mais velho que Marcelo.

2.3 - O que é Algoritmo?


“Algoritmo é uma seqüência de passos que visam atingir um objetivo bem definido.”

Apesar de achar este nome estranho, algoritmos são comuns em nosso cotidiano, como,
por exemplo, uma receita de bolo. Nela está descrita uma série de ingredientes
necessários, uma seqüência de diversos passos - ações - a serem cumpridos para que se
consiga fazer determinado tipo de bolo – que é um objetivo bem definido.
2
Em geral um algoritmo destina-se a resolver um problema: fixa um padrão de
comportamento a ser seguido, uma norma de execução a ser trilhada, com o objetivo de
alcançar a solução de um problema.

2.4 - O que é padrão de comportamento?


Imagine a seguinte seqüência de números: 1, 3, 5, 7, 9, 11....

Para determinar o sétimo elemento da série, precisamos descobrir qual a sua regra de
formatação, isto é, seu padrão de comportamento.

Para tal, observamos que a série obedece a uma constância; visto que existe uma
diferença constante entre cada elemento, a qual pode ser facilmente determinada, somos
capazes de determinar o sétimo e qualquer outro termo.

Podemos, então, descrever uma atividade bem quotidiana, como, por exemplo, trocar
uma lâmpada. Apesar de aparentemente óbvias demais, muitas vezes fazemos esse tipo
de atividade inconscientemente. Sem percebermos seus pequenos detalhes. Vejamos se
ela fosse descrita passo a passo:

- pegue a escada;
- posicione-a embaixo da lâmpada;
- busque uma lâmpada nova;
- suba na escada;
- retire a lâmpada velha;
- coloque a lâmpada nova.

Involuntariamente, já seguimos uma determinada seqüência de ações que, representadas


neste algoritmo, fazem com que ele seja seguido naturalmente por pessoas,
estabelecendo um padrão de comportamento.

2.5 – Programação
Para que um computador possa desempenhar uma tarefa é necessário que esta seja
detalhada passo-a-passo, numa forma compreensível pela máquina, utilizando aquilo que
se chama de programa. Neste sentido, um programa de computador nada mais é que um
algoritmo escrito numa forma compreensível pelo computador (linguagem de
programação).

É assim também com os algoritmos escritos para computador, você deve especificar
todos os passos, para que o computador possa chegar ao objetivo. Por exemplo:

Dados os números naturais(N) Soma dos primeiros 100 números naturais:


0, 1, 2, 3, 4, 5, 6, ... passo1 faça N igual a zero
passo1 faça N igual a zero passo2 some 1 a N
passo2 some 1 a N passo3 se N for menor ou igual a 100
passo3 volte ao passo 2 então volte ao passo 2
senão pare

Nos dois exemplos acima, o primeiro possui repertório bem definido, mas não finito,
enquanto que o segundo tem um critério de parada, ou seja, é finito e descreve um
padrão de comportamento, ou seja, temos um algoritmo.

3
2.6 – Programa
Programas são processos de automação. Uma tarefa deixa de ser desempenhada pelo
homem e passa a ser realizada por máquinas, sejam estes dispositivos mecânicos,
eletrônicos (como os computadores) ou de natureza mista.
Para que a automação de uma tarefa seja bem-sucedida é necessário que a máquina que
passará a realizá-la seja capaz de desempenhar cada uma das etapas constituintes do
processo a ser automatizado com eficiência, de modo a garantir a repetibilidade do
mesmo.

Assim, é necessário que seja especificado com clareza e exatidão o que deve ser
realizado em cada uma das fases do processo a ser automatizado, bem como a
seqüência em que estas fases devem ser realizadas.

2.7 – Etapas de um programa


Ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três
fases fundamentais, como se conceitua “Processamento de Dados”:

Entrada Processamento Saída

Onde temos:

2.7.1 – Entrada
São os dados de entrada do algoritmo.
Hardwares para entradas de dados: teclado, mouse, microfone, scanner

2.7.2 – Processamento
São os procedimentos utilizados para chegar ao resultado final.

2.7.3 – Saída
São os dados já processados.
Hardwares para saída de dados: impressora, monitor, caixa de som

3 - Formas de Representação de Algoritmos


Existem diversas formas de representação de algoritmos, mas não há um consenso com
relação à melhor delas.

Dentre as formas de representação de algoritmos mais conhecidas podemos citar:

- Descrição Narrativa;
- Fluxograma;
- Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol.
4
3.1 - Descrição Narrativa
Nesta forma de representação os algoritmos são expressos diretamente em linguagem
natural.

Como exemplo tem-se os algoritmos seguintes:

Troca de um pneu furado: Tomando um banho:

Afrouxar ligeiramente as porcas Entrar no banheiro e tirar a roupa


Suspender o carro Abrir a torneira do chuveiro
Retirar as porcas e o pneu Entrar na água
Colocar o pneu reserva Ensaboar-se
Apertar as porcas Sair da água
Abaixar o carro Fechar a torneira
Dar o aperto final nas porcas Enxugar-se
Vestir-se

Esta representação é pouco usada na prática porque o uso da linguagem natural muitas
vezes dá oportunidade a más interpretações, ambigüidades e imprecisões.

Por exemplo, a instrução "afrouxar ligeiramente as porcas" no algoritmo da troca de pneus


está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais precisa
seria: "afrouxar a porca, girando-a 30º no sentido anti-horário".

Vantagens:

- O português é bastante conhecido por nós;

Desvantagens:

- Imprecisão;
- Pouca confiabilidade (a imprecisão acarreta a desconfiança);
- Extensão (normalmente, escreve-se muito para dizer pouca coisa).

3.2 - Fluxograma
É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam
ações (instruções, comandos) distintos. Tal propriedade facilita o entendimento das idéias
contidas nos algoritmos e justifica sua popularidade.

Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocódigo,


pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de
implementação do programa, como o tipo das variáveis usadas.

Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico da


implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas
para representar operações de saída de dados realizadas em dispositivos distintos, como
uma fita magnética ou um monitor de vídeo.

3.2.1 - Simbologias básicas


A serem utilizadas nesta disciplina.

5
Terminal – indica início e/ou fim do fluxo de um programa
ou sub-programa.

Seta de Fluxo de dados – indica o sentido do fluxo.


Serve para conectar os símbolos.

Entrada – operação de entrada de dados. Lê os dados


necessários do programa

Processamento – operação de atribuição. Indica os


cálculos a efetuar, ou atribuições de valores

Saída – operação de saída de dados. Apresenta os


dados no monitor (ou algum outro dispositivo de saída)

Decisão (a ser tomada) – indicando os desvios para


outros pontos do fluxo, dependendo do resultado da
comparação

Preparação – grupo de operações não incluídas na


diagramação (chave que modificará a execução de um
determinado programa)

Conector – ao receber duas Setas de Fluxo de dados,


normalmente após o fechamento dos processos
decorrentes de uma decisão

Conector de seção – quando for necessário particionar o


fluxograma. Coloca um número idêntico em ambas as
seções / páginas, indicando a sua continuação.

Abaixo está a representação do algoritmo de cálculo da média de um aluno sob a forma


de um fluxograma.

inicio

n1

n2

media ← ((n1 + n2) / 2)

6
1

.F. .V.
(media >= 7)

“reprovado” “aprovado”

fim

Exemplo de um fluxograma convencional.

De modo geral, um fluxograma se resume a um único símbolo inicial por onde a execução
do algoritmo começa, e um ou mais símbolos finais, que são pontos onde a execução do
algoritmo se encerra. Partindo do símbolo inicial, há sempre um único caminho orientado
a ser seguido, representando a existência de uma única seqüência de execução das
instruções.

Isto pode ser melhor visualizado pelo fato de que, apesar de vários caminhos poderem
convergir para uma mesma figura do diagrama, há sempre um único caminho saindo
desta. Exceções a esta regra são os símbolos finais, dos quais não há nenhum fluxo
saindo, e os símbolos de decisão, de onde pode haver mais de um caminho de saída
(usualmente dois caminhos), representando uma bifurcação no fluxo.

Vantagens:

- Uma das ferramentas mais conhecidas;


- Figuras dizem muito mais que palavras;
- Padrão mundial

Desvantagens:

- Faz com que a solução do problema já esteja amarrada a dispositivos físicos;


- Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-
los;
- Complica-se à medida que o algoritmo cresce.

3.3 - Pseudocódigo
De forma semelhante como os programas são escritos. Também chamado de Portugol ou
Português Estruturado.

A linguagem de Programação mais próxima é o Pascal, com codificação quase idêntica


ao Inglês Estruturado.
Esta forma de representação de algoritmos é rica em detalhes, como a definição dos tipos
das variáveis usadas no algoritmo. Por assemelhar-se bastante à forma em que os
programas são escritos, encontra muita aceitação.

7
Na verdade, esta representação é suficientemente geral para permitir a tradução de um
algoritmo nela representado para uma linguagem de programação específica seja
praticamente direta.

A forma geral da representação de um algoritmo na forma de pseudocódigo é a seguinte:

algoritmo <Nome_do_Programa>
<declaração_de_variáveis>
inicio
<corpo do algoritmo>
FimAlgoritmo

Algoritmo é uma palavra que indica o início da definição de um algoritmo em Portugol ou


Pseudocódigo.

<Nome_do_Programa> é um nome simbólico dado ao algoritmo com a finalidade de


distingui-los dos demais.

<declaração_de_variáveis> consiste em uma porção opcional onde são declaradas as


variáveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos.

Início e FimAlgoritmo são respectivamente as palavras que delimitam o início e o término


do conjunto de instruções do corpo do algoritmo.

Abaixo exemplo na forma de um pseudocódigo, da representação do algoritmo do cálculo


da média de um aluno.

algoritmo CalculoMedia
var n1, n2, media: real
inicio
leia n1
leia n2
media ← ((n1 + n2) / 2)
se (media >= 7) entao
escreva (“aprovado”)
senao
escreva (“reprovado”)
fimse
FimAlgoritmo

Vantagens:

- Independência física da solução (solução lógica apenas);


- Usa o português como base;
- Pode-se definir quais e como os dados vão estar estruturados;
- Passagem quase imediata do algoritmo para uma linguagem de programação qualquer.

Desvantagens:

- Exige a definição de uma linguagem não real para trabalho;


- Não padronizado. Pode ter certas diferenças dependo do autor / programador.

8
4 - Ciclo de vida de um programa
Como tudo na terra, o programa tem um tempo de vida, chamado de ciclo de vida de um
programa.

4.1.1 - Planejamento
É a fase onde definimos o problema a ser resolvido utilizando um computador. Nesta fase
relacionamos a entrada e a saída do futuro programa, assim como a definição dos
arquivos auxiliares que ele venha a utilizar.

4.1.2 - Projeto
É a fase onde a resolução do problema é concebida. Neste ponto são definidos detalhes
do algoritmo, estrutura de dados empregados pelo programa.

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

4.1.4 - Depuração
Ao final da escrita estaremos com o programa quase pronto; mas será que ele funciona?
Esta é a fase onde se corrigem os erros, até que o objetivo seja alcançado.

4.1.5 - Implantação
O programa é disponibilizado ao cliente para utilização.

4.1.6 - Manutenção
O programa poderá ser alterado, tanto para corrigir erros não encontrados na fase de
depuração / implantação, como também para atender novas necessidades a serem
solicitadas pelos usuários.

4.1.7 - Morte do programa


É quando o programa não atende mais as necessidades do usuário / cliente. Poderá ser
substituído por outro ou nova versão.

4.2 - Método para construção de algoritmos


Ler atentamente o enunciado. É justamente o enunciado do exercício que fornece o
encaminhamento necessário à resolução do problema, que se torna, portanto,
dependente de sua completa compreensão.

Retirar do enunciado a relação das entradas de dados.


Retirar do enunciado a relação das saídas de dados.

9
Determinar o que deve ser feito para transformar as entradas determinadas nas saídas
específicas.

Nesta fase é que determinamos a construção de algoritmos propriamente dita, pois, a


partir de alguns requisitos especificados, devemos determinar qual a seqüência de ações
é capaz de transformar um conjunto definido de dados nas informações de resultado.

4.3 - Um ambiente para escrever algoritmos


Descreveremos uma máquina hipotética para a qual escreveremos nossos algoritmos. O
nosso computador hipotético apresentará a seguinte organização:

Cada uma das partes constituintes da figura abaixo tem os seguintes significados:

(1) Dispositivo de entrada (o teclado):


É o meio pelo qual os dados que serão trabalhados pelo algoritmo vão ser introduzidos
em nosso computador hipotético;

(2) Unidade Lógica e Aritmética (ULA):


Parte responsável pelas operações matemáticas e avaliações lógicas;

(3) Unidade de Controle:


Exerce controle sobre as demais partes do nosso computador. É uma verdadeira gerente
que distribui tarefas às outras unidades;

(4) Memória:
Guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo
dado fornecido ao computador e o resultado de suas operações ficam guardados na
memória;

(5) Dispositivo de Saída (vídeo e impressora):


É o meio que se dispõe para apresentação dos resultados obtidos.

Unidade Central de Processamento

(2)
Unidade Lógica
e Aritmética

(1) (3) (5)


Dispositivo Unidade de Controle Dispositivo
de Entrada de Saída

(4)
Memória Principal

Convenção: trajeto de dados


trajeto de sinais de controle

10
4.4 - Funcionamento do nosso computador
Todos os computadores, independentemente dos seus tamanhos, são conceitualmente
semelhantes ao esquema da figura anterior (há algumas diferenças, mas não trataremos
aqui dos casos especiais).

Resumidamente, podemos afirmar que existem 4 (quatro) operações básicas que


qualquer computador pode executar:

a) operações de entrada e saída: ler dados do teclado e escrever dados na tela é um


exemplo destas operações. Elas servem para introduzir dados na memória do nosso
computador e exibir dados que já estejam lá armazenados;

b) operações aritméticas: são utilizadas na realização de operações matemáticas (adição,


subtração, multiplicação e divisão);

c) operações lógicas e relacionais: têm aplicabilidade em comparações, testes de


condições lógicas (2 > 6 ? X = Y ?);

d) movimentação de dados entre os vários componentes: as operações aritméticas são


executadas na Unidade Lógica e Aritmética, necessitando da transferência dos dados
para essa unidade e da volta do resultado final para ser guardado na memória.

4.5 - Resolvendo um problema


Suponha que queiramos resolver o seguinte problema: a partir de dois números que serão
informados, calcular a adição dos mesmos. Se você fosse encarregado de efetuar essa
tarefa, seria bem provável que utilizasse os passos a seguir:

a) saber quais são os números;


b) calcular a soma dos números;
c) responder à questão com o valor do resultado.

Vejamos como seria resolvido esse mesmo problema em termos das operações básicas
citadas anteriormente:

a) operação de entrada de dados dos números;


b1) movimento do valor dos números entre a memória e a ULA;
b2) operação aritmética de somar os 2 números;
b3) movimentação do resultado da ULA para guardar na memória;
c) operação de saída do resultado, que está guardado na memória, para o dispositivo de
saída desejado.

Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na operação


matemática, não sendo explicitados.

Em resumo, pode-se dizer que escrever algoritmos ou, em última análise, programar
consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais
das quatro operações básicas citadas.

Esses passos que compõem o algoritmo são denominados de comandos. Os comandos


de uma linguagem de programação podem estar mais próximos da máquina (linguagens
de baixo nível) ou serem mais facilmente entendidos pelo homem (linguagens de alto
11
nível). A seqüência de operações básicas, dada anteriormente, para resolver o problema
de adicionar dois números, está em uma linguagem de baixo nível para o nosso
computador hipotético. Em uma linguagem de alto nível teríamos um resultado assim:

Leia X,Y
SOMA = X + Y
Escreva SOMA

5 - Tipos de Dados e Instruções Primitivas


As informações manipuladas pelo computador se apresentam através dos dados
(informações) e das instruções (comandos).

As instruções, que comandam o funcionamento da máquina e determinam a maneira


como devem ser tratados os dados. As instruções são específicas para cada modelo de
computador, pois são funções do tipo particular de processador utilizado em sua
implementação.
Os dados propriamente ditos, que correspondem à porção das informações a serem
processadas pelo computador.

A maior parte das pessoas não ligadas à área de informática ignora o potencial dos
computadores e imagina que eles são capazes de tratar apenas com dados numéricos.
Na realidade, a capacidade dos mesmos se estende a outros tipos de dados.

A classificação apresentada a seguir não se aplica a nenhuma linguagem de


programação específica; pelo contrário, ela sintetiza os padrões utilizados na maioria das
linguagens.

5.1 - Dados Numéricos


São categorizados normalmente em 2 categorias:

- Inteiros;
- Reais.

5.1.1 - Dados Numéricos Inteiros


Os números inteiros são aqueles que não possuem componentes decimais ou
fracionários, podendo ser positivos ou negativos.

Como exemplo de números inteiros tem:

24 - número inteiro positivo


0 - número inteiro
-12 - número inteiro negativo

5.1.2 - Dados Numéricos Reais


Os dados de tipo real são aqueles que podem possuir componentes decimais ou
fracionários, e podem também ser positivos ou negativos.

12
Como dito anteriormente, os elementos dos conjuntos de números fracionários e reais são
necessariamente representados no computador por dados do tipo real. Havendo a parte
decimal, deverá ser utilizado o caractere ponto (.) e não a vírgula.

Exemplos de dados do tipo real:

24.01 - número real positivo com duas casas decimais


144 - número real positivo com zero casas decimais
-13.3 - número real negativo com uma casa decimal
0.0 - número real com uma casa decimal
0 - número real com zero casa decimal

5.2 - Dados Literais


O tipo de dados literal é constituído por uma seqüência de caracteres contendo letras,
dígitos e/ou símbolos especiais (!, @, #, $, %, ^, &, *, etc.). Este tipo de dados é também
muitas vezes chamado de alfanumérico, cadeia de caracteres, ainda, do inglês, string.

Usualmente, os dados literais são representados nos algoritmos pela coleção de


caracteres, delimitada em seu início e término com o caractere aspas (").
Diz-se que o dado do tipo literal possui um comprimento dado pelo número de caracteres
nele contido.

Exemplos de dados do tipo literal:

"QUAL ?" - literal de comprimento 6


" " - literal de comprimento 1
"qUaL ?!$" - literal de comprimento 8
" AbCdefGHi" - literal de comprimento 9
"1-2+3=" - literal de comprimento 6
“0” - literal de comprimento 1

Note que, por exemplo, "1.2" representa um dado do tipo literal de comprimento 3,
constituído pelos caracteres "1", "." e "2", diferindo de 1.2 que é um dado do tipo real.

5.3 - Dados Lógicos


A existência deste tipo de dado é, de certo modo, um reflexo da maneira como os
computadores funcionam. Muitas vezes, estes tipos de dados são chamados de
booleanos, devido à significativa contribuição de BOOLE à área da lógica matemática.

O tipo de dados lógico é usado para representar dois únicos valores lógicos possíveis:
verdadeiro e falso. É comum encontrar-se em outras referências outros tipos de pares de
valores lógicos como sim/não, 1/0, true/false.

Nos algoritmos apresentados nesta apostila os valores lógicos serão delimitados pelo
caractere ponto (.).

Exemplo:

.V. - valor lógico verdadeiro


.F. - valor lógico falso

13
A árvore abaixo resume a classificação dos dados com relação aos tipos de dados
apresentados.

Representação dos diversos tipos de dados

5.4 - Variáveis
Tudo o que é instável, inconstante. Serão armazenadas pela memória do computador, e é
necessário identificar qual é o melhor tipo de dados a ser utilizado.

Para que não se "esqueça" das informações, o computador precisa guardá-las em sua
memória. Cada variável representa um valor, e a qualquer instante pode ser alterado
(quando for realizado um comando para fornecer um novo valor).

5.5 – Arquitetura de Memória


De um modo geral, a memória do computador pode ser vista como um conjunto de
células, cada identificada unicamente por um número inteiro distinto, conhecido como
endereço.

5.5.1 – Memória
O acesso às informações armazenadas na memória (leitura, escrita) é feita Byte a Byte.
Cada Byte é formado por uma combinação de 8 dígitos binários (0 e 1), sendo assim, um
Byte possui 256 (28) estados possíveis ou representa 256 símbolos de informação.

5.5.2 – Armazenamento de dados na memória


Cada informação de determinado tipo é representada de diferentes formas, e necessita de
certa quantidade de memória para armazená-las. O número de bytes necessários para
armazenar uma informação dependerá do seu tipo. Por exemplo, na maioria das
linguagens de programação o tipo inteiro é armazenado ocupando 2 bytes, ou seja, 65536
(28 x 28 = 216) possibilidades (-32767, -32766, ....., -1,0, 1..... 32767, 32768). Um dado
do tipo caractere é formado por vários símbolos, sendo que cada um ocupa 1 byte. Desta
forma o número de bytes utilizados no armazenamento do tipo caractere dependerá do
seu tamanho. 1 endereço - 1 byte.

5.5.3 – Identificadores
Podemos imaginar a memória como sendo um armário repleto de gavetas, no qual as
gavetas seriam os locais físicos responsáveis por armazenar objetos; os objetos (que
podem ser substituídos ou não) seriam as informações (dados), e as gavetas as variáveis
ou constantes.

14
Visto que na memória (armário) existem inúmeras variáveis (gavetas), precisamos
diferenciá-las, o que é feito por meio de identificadores (etiquetas). Cada variável
(gaveta), no entanto, pode guardar apenas uma informação (objeto) de cada vez, sendo
sempre do mesmo tipo (material).

Os identificadores possuem certas regras para serem formados:

- Devem começar por um caractere alfabético;


- Podem ser seguidos por mais caracteres alfabéticos e/ou alfanuméricos;
- Não é permitido o uso de caracteres especiais ou espaços;
- Não pode ser uma Palavra Reservada (instrução).

Exemplos válidos:

pe, media, valor, jksp, m1, m2, nomeusuario.

5.6 – Definição de Variáveis em Algoritmos


Todas as variáveis utilizadas em algoritmos devem ser definidas antes de serem
utilizadas. Isto se faz necessário para permitir que o compilador reserve um espaço na
memória para as mesmas.

Nos algoritmos apresentados nesta apostila será adotada a seguinte convenção:

Todas as variáveis utilizadas em algoritmos serão definidas no início do mesmo, por meio
de um comando de uma das formas seguintes:

var <nome_da_variável> : <tipo_da_variável>

var <lista_de_variáveis> : <tipo_das_variáveis>

A palavra-chave var deverá estar presente sempre e será utilizada uma única vez na
definição de um conjunto de uma ou mais variáveis;

Numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo. Para tal,
devem-se separar os nomes das mesmas por vírgulas;

Variáveis de tipos diferentes devem ser declaradas em linhas diferentes.

A forma de utilização deste comando ficará mais clara quando da utilização da


representação de algoritmos em linguagem estruturada (Pseudocódigo).

Esta convenção é válida para a representação de algoritmos na forma de pseudocódigo.


Em termos de fluxograma, não é usual adotar-se qualquer forma de definição de
variáveis.

Exemplo de definição de variáveis:

var
nome : caractere
idade : inteiro
salario : real
temfilhos : logico

15
No exemplo acima foram declaradas quatro variáveis:

- a variável nome, capaz de armazenar dados alfanuméricos (tipo Literal);


- a variável idade, capaz de armazenar um número inteiro;
- a variável salario, capaz de armazenar um número real;
- a variável tem_filhos, capaz de armazenar uma informação lógica (tipo booleano).

5.7 – Instruções Primitivas


São representadas pelo conjunto de Palavras-chave (Vocabulário) de uma determinada
Linguagem de Programação. Em Portugol, será utilizado as seguintes Instruções
Primitivas:

algoritmo (ou programa) fimalgoritmo (ou fim) numerico


ate (ou ateque) fimenquanto ou
caractere fimescolha outrocaso
caso fimpara para
e fimrepita passo
enquanto fimse repita
entao inicio se
escolha leia senao
escreva logico verdadeiro
faca mensagem
falso nao

Uma determinada ação poderá ser escrita diferente dependendo da Linguagem de


Programação utilizada.

6 - Expressões
6.1 - Conceito
O conceito de expressão em termos computacionais está intimamente ligado ao conceito
de expressão (ou fórmula) matemática, onde um conjunto de variáveis e constantes
numéricas relacionam-se por meio de operadores aritméticos compondo uma fórmula
que, uma vez avaliada, resulta num valor.

Figura - Triângulo de base (B) e altura (H).

Por exemplo, a fórmula de cálculo da área do triângulo é dada por:


16
area <- 0.5 * b * h

Esta fórmula utiliza três variáveis: b e h, que contêm as dimensões do triângulo, e area,
onde é guardado o valor calculado (resultado da avaliação da expressão). Há, também,
uma constante (0.5) e o operador de multiplicação (*), que aparece duas vezes na
expressão.

O conceito de expressão aplicado à computação assume uma conotação mais ampla:


uma expressão é uma combinação de variáveis, constantes e operadores, e que, uma vez
avaliada, resulta num valor.

6.2 - Operadores
Operadores são elementos funcionais que atuam sobre operandos e produzem um
determinado resultado. Por exemplo, a expressão 3 + 2 relaciona dois operandos (os
números 3 e 2) por meio do operador (+) que representa a operação de adição.

De acordo com o número de operandos sobre os quais os operadores atuam, os últimos


podem ser classificados em:

- binários, quando atuam sobre dois operandos.

Ex.: os operadores das operações aritméticas básicas (soma, subtração, multiplicação e


divisão);

- unários, quando atuam sobre um único operando.

Ex.: o sinal de (-) na frente de um número, cuja função é inverter seu sinal.

Outra classificação dos operadores é feita considerando-se o tipo de dado de seus


operandos e do valor resultante de sua avaliação. Segundo esta classificação, os
operadores dividem-se em aritméticos, lógicos e literais. Esta divisão está diretamente
relacionada com o tipo de expressão onde aparecem os operadores.

Um caso especial é o dos operadores relacionais, que permitem comparar pares de


operandos de tipos de dados iguais, resultando sempre num valor lógico.

Mais adiante serão apresentados os operadores dos diversos tipos acima relacionados.

6.3 - Tipos de Expressões


As expressões são classificadas de acordo com o tipo do valor resultante de sua
avaliação.

6.3.1 - Expressões Aritméticas


Expressões aritméticas são aquelas cujo resultado da avaliação é do tipo numérico, seja
ele inteiro ou real. Somente o uso de operadores aritméticos e variáveis numéricas são
permitidos em expressões deste tipo.

Os operadores aritméticos relacionados às operações aritméticas básicas estão


sumarizados na Tabela.

17
Tabela - Operadores aritméticos e sua ordem de prioridade
Operador Tipo Operação Prioridade
+ Binário Adição 4
- Binário Subtração 4
* Binário Multiplicação 3
/ Binário Divisão 3
^ ou ** Binário Exponenciação 2
+ Unário Manutenção de sinal 1
- Unário Inversão de sinal 1

A prioridade entre operadores define a ordem em que os mesmos devem ser avaliados
dentro de uma mesma expressão. Este assunto será tratado com maior profundidade
numa seção posterior.

O caractere (*) é adotado na maioria das linguagens de programação para representar a


operação de multiplicação, ao invés do caractere (x), devido à possibilidade da ocorrência
do mesmo no nome de variáveis. O símbolo (^) é adotado para representar a operação de
exponenciação, e em muitas literaturas será visto o símbolo (**) para esta finalidade, mas
será adotado preferencialmente o símbolo (^).

6.3.2 - Expressões Lógicas


Expressões lógicas são aquelas cujo resultado da avaliação é um valor lógico (.V. ou .F.).

Os operadores lógicos e suas relações de precedência são mostrados na tabela abaixo.


Tabela - Operadores lógicos e suas relações de prioridade
Operador Tipo Operação Prioridade
.ou. Binário Disjunção 3
.e. Binário Conjunção 2
.nao. Unário Negação 1

Para exemplificar o uso de operadores lógicos, a Tabela 5.3 apresenta duas variáveis
lógicas A e B. Uma vez que cada variável lógica possui somente dois valores possíveis,
então há exatamente quatro combinações para estes valores, razão pela qual a tabela
tem quatro linhas. As diversas colunas contêm os resultados das operações lógicas sobre
as combinações possíveis dos valores das variáveis A e B.

Tabela - Tabela-Verdade dos operadores apresentados na Tabela anterior


a b .nao. a .nao. b a .ou. b a .e. b
.F. .F. .V. .V. .F. .F.
.F. .V. .V. .F. .V. .F.
.V. .F. .F. .V. .V. .F.
.V. .V. .F. .F. .V. .V.

A Tabela acima é chamada de Tabela-Verdade. Convém salientar as seguintes


conclusões que podem ser extraídas por observação da Tabela:

O operador lógico .nao. sempre inverte o valor de seu operando. Ex.: . nao. .V. = .F. e .
nao. .F. = .V.;

Para que a operação lógica .ou. tenha resultado verdadeiro basta que um de seus
operandos seja verdadeiro; Para melhor visualizar este efeito, podemos imaginar que as

18
variáveis lógicas a e b são como dois interruptores ligados em paralelo num circuito de
acionamento de uma lâmpada.

Há, ainda, outro tipo de operador que pode aparecer em operações lógicas: os
operadores relacionais, mostrados na Tabela.

Tabela - Operadores relacionais


Operador Operação
= Igual
<> Diferente
< Menor
<= Menor ou igual
> Maior
>= Maior ou igual

Estes operadores são somente usados quando se deseja efetuar comparações.


Comparações só podem ser feitas entre objetos de mesma natureza, isto é, variáveis do
mesmo tipo de dado. O resultado de uma comparação é sempre um valor lógico.

O uso de operadores relacionais possibilita o aparecimento em expressões lógicas de


variáveis de outros tipos de dados que não o lógico.

7 - Comandos de Atribuição
Um comando de atribuição permite-nos fornecer um valor a certa variável, onde o tipo
dessa informação deve ser compatível com o tipo da variável, isto é, somente podemos
atribuir um valor lógico a uma variável capaz de comportá-lo, ou seja, uma variável
declarada do tipo lógico. O comando de atribuição é uma seta apontando para a variável
ou dois pontos e o sinal de igual (<-):
Exemplo:

var
a, b,c : real
inicio
a <- 5
b <- a+b
c <- b*a

7.1 – Constantes
Entendemos que uma informação é constante quando não sofre nenhuma variação no
decorrer do tempo.

As constantes são definidas junto com as variáveis antes de iniciar o programa, e em


seguida após o início do algoritmo, as constantes recebem seu valor fixo através do
comando de atribuição (<-):

var
nomepadrao : caracter
valorpi: real
inicio
nomepadrao <- “João”
valorpi <- 3.1415

19
No exemplo acima foram declaradas duas constantes:

- a variável constante nomepadrao, que foi atribuído um valor fixo “João” do tipo
Alfanumérico;
- a variável constante valorpi, que foi atribuído um valor fixo 3.1415 do tipo Real;

7.2 - Entrada de Dados


Para que nossos algoritmos funcionem, em quase todos os casos precisaremos de
informações que serão fornecidas somente após o algoritmo pronto, e que sempre
estarão mudando de valores, para que nossos algoritmos recebem estas informações,
devemos então construir entradas de dados, pelas quais o usuário (pessoa que utilizar o
programa) poderá fornecer todos os dados necessários.

A sintaxe do comando de entrada de dados é a seguinte:

leia (variável)

7.3 - Saída de Dados


Da mesma forma que nosso algoritmo precisa de informações, o usuário precisa de
respostas as suas perguntas, para darmos estas respostas usamos um comando de
saída de dados para informar a resposta.

A sintaxe do comando de saída de dados é a seguinte:

escreva (variável)
escreval (variável) // Para pulara para a linha seguinte, basta acrescentar a letra “l”

8 - Estruturas de Controle
8.1 - Estrutura Seqüencial
É o conjunto de ações primitivas que serão executadas numa seqüência linear de cima
para baixo e da esquerda para direita, isto é, na mesma ordem em que foram escritas.

Como podemos perceber, todas as ações devem pular uma linha, o que objetiva separar
uma ação de outra.

Variáveis;
(declaração de variáveis)
início
comando 1
comando 2
comando 3
FimAlgoritmo.

Algoritmo - 01: Criar um programa que efetue a leitura de dois valores


numéricos. Faça a operação de soma entre os dois valores e apresente
o resultado obtido.

20
Planejamento
Problema: Calcular a soma de dois números.
Objetivo: Apresentar a soma de dois números.

Entradas: N1, N2
Saídas: SOMA

Projeto
Cálculos:
SOMA <- N1 + N2

Fluxograma

Portugol

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

8.2 - Estruturas de Seleção ou Decisão


Uma estrutura de decisão permite a escolha de um grupo de ações e estruturas a ser
executado quando determinadas condições, representadas por expressões lógicas, são
ou não satisfeitas.

21
8.2.1 - Decisão Simples
Se <condição> entao
{bloco verdade}
Fimse

<condição> é uma expressão lógica, que, quando inspecionada, pode gerar um resultado
falso ou verdadeiro.

Se .V., a ação primitiva sob a cláusula será executada; caso contrário, encerra o
comando, neste caso, sem executar nenhum comando.

Algoritmo - 02: Ler dois valores numéricos, efetuar a adição e


apresentar o resultado caso o valor somado seja maior que 10.

Planejamento
Problema: Calcular a soma de dois números e apresentar o resultado com condição.
Objetivo: Apresentar o resultado apenas se for maior que 10.

Entradas: N1, N2
Saídas: SOMA

Projeto
Cálculos e detalhamento:
SOMA <- N1 + N2
Se (SOMA > 10) entao
escreva SOMA
Fimse

Fluxograma
INICIO

N1

N2

SOMA N1 + N2

.F. .V.
SOMA > 10

SOMA

FIM

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

8.2.2 - Decisão Composta


Se <condição> entao
{bloco verdade}
Senao
{bloco falso}
Fimse

<condição> é uma expressão lógica, que, quando inspecionada, pode gerar um resultado
falso ou verdadeiro.

Se .V., a ação primitiva sob a cláusula será executada; caso contrário, isto é, se for .F., a
ação primitiva sob a cláusula será executada.Após isto, encerra a condição com o
comando Fimse.

Algoritmo - 03: Ler dois valores numéricos, efetuar a adição. Caso o


valor somado seja maior ou igual a 10, este deverá ser apresentado
somando-se a ele mais 5, caso o valor somado não seja maior ou igual
a 10, este deverá ser apresentado subtraindo-se 7.

Planejamento
Problema: Calcular a soma de dois números e apresentar o resultado com uma condição.
Objetivo: Apresentar o Resultado se for igual ou maior que 10 adicionando mais 5, se
não for igual ou maior que 10 deverá subtrair 7.
Entradas: A, B
Saídas: TOTAL
Auxiliares: SOMA

Projeto
Cálculos e detalhamento:
SOMA <- A + B
Se (SOMA >= 10) Então
TOTAL <- SOMA + 5
Senão
TOTAL <- SOMA - 7
Fimse
23
Fluxograma

INICIO

SOMA A+B

.F. .V.
SOMA > =10

TOTAL ← SOMA - 7 TOTAL ← SOMA + 5

TOTAL

FIM

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

8.2.3 – Seleção Múltipla


Esta estrutura evita que façamos muitos blocos se, quando o teste será sempre em cima
da mesma variável.

Exemplo:

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

Com a estrutura de escolha múltipla, o algoritmo ficaria da seguinte maneira:


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

Algoritmo - 04: Ler um número inteiro entre 1 e 4 e escrever o número


por extenso correspondente: exemplo: Lido 1, será apresentado um.
Lido 2, será apresentado dois etc.

Planejamento
Objetivo: Apresentar um número por extenso.
Entradas: numero
Saídas:
Auxiliares:
Projeto
Cálculos e detalhamento:
escolha numero
caso 1
escreva “um”
caso 2
escreva “dois”
caso 3
escreva “três”
caso 4
escreva “quatro”
outrocaso
escreva “número inválido”
fimescolha

25
Fluxograma

INICIO

numero

.V.
Numero=1 “um”

.V.
Numero=2 “dois”

.V.
Numero=3 “tres”

.V.
Numero=4 “quatro

“numero invalido”

FIM

Portugol
Algoritmo Algoritmo04
Var
numero: inteiro
Inicio
Leia numero
escolha numero
caso 1
escreva “um”
caso 2
escreva “dois”
caso 3
escreva “três”
caso 4
escreva “quatro”
outrocaso
escreva “número inválido”
fimescolha
FimAlgoritmo

26
8.3 – Estruturas de Repetição
Estas estruturas possibilitam que nosso algoritmo seja muito mais enxuto e fácil de se
programar.

Imagine um algoritmo de fatorial de 8:

Algoritmo FatorialNumero8
variaveis
fat : real;
início
fat <- 8 * 7
fat <- fat * 6
fat <- fat * 5
fat <- fat * 4
fat <- fat * 3
fat <- fat * 2
escreva (fat)
FimAlgoritmo.

O resultado será o fatorial com certeza, mas, imagine se fosse o fatorial de 250. Ou ainda,
o usuário deseja fornecer o número e o algoritmo deve retornar o fatorial, qual número
será digitado?

Quantas linhas deverão ser escritas?

Para isso servem as estruturas de repetição, elas permitem que um determinado bloco de
comandos seja repetido várias vezes, até que uma condição determinada seja satisfeita.

Serão estudadas as seguintes estruturas de repetição:


- Enquanto - Faca, o teste é realizado no Início do looping
- Repita - Ateque, o teste é realizado no Final do looping
- Para - de - ate - Passo - faca, cuja Estrutura é utilizada uma variável de Controle.

8.3.1 – Enquanto ... Faca - Estrutura com teste no Início


Esta estrutura faz seu teste de parada antes do bloco de comandos, isto é, o bloco de
comandos será repetido, até que a condição seja F. Os comandos de uma estrutura
enquanto .. faca poderá ser executada uma vez, várias vezes ou nenhuma vez.
Enquanto < condição > Faça
< bloco de comandos >
FimEnquanto

Algoritmo - 05: Apresentar o total da soma obtida dos cem primeiros


números inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a
estrutura Enquanto ... Faca)

Planejamento
Objetivo: Apresentar o resultado da soma obtida dos cem primeiros números inteiros
Entradas: Num
Saídas: Tot

27
Projeto
Cálculos e detalhamento:
Enquanto Num <= 100 faca
Tot<--Tot+Num
num=num+1
FimEnquanto

Fluxograma

INICIO

num <- 0

tot <- 0

.F.
Enquanto Num
<= 100
.V.

Tot <-Tot+Num

Num <- num+1

tot

FIM

Portugol

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

28
8.3.2 – Repita ... Ateque - Estrutura com teste no final
Esta estrutura faz seu teste de parada após o bloco de comandos, isto é, o bloco de
comandos será repetido, até que a condição seja V. Os comandos de uma estrutura repita
.. até sempre serão executados pelo menos uma vez.

Repita
comando1
comando2
comando3
ateque <condição>

Algoritmo – 06: Apresentar o total da soma obtida dos cem primeiros


números inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a
estrutura Repita ... Até)

Planejamento
Objetivo: Apresentar o resultado da soma obtida dos cem primeiros números inteiros
Entradas: Num
Saídas: Tot

Projeto
Cálculos e detalhamento:
Num=1
Repita
Tot <-Tot+Num
Num <- num+1
Ateque Num >= 100

Portugol
Algoritmo Algoritmo06
Var
Num, tol : inteiro
Inicio
Num <- 1
Tot <- 0
Repita
Tot <-Tot+Num
Num <- num+1
Ateque Num >= 100
Escreva Tot
FimAlgoritmo

29
Fluxograma

INICIO

num <- 1

tot <- 0

Tot <-Tot+Num

Num <- num+1

.F. .V.
Ateque Num
>= 100

tot

FIM

8.3.3 – Para ... de ... ate ... Passo ... faca – Estrutura com
variável de Controle
Nas estruturas de repetição vistas até agora, acorrem casos em que se torna difícil
determinar quantas vezes o bloco será executado. Sabemos que ele será executado
enquanto uma condição for satisfeita - enquanto..faça, ou até que uma condição seja
satisfeita - repita...até. A estrutura para .. passo repete a execução do bloco um número
definido de vezes, pois ela possui limites fixos:

Para <variável> <- <valor> até <valor> passo N faca


< bloco de comandos >
FimPara

Algoritmo - 07: Apresentar o total da soma obtida dos cem primeiros


números inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a
estrutura Para .. Passo)

Planejamento
Objetivo: Apresentar o resultado da soma obtida dos cem primeiros números inteiros

Entradas: Num
Saídas: Tot

30
Projeto

Cálculos e detalhamento:
Para num de 1 a 100 passo 1 faca
Tot <-Tot+Num
FimPara

Fluxograma

INICIO

tot <- 0

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

tot

FIM

Portugol

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

9 - Conclusão
Este semestre teve como principal objetivo capacitar o aluno a entender os conceitos
fundamentais de lógica de programação de forma independente da linguagem e introduzi-
lo a uma metodologia de desenvolvimento de programas.

Saber Lógica de Programação é mais importante que saber uma Linguagem de


Programação. Sem saber como se planeja um programa, dificilmente poderá ser
implantada tanto na Linguagem de Programação mais antiga como nas mais modernas.

Deseja-se boa sorte a todos os colegas, futuros profissionais da área de Informática!!!

31
Sumário
1 - Introdução à disciplina de Lógica de Programação.......................................................2

2 – Lógica de Programação................................................................................................2
2.1 - O que é Lógica? .........................................................................................................2
2.2 - Existe Lógica no dia-a-dia? ........................................................................................2
2.3 - O que é Algoritmo? ....................................................................................................2
2.4 - O que é padrão de comportamento?..........................................................................3
2.5 – Programação .............................................................................................................3
2.6 – Programa...................................................................................................................4
2.7 – Etapas de um programa ............................................................................................4
2.7.1 – Entrada ...................................................................................................................4
2.7.2 – Processamento.......................................................................................................4
2.7.3 – Saída ......................................................................................................................4

3 - Formas de Representação de Algoritmos .....................................................................4


3.1 - Descrição Narrativa ....................................................................................................5
3.2 - Fluxograma ................................................................................................................5
3.2.1 - Simbologias básicas................................................................................................5
3.3 - Pseudocódigo.............................................................................................................7

4 - Ciclo de vida de um programa.......................................................................................9


4.1.1 - Planejamento ..........................................................................................................9
4.1.2 - Projeto .....................................................................................................................9
4.1.3 - Escrita .....................................................................................................................9
4.1.4 - Depuração...............................................................................................................9
4.1.5 - Implantação.............................................................................................................9
4.1.6 - Manutenção.............................................................................................................9
4.1.7 - Morte do programa ..................................................................................................9
4.2 - Método para construção de algoritmos ......................................................................9
4.3 - Um ambiente para escrever algoritmos....................................................................10
4.4 - Funcionamento do nosso computador .....................................................................11
4.5 - Resolvendo um problema.........................................................................................11

5 - Tipos de Dados e Instruções Primitivas ......................................................................12


5.1 - Dados Numéricos .....................................................................................................12
5.1.1 - Dados Numéricos Inteiros .....................................................................................12
5.1.2 - Dados Numéricos Reais........................................................................................12
5.2 - Dados Literais ..........................................................................................................13
5.3 - Dados Lógicos..........................................................................................................13
5.4 - Variáveis...................................................................................................................14
5.5 – Arquitetura de Memória ...........................................................................................14
5.5.1 – Memória................................................................................................................14
5.5.2 – Armazenamento de dados na memória................................................................14
5.5.3 – Identificadores ......................................................................................................14
5.6 – Definição de Variáveis em Algoritmos .....................................................................15
5.7 – Instruções Primitivas................................................................................................16

6 - Expressões..................................................................................................................16
6.1 - Conceito ...................................................................................................................16
6.2 - Operadores ..............................................................................................................17
6.3 - Tipos de Expressões ................................................................................................17

32
6.3.1 - Expressões Aritméticas .........................................................................................17
6.3.2 - Expressões Lógicas ..............................................................................................18

7 - Comandos de Atribuição .............................................................................................19


7.1 – Constantes ..............................................................................................................19
7.2 - Entrada de Dados ....................................................................................................20
7.3 - Saída de Dados........................................................................................................20

8 - Estruturas de Controle.................................................................................................20
8.1 - Estrutura Seqüencial ................................................................................................20
Algoritmo - 01: Criar um programa que efetue a leitura de dois valores numéricos. Faça a
operação de soma entre os dois valores e apresente o resultado obtido.........................................20
8.2 - Estruturas de Seleção ou Decisão ...........................................................................21
8.2.1 - Decisão Simples....................................................................................................22
Algoritmo - 02: Ler dois valores numéricos, efetuar a adição e apresentar o resultado caso o valor
somado seja maior que 10. .............................................................................................................22
8.2.2 - Decisão Composta ................................................................................................23
Algoritmo - 03: Ler dois valores numéricos, efetuar a adição. Caso o valor somado seja maior ou
igual a 10, este deverá ser apresentado somando-se a ele mais 5, caso o valor somado não seja
maior ou igual a 10, este deverá ser apresentado subtraindo-se 7..................................................23
8.2.3 – Seleção Múltipla ...................................................................................................24
Algoritmo - 04: Ler um número inteiro entre 1 e 4 e escrever o número por extenso
correspondente: exemplo: Lido 1, será apresentado um. Lido 2, será apresentado dois etc..........25
8.3 – Estruturas de Repetição ..........................................................................................27
8.3.1 – Enquanto ... Faca - Estrutura com teste no Início.................................................27
Algoritmo - 05: Apresentar o total da soma obtida dos cem primeiros números inteiros
(1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Enquanto ... Faca).........................27
8.3.2 – Repita ... Ateque - Estrutura com teste no final ....................................................29
Algoritmo – 06: Apresentar o total da soma obtida dos cem primeiros números inteiros
(1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Repita ... Até)................................29
8.3.3 – Para ... de ... ate ... Passo ... faca – Estrutura com variável de Controle..............30
Algoritmo - 07: Apresentar o total da soma obtida dos cem primeiros números inteiros
(1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Para .. Passo).................................30

9 - Conclusão ...................................................................................................................31

Sumário ............................................................................................................................32
Anexo - Bibliografia ..........................................................................................................34
Anexo - Listas de Exercícios ............................................................................................35
1º Lista de Exercícios .....................................................................................................................35
2º Lista de Exercícios .....................................................................................................................35
3º Lista de Exercícios .....................................................................................................................36
4º Lista de Exercícios .....................................................................................................................37
5º Lista de Exercícios .....................................................................................................................38
6º Lista de Exercícios .....................................................................................................................38
7º Lista de Exercícios .....................................................................................................................38
8º Lista de Exercícios .....................................................................................................................39
9º Lista de Exercícios .....................................................................................................................39
10º Lista de Exercícios ...................................................................................................................39
11º Lista de Exercícios ...................................................................................................................40
12º Lista de Exercícios ...................................................................................................................40
13º Lista de Exercícios ...................................................................................................................41
14º Lista de Exercícios ...................................................................................................................42
15º Lista de Exercícios ...................................................................................................................42
33
Anexo - Bibliografia
Bibliografia básica recomendada:

Manzano, J. A. N. G., Oliveira, J. F.: Algoritmos Lógica para o Desenvolvimento da


Programação. 10ª. Ed. São Paulo: Érica, 2001.

Bibliografia complementar:

Puga, S., Rissetti, G. Lógica de programação e estruturas de dados - com aplicações


em Java. São Paulo: Prentice Hall, 2004.

Lopes, A., Garcia, G.: Introdução à Programação – 500 Algoritmos resolvidos. Rio de
Janeiro: Campus, 2002.

Apostilas consultadas para confecção desta apostila:

________. Algoritmo e Lógica de Programação. Natal: Universidade Federal do Rio


Grande do Norte - Departamento de Engenharia de Computação e Automação, 2004.

Agosti, C. Curso Tecnólogo em Informática - Prof. - Apostila de Pascal. Xanxerê:


Universidade do Oeste de Santa Catarina – Unoesc, 2001.

Costa, R.; Paradzinski, A. Apostila de Lógica de Programação. Curso Técnico em


Processamento de Dados.

Egypto, C. Introdução à Programação. João Pessoa: Asper – Associação Paraibana de


Ensino Renovado - Faculdade Paraibana de Processamento de Dados - Curso de
Tecnologia em Processamento de Dados, 2004.

Egypto, C. Linguagens e Técnicas e Programação I. João Pessoa: Asper – Associação


Paraibana de Ensino Renovado - Faculdade Paraibana de Processamento de Dados -
Curso de Tecnologia em Processamento de Dados, 1998.

Mandaguari, C. B. M. Apostila da Disciplina de Análise de Algoritmos. Faculdade de


Filosofia, Ciências e Letras de Mandaguari - Departamento de Informática, 2004.

Mazer Jr, A. Curso Técnico em Informática – Disciplina de Técnicas de Programação


I. Ponta Grossa : Senai - Serviço Nacional de Aprendizagem Industrial.

Moraes, P. S. Curso Básico de Lógica de Programação. Unicamp - Centro de


Computação - Lógica de Programação.

Shine, C. Y. A Torre de Hanói. Artigo baseado em aula ministrada na IV Semana


Olímpica, Salvador: Colégio Etapa.

Tonin, N. Apostila de Algoritmos e Estrutura de Dados I. Erechim: Universidade


Regional Integrada do Alto Uruguai e das Missões - URI – Campus de Erechim - Curso de
Graduação em Ciência da Computação, 2005.

34
Anexo - Listas de Exercícios
Instruções gerais

As Listas de Exercícios comporão 30% das notas A1 e A2.


O prazo de entrega deverá ser cuidadosamente respeitado.
Após uma semana de atraso não será contabilizada nota.
A entrega será sempre individual
Precisa constar sempre. Havendo falta de informações não será corrigido e não será
contabilizada nota.
- curso, turma, disciplina
- nome do aluno em todas as folhas
- número da lista de exercícios
- número do exercício.

1º Lista de Exercícios
Montar em Descrição Narrativa, Fluxograma e Portugol.

1 - Crie uma seqüência lógica para tomar banho. Verificar o que fazer se acabar a água.

2 - Descreva com detalhes a seqüência lógica para Trocar um pneu de um carro. Verificar
se tem estepe.

3 - Faça um algoritmo que crie um suco de acerola. Caso não tenha açúcar substituir por
adoçante.

2º Lista de Exercícios
Utilizando linguagem natural, fluxogramas e Portugol, resolver os seguintes
problemas:

1 - Um homem precisa atravessar um rio com um barco que possui capacidade de


carregar apenas ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode
e um maço de alfafas. O que o homem deve fazer para conseguir atravessar o rio sem
perder suas cargas?

2 - Construa um algoritmo que mostre todos os passos que você segue para escolher o
tipo de roupa com que vai sair, após levantar, levando em consideração apenas o tempo
(bom, nublado, chuvoso) e a temperatura (quente, moderado, frio).

3 - Elabore um algoritmo que mova três discos de uma Torre de Hanói, que consiste em
três hastes (a - b - c), uma das quais serve de suporte para três discos diferentes (1 - 2 -
3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer
haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo é
transferir os três discos para outra haste.
Simulação no site: http://www.npd.ufes.br/hanoi

4 - Três jesuítas e três canibais precisam atravessar um rio; para tal, dispõem de um
barco com capacidade para duas pessoas. Por medidas de segurança não se permite que
em alguma margem a quantidade de jesuítas seja inferior à de canibais. Qual a seqüência
de passos que permitiria a travessia com segurança?

35
3º Lista de Exercícios
Favor entregar esta lista nesta própria folha (obrigatório)

1 - Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I
os dados do tipo Inteiros, com R os Reais, com A os Alfanumérico, com B os lógicos
(Booleanos). Deixe em branco aqueles para os quais não é possível definir a priori um
tipo de dado.

( ) .v. ( ) " Boa sorte " ( ) 156


( ) " logico " ( ) + 805 ( ) " 6RN "
( ) 7094 ( ) #fone_com ( ) " 11.06 "
( ) F ( ) 1584 ( ) - 123
( ) 2X ( ) - 54.01 ( ) " Prova1 + 2 "
( ) .falso. ( ) " 14 " ( ) " 15 º "
( ) " verdadeiro " ( ) -1 ( ) " CARACT "
( ) .verdadeiro. ( ) "o" ( ) VAR
( ) y3 ( ) .V. ( ) .falso.
( ) + 56 ( ) 18 ( ) 111.3500089
( ) .F. ( ) .F. ( ) " zero "
( ) " 01053-067 " ( ) 0 ( ) 28B
( ) "f " ( ) x2 ( ) - 1.0n
( ) ! ( ) 8.55551 ( ) " 156 + 200 "
( ) 89.41 ( ) 18 º ( ) - 16.087
( ) " fone$res " ( ) " 15 " ( ) " constante "
( ) - 7.05706 ( ) 0,8 ( ) alfanumerico
( ) "-6" ( ) 28B ( ) RESULT= - 18
( ) ate_que ( ) - 1.0
"

2 - Indique com um X quais são PALAVRAS RESERVADAS (INSTRUÇÕES):

( ) fim ( ) programa ( ) ramal


( ) +8 ( ) ate_que ( ) var
( ) " ramal " ( ) " abril/00 " ( ) acabou
( ) enquanto ( ) nota_do_aluno ( ) INICIO
( ) 40P ( ) fone ( ) começa

3 - Assinale com um X os nomes válidos para uma VARIÁVEL: Justifique o motivo quando
for um nome inválido:

( ) z8ur8cmv ____________________________________________
( ) 18log ____________________________________________
( ) y3 ____________________________________________
( ) R$ 85.05 ____________________________________________
( ) PROVA 1 ____________________________________________
( ) data15_03_2000 ____________________________________________
( ) ShoppingMorumbi ____________________________________________
( ) constante80.9 ____________________________________________
( ) inicio ____________________________________________
( ) " mediad " ____________________________________________
( ) simpson@igo.com ____________________________________________
( ) X ____________________________________________
( ) fim ____________________________________________
( ) laranja 12_reais ____________________________________________
( ) Sul ____________________________________________
( ) RAMAL ____________________________________________
( ) O I A ____________________________________________
( ) 5x ____________________________________________
( ) var ____________________________________________

36
4º Lista de Exercícios
Favor entregar esta lista nesta própria folha (obrigatório)

1 - Assinale com X os identificadores corretos e explique o que está errado nos


identificadores incorretos.
( ) valor _____________________________________________________
( ) _b248 _____________________________________________________
( ) nota*do*aluno_____________________________________________________
( ) a1b2c3 _____________________________________________________
( )3x4 _____________________________________________________
( ) km/h _____________________________________________________
( ) xyz _____________________________________________________
( ) nome empr _____________________________________________________
( ) sala_215 _____________________________________________________
( ) “nota” _____________________________________________________
( ) ah! _____________________________________________________
( ) abc _____________________________________________________
( ) AB/C _____________________________________________________
( ) 123a _____________________________________________________
( ) 080 _____________________________________________________
( ) DBAC _____________________________________________________
( ) xyz _____________________________________________________
( ) A_B-C _____________________________________________________
( ) U2 _____________________________________________________
( ) A123 _____________________________________________________
( ) Cos *4 _____________________________________________________
( ) SENAO _____________________________________________________

2 - Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I
os dados do tipo inteiro, com R os reais, com L os literais, com B os lógicos (booleanos), e
com N aqueles para os quais não é possível definir a priori um tipo de dado.

( ) 0.21 ( )-3 ( ) 0,0


( )1 ( ) .V. ( ) - 0,001
( )V ( ) .V ( ) “-0,0”
( ) “0.” ( ) “abc” ( ) “.V.”
( ) 1% ( )F ( ) 0
( ) “José” ( )C ( ) + 0,05
( ) 0,35 ( ) Maria ( ) “.V.”
( ) .F. ( ) +36 ( ) F
( ) -0.001 ( )0 ( ) -1
( ) .T. ( ) + 36 ( ) + 3257
( ) +3257 ( ) “+3257 ( ) V
( ) “a” ( ) F ( ) -32
( ) “+3257” ( ) 1 ( ) “a”
( ) +3257. ( ) + 32 ( ) “abc”
( ) “-0.0” ( ) “+3257” ( ) -1,9E13
( ) “.F.” ( ) 'F' ( ) '0'

3 - Encontrar o resultado dos exercícios abaixo (Operadores Aritméticos):


Para os valores: Para os valores:
A=3, B=6, c=8, d=2 A=2, B=6, c=6, d=1
1) result <- a*b-c+d Respostas: Respostas:
2) result <- b/a-c*d 1) result <- ____ 1) result <- ____
3) result <- a*(b-c)+d 2) result <- ____ 2) result <- ____
4) result <- a**d-c**d+(b^2) 3) result <- ____ 3) result <- ____
5) result <- d*(b+c*(c/d)) 4) result <- ____ 4) result <- ____
6) result <- a*(b-d)*((c-a) ^ 2) 5) result <- ____ 5) result <- ____
6) result <- ____ 6) result <- ____

37
5º Lista de Exercícios
Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Criar um programa que efetue a leitura de quatro valores numéricos. Faça a operação
de soma entre os quatro valores e apresente o resultado obtido.

2 - Desenvolver a lógica para um programa que efetue o cálculo da área de uma


circunferência e do triângulo apresentando a medida das áreas calculadas.

3 - Calcular e apresentar o valor do volume de uma lata de óleo, utilizando a fórmula:


VOLUME = pi * R2 * ALTURA.

4 – Ler o nome e o endereço de uma pessoa. Apresentar em tela novamente.

6º Lista de Exercícios
Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Efetuar a leitura de um número inteiro e apresentar o resultado do quadrado deste


número.

2 - Efetuar o cálculo da quantidade de litros de combustível gastos em uma viagem,


utilizando-se um automóvel que faz 12 km por litro. Para obter o cálculo, o usuários
deverá fornecer o tempo gasto na viagem e a velocidade média durante a mesma. Desta
forma, será possível obter a distância percorrida com a fórmula DISTANCIA = TEMPO *
VELOCIDADE. Tendo o valor da distância, basta calcular a quantidade de litros de
combustível utilizada na viagem com a fórmula: LITROS_USADOS = DISTANCIA / 12. O
programa deverá apresentar os valores da velocidade média, tempo gasto na viagem, a
distância percorrida e a quantidade de litros utilizada na viagem.

3 - Efetuar o cálculo do valor de uma prestação em atraso, utilizando a fórmula:


PRESTAÇÃO = VALOR + (VALOR * (TAXA / 100) * TEMPO).

4 - Dados dois números inteiros, trocar o conteúdo desses números.

7º Lista de Exercícios
Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - O cardápio de uma lanchonete é dado abaixo. Prepare um algoritmo que leia a


quantidade de cada item que você consumiu e calcule a conta final.
Hambúrguer R$ 3,00
Cheeseburger R$ 2,50
Fritas R$ 2,50
Refrigerante R$ 1,00
Milkshake R$ 3,00

2 - Dados dois números inteiros, achar a média aritmética entre eles.


38
3 - Escreva um algoritmo que tenha como entrada nome, endereço, sexo, salário. Após lê-
los, apresente ao usuário os valores digitados.

4 - Fazer a transformação de um valor em dólar, para a moeda corrente do Brasil.

8º Lista de Exercícios
Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Ler dois valores numéricos, efetuar a multiplicação entre eles, e apresentar o resultado
caso o valor multiplicado seja maior ou igual que 5000.

2 - Efetue o cálculo do reajuste de salário de um funcionário. Considere que o funcionário


deverá receber um reajuste de 15% caso seu salário seja menor que R$ 500,00, se o
salário foi maior ou igual a R$ 500,00 mas menor ou igual a R$ 1000,00, seu reajuste será
de 10%, caso seja ainda maior que R$ 1000,00, o reajuste deverá ser de 5%.

3 - Efetuar a leitura de um valor positivo ou negativo e apresentar o número lido como


sendo um valor positivo, ou seja, o programa deverá apresentar o módulo de um número
fornecido. Lembre-se de verificar se o número fornecido é menor que zero, sendo
multiplique-o por -1.

9º Lista de Exercícios
Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Ler 4 notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi
aprovado, se o valor da média for maior ou igual que 7.
Caso o contrário, solicitar a nota do exame final, somar com o valor da média e obter a
nova média. Se a nova média for maior ou igual a 5, apresentar uma mensagem que o
aluno foi aprovado em exame. Se o aluno não foi aprovado, indicar uma mensagem
informando esta condição. Apresentar com as mensagens o valor da média do aluno,
para qualquer condição.

2 - Conheça três números inteiros, e informe qual é o maior. Exibi-los depois em ordem
crescente.

3 - Construa um algoritmo que verifique a validade de uma senha fornecida pelo usuário.
A senha válida deve ser igual a ‘cachorro’.

10º Lista de Exercícios


Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Ler um número inteiro entre 1 e 9 e escrever o número por extenso correspondente:


exemplo: Lido 1, será apresentado um. Lido 2, será apresentado dois etc.

2 - Ler um número inteiro entre 1 e 12 e escrever o mês correspondente. Caso o usuário


digite um número fora desse intervalo, deverá aparecer uma mensagem informando que
não existe mês com este número.
39
3 - Uma faculdade atribui menções aos alunos conforme a faixa de notas que tenha
atingido:
9,0 a 10: SS (superior)
7,0 a 8,9: MS (médio superior)
5, 0 a 6,9: MM (médio)
3,0 a 4,9: MI (médio inferior)
0,1 a 2,9: II (inferior)
0: SR (sem rendimento).
Faça um programa que lê a nota e informa a menção.

11º Lista de Exercícios


Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Imprimir todos os números de 1 a 100.

2 - Imprimir os múltiplos de 5, no intervalo de 1 a 500.

3 - Apresentar os quadrados dos números inteiros de 15 a 200.

4 - Elaborar um programa que apresente o valor de uma potência de uma base qualquer
elevada a um expoente qualquer, ou seja, de NM.

12º Lista de Exercícios


Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Apresentar as potências de 3 variando de 0 a 15. Deve ser considerado que qualquer


número elevado a zero é 1, e elevado a 1 é ele próprio. Deverá ser apresentado,
observando a seguinte definição:
30 = 1
31 = 3
32 = 9
(...)
315 = 14348907
2 - Criar um algoritmo que imprima todos os números de 1 a 100 e a soma deles. (1 + 2 +
3 + 4 + 5 + 6 + 7 + etc. + 97 + 98 + 99 + 100).

3 - Apresentar os resultados de uma tabuada de um número qualquer. Esta deverá ser


impressa no seguinte formato:
Considerando como exemplo o fornecimento do número 2
2x1= 2
2x2= 4
2x3= 6
2x4= 8
2x5=10
(...)
2x10=20

40
13º Lista de Exercícios
Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Escrever um algoritmo que calcule a média dos números digitados pelo usuário, se
eles forem pares, termine a leitura se o usuário digitar 0 (zero) e mostre o resultado final.

2 - Fazer um programa para imprimir o conceito de um aluno, dada a sua nota. Supor
notas inteiras somente. O critério para conceitos é o seguinte:
- nota inferiores a 3 - conceito E;
- nota de 3 a 5 - conceito D;
- notas 6 e 7 - conceito C;
- notas 8 e 9 - conceito B;
- nota 10 - conceito A.

3 - Ler vinte valores e contar quantos deles são maiores que 1000.

4 – Faça um algoritmo que exiba os números pares entre 1000 e 0, nessa ordem, usando
a estrutura para.

5 - Dado um conjunto de números inteiros, obter a soma e a quantidade de elementos.

6 - Desenhar o Fluxograma para o seguinte programa codificado em Portugol:


Algoritmo SALARIOCOMREAJUSTE
Var
SAL: Real
SALREAJ: Real
Inicio
leia SAL
se (SAL < 500) entao
SALREAJ ← (SAL * 1.15)
senao
se (SAL <= 1000) entao
SALREAJ ← (SAL * 1.10)
senao
SALREAJ ← (SAL * 1.05)
fimse
fimse
escreva SALREAJ
FimAlgoritmo

7 - Programa Seu nome


Você digita seu nome na tela e apresenta como resposta (em tela novamente) o que você
digitou.
Formato da tela:
___________________________________
Digite seu nome: ______________
Seu nome é: ______________
___________________________________

41
14º Lista de Exercícios
Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Faça um programa para gerar e exibir os números inteiros de 20 até 10, decrescendo
de 1 em 1.

2 - Calcule o fatorial de um número qualquer.


Exemplo: Se o valor lido for 5. O fatorial de 5! é: 5 x 4 x 3 x 2 x 1.
Exemplo: Se o valor lido for 150. O fatorial de 150! é: 150 x 149 x 148 x ... 3 x 2 x 1.
Se o número for zero, o fatorial de 0! tem como resultado 1.

3 - Escreva um algoritmo que escreva 15 vezes o nome do seu time preferido. O valor
deve ser inserido pelo usuário. Ao final, apresentar também: "O melhor time do século!".

4 - Escreva um algoritmo que calcule a soma e a média dos salários dos funcionários de
uma empresa. O programa termina quando o usuário digitar um salário menor que 0.

15º Lista de Exercícios


Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa
(Planejamento e Projeto), Fluxograma e codificação em Português Estruturado
(Portugol) dos seguintes programas:

1 - Realizou-se uma pesquisa para determinar o índice de mortalidade infantil em um


certo período. Construa um algoritmo que leia o número de crianças nascidas no período
e, depois, num número indeterminado de vezes, o sexo de uma criança morta (masculino,
feminino) e o número de meses da vida da criança.
Como finalizador, teremos a palavra “fim” no lugar do sexo da criança.
Determine e imprima:
- a porcentagem de crianças mortas no período;
- a porcentagem de crianças do sexo masculino mortas no período;
- a porcentagem de crianças que viveram dois anos ou menos no período.

2 - Recebendo quatro médias bimestrais, calcule a media do ano (ponderada), sabendo


que o 1º bimestre tem peso 1, o 2º bimestre tem peso 2, o 3º bimestre tem peso 3 e o 4º
bimestre tem peso 4. Sabendo que para aprovação o aluno precisa ter uma média anual
maior ou igual a 7, escreva uma mensagem indicando se o aluno foi aprovado ou
reprovado.
Observação: Média anual = (1º bimestre * 1+ 2º bimestre * 2 + 3º bimestre * 3 + 4º
bimestre * 4) / (1+2+3+4)

3 - Escreva um programa para ler o nome e o sobrenome de uma pessoa e escrevê-los


na seguinte forma:
sobrenome seguido por uma vírgula e pelo nome.
Exemplo: entrada: "Antonio","Soares" saída: Soares, Antonio

4 - Deseja-se calcular a conta de consumo de energia elétrica de um consumidor. Para


isto, escreva um programa que leia o código do consumidor, o preço do Kw e a
quantidade de Kw consumido, e exiba o código do consumidor e o total a pagar.
- total a pagar = preço x quantidade
- total a pagar mínimo = R$ 11,20

42

Você também pode gostar