L ÓGICA
S ERVIÇO N ACIONAL DE A PRENDIZAGEM C OMERCIAL
DE
P ROGRAMAÇÃO
1ª Edição
SENAC - R IO G RANDE DO S UL
Elaboração e Edição
SENAC - Rio Grande do Sul
Documento produzido para uso interno do
SENAC - Rio Grande do Sul
L ÓGICA
DE
P ROGRAMAÇÃO
SENAC.RS - Departamento Regional no Rio Grande do Sul
Lógica de Programação
1ª edição
Porto Alegre: SENAC-RS, 2003.
68 pp.
Porto Alegre, 2003.
C ONTEÚDO PROGRAMÁTICO
S UMÁRIO
Esta apostila foi desenvolvida pelo SENAC/RS, para apoio ao aluno durante
o desenvolvimento do curso de Lógica de Programação.
Este material é composto de bases teóricas que abrangem o conteúdo
programático do curso e exercícios para sua fixação.
Conteúdo programático ................................................................................................... 3
S u m á r i o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4
Conceitos Iniciais ........................................................................................................... 6
Além do conteúdo programático, abaixo descrito, este material poderá conter
tópicos adicionais que se destinam a complementar o aprendizado do aluno.
O conteúdo programático deste curso foi projetado para uma carga horária
de 60 horas, com o propósito de, ao final do curso, tornar o aluno apto ao uso do
software e de suas ferramentas para a realização dos seus trabalhos.
O conteúdo abrange os seguintes itens:
Diferenças entre os Ambientes
Operacionais: Texto e Gráfico
Noções de Programação Orientada ao
Operandos e Operadores
Tipos de Algoritmos
Formas de Representação
Algoritmos Naturais e Estruturados
Diferença Entre Sistemas Operacionais............................................................................ 9
O q u e é u m E ve n t o ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0
Como são Desencadeados os Eventos? ......................................................................... 10
Tabela Verdade
Quem Gerencia os Eventos? ......................................................................................... 11
O que é uma Classe de Objeto? .................................................................................... 11
Conceito de Programação Estruturada
Algoritmos: Definição e utilização
Lógica de programação .................................................................................................. 8
Paradigma da Programação Orientada a Eventos/Objetos................................................. 10
Comando de Atribuição
Definir o Conceito ERES
Lógica ......................................................................................................................... 7
P r o g r a m a ç ã o O r i e n t a d a a o O b j e t o ( P O O ) e p r o g r a m a ç ã o O r i e n t a d a a o E ve n t o ( P O E ) . . . . . . . . 1 0
Expressões
Objeto e ao Evento
e Modular
S o f t wa r e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
O que é um Objeto? .................................................................................................... 11
Inicio de Estruturas
Como utilizar objetos ................................................................................................... 12
Conceituação
Programação estruturada .............................................................................................. 13
Estrutura Seqüencial
Al g o r i t m o s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 4
O que é um Algoritmo? ................................................................................................ 14
Estrutura de Seleção Simples
Formas de Representação de um Algoritmo .................................................................... 14
Estrutura de Seleção Composta
V a n t a g e n s e D e s va n t a g e n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 5
Algoritmos naturais ..................................................................................................... 16
Estrutura de Seleção Múltipla
Algoritmo Natural Comparado com Algoritmo Estruturado ................................................. 17
Estruturas de Repetição
E l e m e n t o s U s a d o s n o s Al g o r i t m o s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 8
Algoritmos
Contador Fixo e Flag
Constantes ................................................................................................................... 19
Constantes e Variáveis
Como usar o ILA e o Editor Q (Qedit)
V a r i á ve i s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0
Elementos usados na construção de
Expressões .................................................................................................................. 21
Operandos e Operadores ............................................................................................... 22
Operandos ................................................................................................................. 22
Operadores ................................................................................................................ 22
Estruturas de Controle .................................................................................................. 25
Estrutura Seqüencial ................................................................................................... 25
Estrutura de Seleção ................................................................................................... 25
Estrutura de Seleção Simples ....................................................................................... 26
Estrutura de Seleção Composta .................................................................................... 27
Estrutura de Seleção Múltipla ....................................................................................... 28
LÓGICA
DE
PROGRAMAÇÃO
3
LÓGICA
DE
PROGRAMAÇÃO
4
Estrutura de Repetição ................................................................................................ 31
C ONCEITOS I NICIAIS
Estrutura Faca Enquanto .............................................................................................. 31
Estrutura para proximo ................................................................................................ 33
Exemplo de repetição por contador fixo ......................................................................... 34
Exemplo de repetição por flag de resposta ..................................................................... 35
Exemplo de repetição por flag predeterminado ................................................................ 36
Procedimentos e Funções ............................................................................................. 42
Modularização ............................................................................................................ 42
Módulo ...................................................................................................................... 42
Diferença entre Procedimento e Função ......................................................................... 44
Procedimentos com Parâmetros .................................................................................... 44
Passagem de parâmetros ............................................................................................. 44
Exemplos de Procedimento e Função ............................................................................. 46
Recursividade ............................................................................................................. 47
Vetores e Matrizes ........................................................................................................ 48
Desde os primórdios, o homem vem tentando resolver seus problemas com
maior rapidez e o menor esforço possíveis, procurando automatizar as tarefas
rotineiras. Isso possibilitou o aparecimento de instrumentos como a roda, roldana,
alavanca, carro e até o computador.
No entanto as tarefas que devem ser realizadas pelo computador, de forma
automática, têm de ser anteriormente pensadas e colocadas em uma seqüência
de ações para, posteriormente, serem inseridas na máquina. A essa seqüência de
ações denomina-se Programa e à fase de formular soluções que gerem
programas denomina-se Lógica de Programação.
Programar é basicamente Construir Algoritmos.
A meta principal de qualquer programador é resolver problemas por meio de
soluções lógicas para obter resultados eficientes (corretos) e eficazes (com
qualidade). Porém, se as soluções não forem bem planejadas (passo a passo),
com certeza essa meta não será atingida.
Antes de iniciar o estudo de Lógica de Programação, conheça alguns
conceitos básicos:
O que são Vetores e Matrizes ....................................................................................... 48
Al g o r i t m o s p a r a M a n i p u l a r V e t o r e s e M a t r i z e s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 0
Considerações Finais.................................................................................................... 51
Ap ê n d i c e 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2
Exemplo de Algoritmo para Ordenar um Vetor ................................................................. 52
Ap ê n d i c e 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3
SOFTWARE
Software é o conjunto dos programas que comandam o funcionamento do
Hardware. Programas são feitos a partir de algoritmos (objeto de estudo deste
curso), seqüências de instruções/comandos para se atingir um objetivo.
Depois de pronto, o algoritmo é convertido para uma linguagem de
programação. O produto dessa conversão é um programa.
C o m a n d o s d o I n t e r p r e t a d o r d a L i n gu a g e m d o s A l g o r i t m o s ( i l a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3
Exercícios de Raciocínio Lógico .................................................................................... 55
E x e r c í c i o s c o m Al g o r í t m o s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
5
LÓGICA
DE
PROGRAMAÇÃO
6
LÓGICA
As pessoas utilizam a lógica no cotidiano sem perceber; chegam mesmo a
citá-la, sem entender direito o seu significado.
Segundo o dicionário Aurélio, a lógica é a “coerência de raciocínio, de
idéias”, ou ainda a “seqüência coerente, regular e necessária de acontecimentos,
de coisas”.
Você pode perceber isso, nos exemplos a seguir:
O número 3 é menor que o número 5.
O número 7 é maior que o número 5.
Logo, o número 3 é menor que os números 5 e 7.
Quando chove, não é preciso regar as plantas do jardim.
Hoje choveu.
Você conseguiria retirar o dinheiro? Com certeza não, pois, embora as ações
estejam corretas, a seqüência está errada. A primeira ação é sair do banco.
Como se pode retirar dinheiro de um banco estando fora dele? Agora observe as
mesmas ações na seqüência correta.
1
2
3
4
5
6
7
8
9
10
Entrar no banco.
Procurar a fila do caixa.
Entrar na fila do caixa.
Aguardar a vez de ser atendido.
Entregar o cartão eletrônico ao funcionário que atende no caixa.
Informar o valor a ser retirado.
Digitar a senha.
Pegar o comprovante de saque, o cartão eletrônico e o dinheiro.
Conferir o valor em dinheiro.
Sair do banco
Utiliza-se a lógica para ordenar e corrigir pensamentos ou ações voltados
para a solução de problemas.
Logo, hoje não é preciso regar as plantas do jardim.
O Brasil fica na América do Sul.
A América do sul fica no continente americano.
LÓGICA DE PROGRAMAÇÃO
Logo, os brasileiros são americanos.
Falar em Lógica de Programação significa apenas contextualizar a lógica
na programação de computadores, buscando a melhor seqüência de ações para
solucionar determinado problema.
Às vezes o raciocínio funciona desordenadamente. Quantas vezes você já
ouviu as frases: “E se acontecer aquilo?”, ou “É, mas eu não tinha pensado
nisso!”
Neste exemplo, estão descritas ações de quem vai a um banco; entretanto,
veja se seria possível retirar o dinheiro obedecendo à seqüência descrita.
1
2
3
4
5
6
7
8
9
10
Na programação de computadores, o nome dessa seqüência de ações é
Algoritmo, que é, de maneira bem simples, a seqüência de passos ou ações para
atingir um objetivo.
Já ação é um fato que, a partir de um estado inicial, após um período de
tempo finito, produz um estado final previsível e definido. Por exemplo, abrir uma
porta é uma ação.
Sair do banco.
Aguardar a vez de ser atendido.
Entrar na fila do caixa.
Digitar a senha.
Entrar no banco
Informar o valor a ser retirado.
Procurar a fila do caixa.
Pegar o comprovante de saque, o cartão eletrônico e o dinheiro.
Entregar o cartão eletrônico ao funcionário que atende no caixa.
Conferir o valor em dinheiro.
No exemplo acima você pode observar que, ao objeto (porta), no estado
inicial (porta fechada), é aplicada a ação (abrir) por um tempo determinado
(segundos), levando ao estado final (porta aberta), previsível e definido (pois é
esperado que, quando se abre algo, principalmente qualquer porta, no final, ela
esteja aberta).
OBJETIVO
.......................................................................................................
.....................................................................................................................
O objetivo deste curso é proporcionar a apropriação de conhecimentos
capazes de reconhecer, utilizar e saber a finalidade e o funcionamento das
técnicas, ferramentas e elementos utilizados na construção de algoritmos para
que possamos ordenar, desenvolver e aprimorar o raciocínio lógico aplicado na
solução de problemas do cotidiano.
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
7
LÓGICA
DE
PROGRAMAÇÃO
8
D IFERENÇA E NTRE S ISTEMAS O PERACIONAIS
O Sistema Operacional no ambiente Texto, o DOS, entre outros, tem como
lógica a trilogia C.O.D. - Comando, Origem e Destino.
Exemplo:
O Sistema Operacional no ambiente Gráfico, o Windows, entre outros, tem
como lógica a trilogia O.E.A. - Objeto, Evento e Ação.
É necessário existir um Objeto (ex. Um botão), um Evento (ex. Um clique
neste botão), para executar uma Ação (ex. Abrir outra Janela).
.......................................................................................................
P ROGRAMAÇÃO
O RIENTADA
PROGRAMAÇÃO O RIENTADA AO
AO
O BJETO
E VENTO (POE).
(POO)
E
PARADIGMA DA PROGRAMAÇÃO ORIENTADA A EVENTOS/OBJETOS
Neste paradigma, o controle de fluxo de dados é criado a partir da
elaboração da Interface, onde o sistema operacional envia mensagens ao
aplicativo informando quando algum Evento ocorre e sobre qual Objeto. A partir
desta mensagem é verificada a existência de Código para tratar o Evento; se
houver, este é executado.
Assim, a ordem através da qual o seu Código de programa é executado
depende de quais Eventos ocorram.
Por essa razão, costuma-se dizer que quem controla a execução do sistema
é o Usuário, pois, invariavelmente, o evento será disparado por ele.
A Programação Orientada ao Objeto (POO) contém a Programação Orientada
ao evento (POE), porém a POE não existe sem a POO. Podemos ter um objeto e
não ter nenhum evento associado a ele, porém não podemos ter um evento sem
existir um objeto.
.....................................................................................................................
O QUE É UM E VENTO ?
.....................................................................................................................
Um evento é um acontecimento, algo que acontece ou se faz acontecer
sobre um Objeto da aplicação. Um acontecimento que o objeto pode reconhecer.
.....................................................................................................................
.....................................................................................................................
COMO SÃO DESENCADEADOS OS EVENTOS?
.....................................................................................................................
Através de ações de Usuários interagindo com o programa, por um outro
programa requisitando uma troca de dados, ou pelo próprio Windows.
.....................................................................................................................
Mexer e clicar botões do mouse, pressionar teclas no teclado, são ações que
desencadeiam eventos. Exemplos de eventos: Click, MouseMove, Keypress.
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
9
LÓGICA
DE
PROGRAMAÇÃO
10
QUEM GERENCIA OS EVENTOS?
Os eventos são gerenciados
(ambiente) operacional gráfico.
COMO UTILIZAR OBJETOS
pelo
próprio
programa
ou
pelo
sistema
Os objetos são utilizados através da manipulação de suas Propriedades,
Métodos e Eventos, definidos assim:
Exemplo de fluxograma:
Desta forma, para alterarmos a cor de fundo de um formulário, devemos
alterar o valor da propriedade BackColor, com o valor correspondente à cor
desejada. Ex: Red
Se quisermos exibir (ação) um formulário (janela), temos que utilizar o
Método Show. Ex: Form1.Show
Por fim, se quisermos emitir um Beep toda vez que o usuário movimenta o
mouse sobre o formulário, devemos escrever um código para o Evento do Objeto
que reconhece este movimento, neste caso o evento MouseMove.
O QUE É UMA CLASSE DE OBJETO?
Vantagens na utilização de objetos
Uma Classe Objeto é um modelo de como o objeto será ao ser criado, ou
seja, de onde este é derivado. A classe é composta por Código e Dados
formando uma unidade.
Exemplos de classes:
A primeira vantagem é a redução no número de linhas de código. Imagine
você ter que criar uma janela que permita a configuração de Impressora, em vez
de criá-la e escrever centenas de linhas de código, você pode utilizar o objeto
CommonDialogControl fornecido pela linguagem.
Outra vantagem é a possibilidade da utilização de objetos desenvolvidos
por terceiros, ou objetos criados por você mesmo, em qualquer aplicação.
.......................................................................................................
O QUE É UM OBJETO?
.....................................................................................................................
Um Objeto é uma instância de uma classe. Quem utiliza um objeto não
precisa saber como este foi construído, mas, como interagir com ele; nem como o
objeto executa um cálculo, mas como chamar a função que o executa e definir
valores aos seus parâmetros.
.....................................................................................................................
Desta forma um objeto da classe CommandButton (Command1) só existirá
quando desenharmos este em um formulário, neste instante cria-se uma instância
desta classe, o objeto Command1.
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
11
LÓGICA
DE
PROGRAMAÇÃO
12
P ROGRAMAÇÃO ESTRUTURADA
A LGORITMOS
Na programação estruturada a arquitetura e do tipo Top to Dow n. Isto é, de
cima para baixo. Efetua a execução do Código do início até o fim.
O QUE É UM ALGORITMO?
Na programação modular o programa é feito por módulos (rotinas), sendo
que o conjunto desses formam o programa num todo.
Um Algoritmo é uma seqüência finita de instruções bem claras, bem
definidas e bem detalhadas que, quando colocadas em uma ordem lógica, nos
levam a solução de um problema.
Este tipo de programação é que vai formar o Código a ser escrito para cada
Evento verificado.
Os conhecimentos de Programação Estruturada e Modular, que será o objeto
deste curso servem para elaborarmos os algoritmos e escrevermos os códigos
nos procedimentos e funções a serem implementados, e executados quando for
disparado um evento na Programação Orientada ao Objeto/Evento.
E T AP AS P AR A A S O L U Ç Ã O D E P R O B L E M AS .
1
2
3
4
5
6
7
Planejamento Geral (O Que deve ser feito).
Planejamento Detalhado (Como deve ser feito?)
Revisão (Teste de mesa). Verificar se Como decidimos fazer, tem
como resultado o Que deve ser feito.
Codificação.
Compilação ou Interpretação.
Teste do Programa.
Documentação.
Ao elaborar um programa, devemos em primeiro lugar deixar bem claro, o
Que precisa ser feito e, logo após, definirmos as maneiras possíveis de se chegar
ao resultado desejado (Como?).
Não existe uma única solução para um problema, dentre as soluções
encontradas devemos escolher a que mais satisfaça ao conceito E. R. E. S., ou
seja:
E – Eficácia, o programa deve fazer o que deve ser feito. Não confundir
com eficiência que significa fazer bem feito. Um programa pode ser
bem feito, mas não oferecer a solução para o problema proposto.
Os Algoritmos independem da linguagem de programação a ser utilizada. O
objetivo da construção de Algoritmos é que eles possam ser adaptados a
qualquer linguagem de programação.
Não existe apenas um Algoritmo para a solução de um problema.
Um Algoritmo pode ser numérico ou não.
Um Algoritmo pode ter tantas entradas e saídas de dados, quantas forem
necessárias, pode até não ter entradas, mas obrigatoriamente deverá ter pelo
menos uma saída de dados que é o resultado do processamento.
FORMAS DE REPRESENTAÇÃO DE UM ALGORITMO
Temos 3 (três) formas de representar um algoritmo:
•
PSEUDOCÓDIGO (OU PORTUGUÊS ESTRUTURADO, OU PORTUGOL).
•
FLUXOGRAMA
•
DIAGRAMA DE CHAPIN
P S E U D O C Ó D I G O : As estruturas lógicas são escritas numa linguagem próxima
ao português, na seqüência em que são executadas.
F L U X O G R AM A : Nesta forma de representação as estruturas lógicas são
expressas através de figuras geométricas, interligadas por setas que indicam o
caminho a ser seguido.
R – Rapidez, dentre as várias soluções encontradas para o mesmo
problema, devemos escolher a que seja mais rápida em termos de
execução.
E – Economia. Também devemos escolher a solução mais econômica
em termos de utilização de memória principal e memória de
armazenamento.
S – Segurança. O programa deve prever e tratar possíveis erros do
usuário. Exemplo: se pedirmos para digitar o Sexo (M/F), o
programa não deve deixar que o usuário digite qualquer outra letra
que não sejam o M ou o F.
Para elaborar a solução de um problema usamos os Algoritmos.
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
13
LÓGICA
DE
PROGRAMAÇÃO
14
D I AG R AM A D E C H AP I N : As estruturas lógicas são representadas por figuras
retangulares, colocadas uma após a outra, de cima para baixo.
ALGORITMOS NATURAIS
Algoritmos naturais são usados para linguagens mais antigas que não são
estruturadas e nem modulares, como Fortran, Basic, Cobol (antes de ter o
comando Perform), etc...
Esse tipo de algoritmo utiliza comandos de retorno ou avanço (instrução GO
TO), do fluxo para determinada linha do algoritmo.
Com o surgimento das linguagens de programação estruturadas e modulares
esse tipo de algoritmo se tornou obsoleto.
As linguagens estruturadas não possuem mais os comandos de retorno ou
avanço (instrução GO TO), para uma determinada linha do algoritmo, a própria
estrutura é que define o retorno ou avanço do fluxo.
VANTAGENS E D ESVANTAGENS
PSEUDOCÓDIGO:
EXEMPLO
DE ALGORITMO NATURAL
•
Fácil de compreender.
•
Fácil de ler e converter para programação.
•
Melhor para representar programas maiores.
Passo 1 – Sair de casa.
•
É estruturado.
Passo 2 – Ir até o banco.
Algoritmo para retirar a devolução do Imposto de Renda.
INICIO
Passo 3 – dirigir-se ao balcão.
F L U X O G R AM A :
Passo 4 – Já chegou a devolução do Imposto de Renda?
•
Fácil de compreender.
Passo 5 – Sim: vá para o passo 12.
•
Bom para construir e visualizar pequenos programas.
Passo 6 – Não: Voltar para casa.
•
Difícil de desenhar quando o programa fica muito grande.
Passo 8 – Esperar um dia.
•
Não é estruturado.
Passo 9 – É sábado, domingo ou feriado?
Passo 10 – Sim: vá para o passo 8.
D I AG R AM A D E C H AP I N :
Passo 11 – Não: vá para o passo 1.
•
Fácil de compreender, ler e converter para a programação.
Passo 12 – Retirar o dinheiro.
•
É estruturado.
Passo 13 – Voltar para casa.
•
Bom para visualizar pequenos programas.
•
Difícil de desenhar quando o programa fica muito grande.
FIM
Observação: Neste curso usaremos algoritmos com a forma de representação Pseudocódigo.
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
15
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
16
ALGORITMO NATURAL COMPARADO COM ALGORITMO ESTRUTURADO
E LEMENTOS U SADOS NOS A LGORITMOS
Desafio: ler dez valores numéricos, mostrar os valores lidos e no final mostrar a
soma dos números digitados.
1
ALGORITMO NATURAL
INICIO
CONSTANTES:
ALGORITMO ESTRUTURADO
VARIAVEIS
Passo 1 – Ler N
Passo 2 – Escrever N
1.1
Numérico;
1.2
Data;
1.3
Lógica;
1.4
Caracter (texto, literal, string)
NUMERICO N, S, C
2
INICIO
Passo 3 – S = S + N
VARIÁVEIS:
FACA ENQUANTO C<10
2.1
Numérico;
Passo 4 – C = C + 1
LER N
2.2
Data;
Passo 5 – C < 10?
ESCREVER N
2.3
Lógica;
Passo 6 – Sim: vá para o passo 1
S = S + N
2.4
Caracter (texto, literal, string)
Passo 7 – Não: vá para o passo 8
C = C + 1
Passo 8 – Escrever “Soma =“,S
FIM_ENQUANTO
FIM
3
EXPRESSÕES:
ESCREVER “Soma =“,S
FIM
Na construção de algoritmos, utilizamos diversos elementos. Entre eles
podemos citar valores informados ao programa (pelo teclado ou lidos de um
disco), comandos para armazenar valores, expressões, estruturas, e etc.
3.1
Operandos;
3.2
Operadores;
4
COMANDO DE ATRIBUIÇÃO:
5
ESTRUTURAS:
5.1
Veremos a seguir quais são esses elementos, quando usar, para que usar e
como eles funcionam dentro de um algoritmo.
5.2
5.3
Seqüencial;
Seleção;
5.2.1
Simples;
5.2.2
Composta;
5.2.3
Múltipla;
Repetição;
.......................................................................................................
5.3.1
Contador fixo;
.....................................................................................................................
5.3.2
Flag;
.....................................................................................................................
5.3.2.1
De resposta;
5.3.2.2
Predeterminado;
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
17
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
18
C ONSTANTES
VARIÁVEIS
C O N S T AN T E S : são valores utilizados no processamento, mas que não
sofrerão alterações durante o mesmo. Exemplos: nomes, datas de nascimento,
números de funcionários, nomes de cidades, etc.
V AR I Á V E I S : Não são valores. Variáveis são endereços de memória (Ram) que
armazenam temporariamente valores. Esses endereços recebem um rótulo, que é
o nome da variável, e um conteúdo. Cada vez que mencionamos o nome da
variável, é manipulado o seu conteúdo.
As constantes podem ser dos seguintes tipos:
N U M É R I C O : Quando começam por um número, um sinal ou um parêntese,
todos os demais caracteres são apenas números, com apenas uma exceção, que
é o separador decimal (dependendo da linguagem, pode ser o ponto ou a vírgula).
Exemplos: 123, 34,75, (567), -512, etc.
D AT A : Quando tiver um formato conhecido de data. Os mais comuns são:
dd/mm/aa, dd/mmm/aa, dd/mm/aaaa, dd/mmm/aaaa, dd/mm, dd/mmm, mm/aa,
mmm/aa, mm/aaaa, mmm/aaaa.
Observação: Podemos imaginar uma variável como sendo uma gaveta em um
armário (endereço de memória Ram), onde guardamos alguma
coisa (conteúdo), prego, por exemplo. Para identificar esta gaveta
colocamos uma etiqueta (rótulo), com o nome de prego (nome da
variável). Quando queremos pregos temos que abrir a gaveta que
tem o rótulo prego e pegar o seu conteúdo.
L Ó G I C A : (Booleanas). São os valores que correspondem às quatro letras ou
palavras lógicas correspondentes: T (True), F (False), Y (Yes), N (No).
Os nomes das variáveis devem sempre começar por uma letra, não devem
ter espaços em branco e nem caracteres especiais, no máximo o símbolo
sublinhado. Exemplos: Nome_cli, Num_func, Datanasc, etc.
C AR AC T E R : (Texto, Literal ou String). São reconhecidas pela exclusão, ou
seja, tudo que não for reconhecido como numérico, data ou lógico, é do tipo
caracter.
As variáveis são declaradas no início do algoritmo. Dependendo do valor a
ser armazenado, as variáveis poderão ser dos tipos: Numérico, Data, Lógico ou
Caracter (texto, literal ou string).
Os valores armazenados nas variáveis permanecem até que:
•
O computador seja desligado (normal ou por falta de energia), visto que são armazenados
na memória Ram;
.......................................................................................................
•
Por término do programa ou rotina onde foram criadas;
.....................................................................................................................
•
Seja atribuído um novo valor para a mesma variável.
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
Observação: Só podemos armazenar um valor de cada vez em uma variável. Ao
atribuirmos um novo valor que deve ser do mesmo tipo, o valor
anterior será sumariamente eliminado.
Exemplo: Se escrevermos A=5, o valor cinco será o conteúdo da variável A.
Se mais adiante escrevermos A=20, o valor vinte passa a ser o novo conteúdo da
variável A, e o valor anterior, cinco, será eliminado.
Escopo: (abrangência), as variáveis, dependendo da linguagem, podem ser
Públicas (Public) ou Globais (Global) e Privadas (Private) ou Locais (Locals).
.....................................................................................................................
Observação: As variáveis Públicas ou Globais são vistas por todos os
.....................................................................................................................
módulos do programa, e as Locais ou Privadas somente nas
rotinas onde são criadas.
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
19
LÓGICA
DE
PROGRAMAÇÃO
20
E XPRESSÕES
O PERANDOS E O PERADORES
Expressão: é qualquer instrução de manipulação de dados.
OPERANDOS
As expressões podem ser:
A R I T M É T I C AS : Nesse tipo de expressão só podemos utilizar operadores,
constantes e variáveis do tipo numérico, e o resultado será sempre um valor
numérico. Exemplo 3+2, A*B.
R E L AC I O N AI S : Nesse tipo de expressão realizamos uma comparação entre
dois ou mais operandos do mesmo tipo, utilizando operadores relacionais e o
resultado será sempre um valor lógico (verdadeiro ou falso). Exemplo: 10>5, A<B.
L Ó G I C AS : É a união de duas ou mais expressões relacionais utilizando
operadores lógicos, e o resultado também será sempre um valor lógico
(verdadeiro ou falso). Exemplo: A>B E 10>5, Cidade = “Canoas” OU Cidade =
“Porto Alegre”.
São os elementos que serão manipulados.
Como operandos podemos utilizar:
C O N S T AN T E S : Exemplo: 15+25, 345/5, 12,35*20;
V AR I Á V E I S : Exemplo: A-B, X/Y, HT*SH;
F U N Ç Õ E S D A L I N G U AG E M : Exemplo: PI()*Cos(x)+Raiz(256,2)
Observações: Linguagens aplicativas mais específicas como as Planilhas
Eletrônicas e os Gerenciadores de Bancos de Dados podem
utilizar como operandos as referências a células (Exemplo:
A3*B5) ou os campos do Banco de dados (Exemplo:
Horas_Trab*Sal_Hora).
OPERADORES
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
São símbolos ou palavras que indicam o tipo de manipulação e também
determinam de que tipo é a expressão.
Os operadores se dividem em três grupos:
ARITMÉTICOS:
.....................................................................................................................
• Adição: +
.....................................................................................................................
• Subtração: • Multiplicação: *
.....................................................................................................................
• Divisão: /
• Exponenciação: ^
.....................................................................................................................
.....................................................................................................................
Observação:
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
Os operadores aritméticos mantêm a mesma prioridade
matemática, ou seja: em primeiro lugar são executadas as raízes
e exponenciações, logo a seguir, as multiplicações e divisões, e,
por último, as somas e subtrações. Em caso de empate de
prioridades, o cálculo é efetuado sempre da esquerda para a
direita. Para alterar a prioridade dos operadores, usamos
parênteses.
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
21
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
22
R E L AC I O N AI S
Veja o exemplo da tabela verdade abaixo:
• Igualdade: =
• Maior do que: >
• Menor do que: <
• Maior ou igual a: >=
• Menor ou igual a: <=
• Diferente: <>
Observações: Entre os operadores relacionais não existem prioridades, sempre são
executados da esquerda para a direita, à medida que forem aparecendo.
Comando de atribuição
O comando de atribuição serve para colocar um valor (conteúdo) dentro de
uma variável.
L Ó G I C O S (Booleanos)
O comando de atribuição, dependendo da linguagem, pode ser:
•
N AO
•
E
•
OU
←
=
:=
Exemplo: A = 15 ou A ←15
ou A := 15
Em qualquer dos casos estamos colocando o valor 15 como conteúdo da
variável A.
Neste curso utilizaremos como comando de atribuição o sinal de =.
Observação: Nos operadores lógicos o E tem prioridade sobre o OU.
Os operadores lógicos igualmente chamados de Booleanos utilizam a álgebra
de Boole, ou álgebra Booleana, também denominada Tabela Verdade.
O operador N AO é um inversor de resultados, isto é, se o resultado da
expressão for verdadeiro transforma em falso e vice-versa.
Exemplo: 50>30, resultado verdadeiro. N AO (50>30), resultado falso.
.......................................................................................................
.....................................................................................................................
Usando o operador E , o resultado final só será verdadeiro se o resultado de
todas as condições forem verdadeiras, qualquer outra hipótese, o resultado será
falso.
.....................................................................................................................
Usando o operador O U , o resultado final só será falso se o resultado de
todas as condições forem falsas; qualquer outra hipótese, o resultado será
verdadeiro.
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
23
LÓGICA
DE
PROGRAMAÇÃO
24
ESTRUTURA DE SELEÇÃO SIMPLES
E STRUTURAS DE C ONTROLE
As estruturas de controle servem para direcionar o fluxo do processamento.
As estruturas de controle podem ser:
Na estrutura de Seleção Simples, somente teremos uma ação se o resultado
da condição for Verdadeiro, caso o resultado seja falso não há ação a ser
executada.
As palavras chaves de uma estrutura de Seleção Simples são:
ESTRUTURA SEQÜENCIAL
A estrutura seqüencial, como diz o próprio nome, é uma seqüência de
instruções que se sucedem uma após a outra sem desvios ou interrupções. Este
tipo de estrutura não possui palavras chaves, é composta somente por linhas de
comandos sucessivas e está sempre limitada pelo início e fim do algoritmo ou
pelo inicio e fim de uma outra estrutura.
Exemplo: Ler o nome e duas notas de um aluno, calcular a média e mostrar
o nome do aluno, as duas notas e a média calculada.
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
FIM
Exemplo: Ler o nome e duas notas de um aluno, calcular a média e mostrar
o nome do aluno, as duas notas, a média calculada e as palavras Aluno
Reprovado, caso a média seja menor do que sete.
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2, M
SE M < 7 ENTAO
ESCREVER “ALUNO REPROVADO”
FIM_SE
FIM
ESTRUTURA DE SELEÇÃO
Devemos utilizar uma estrutura de seleção. Sempre que para executar
alguma ação dependa do resultado de uma condição, isto é, no que temos que
fazer existe uma condicionante.
Observação: Conforme o que devemos fazer, de acordo com o resultado da
condição, a estrutura de seleção pode ser de três tipos diferentes:
Seleção Simples, Seleção Composta ou Seleção Múltipla.
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
LÓGICA
DE
PROGRAMAÇÃO
25
DE
PROGRAMAÇÃO
26
ESTRUTURA DE SELEÇÃO COMPOSTA
ESTRUTURA DE SELEÇÃO MÚLTIPLA
Na estrutura de Seleção Composta, será executado um comando ou um
grupo de comandos, caso o resultado da condição seja Verdadeiro e outro
comando ou outro grupo de comandos diferentes, se o resultado da condição for
Falso.
A Estrutura de Seleção Múltipla é utilizada quando devemos fazer vários
testes em uma mesma variável ou testar o valor de uma variável dependendo do
teste do valor de outra variável.
Observação: A estrutura de Seleção Múltipla pode ser construída com
As palavras-chave de uma estrutura de Seleção Composta são:
Estruturas de Seleção Composta encadeadas (aninhadas), ou
pela estrutura Faca Caso.
Utilizando Estruturas de Seleção Composta encadeada, para
Seleção Múltipla podemos fazer o encadeamento das seguintes formas:
fazer
a
Encadeamento, somente se o resultado da primeira condição for verdadeiro.
Observação: Se o resultado da condição for Verdadeiro será executado tudo
que estiver entre as palavras E N T AO e S E N AO , sendo ignorado o
que tudo que estiver após a palavra S E N AO , porem se o resultado
da condição for Falso, será desprezado tudo que estiver entre as
palavras E N T AO e S E N AO , sendo executado apenas o que estiver
entre as palavras S E N AO e F I M _ S E .
Exemplo: Ler o nome e duas notas de um aluno, calcular a média e mostrar
o nome do aluno, as duas notas, a média calculada e as palavras Aluno
Reprovado, caso a média seja menor do que sete e Aluno Aprovado em caso
contrário.
Encadeamento somente se o resultado da primeira condição for falso.
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
SE M < 7 ENTAO
ESCREVER “ALUNO REPROVADO”
SENAO
ESCREVER “ALUNO APROVADO”
FIM_SE
FIM
LÓGICA
DE
PROGRAMAÇÃO
27
LÓGICA
DE
PROGRAMAÇÃO
28
Um encadeamento se o resultado da primeira condição seja verdadeiro, e
outro encadeamento, caso o resultado da primeira condição seja falso.
SELEÇÃO MÚLTIPLA
COM
ESTRUTURA
DE
FACA CASO:
As palavras-chave da estrutura Faca Caso são:
Observação: Para a solução do próximo exemplo, usaremos uma solução com
estrutura de Seleção Composta encadeada e outra solução
utilizando a estrutura Faca Caso.
Exemplo: Ler o estado civil de uma pessoa como valor numérico, sendo que
1 corresponde a Solteiro, 2 a Casado e 3 para Outros. Testar estes valores
levando-se em conta que o usuário pode digitar errado e escrever o estado civil
em caracteres.
.......................................................................................................
SOLUÇÃO UTILIZANDO ESTRUTURA
DE
SELEÇÃO COMPOSTA ENCADEADA:
VARIAVEIS
NUMERICO EC
INICIO
EC = 0
ESCREVER “Digite o estado civil (1 – solteiro, 2 – casado, 3 – outros)”
LER EC
SE EC = 1 ENTAO
ESCREVER “Solteiro”
SENAO
SE EC = 2 ENTAO
ESCREVER “Casado”
SENAO
SE EC = 3 ENTAO
ESCREVER “Outros”
SENAO
ESCREVER “Valor inválido”
FIM_SE
FIM_SE
FIM_SE
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
29
LÓGICA
DE
PROGRAMAÇÃO
30
SOLUÇÃO UTILIZANDO ESTRUTURA
DE
Nesse tipo de construção a rotina só entra na estrutura caso a condição seja
verdadeira, senão a estrutura é ignorada. Entrando na estrutura, o programa
executa tudo que estiver contido entre as palavras Faca Enquanto e
Fim_Enquanto. Quando é encontrada a palavra Fim_Enquanto, a rotina retorna
ao início da estrutura e testa novamente a condição, enquanto a condição for
verdadeira continua repetindo.
FACA CASO:
VARIAVEIS
NUMERICO EC
INICIO
EC = 0
ESCREVER “Digite o estado civil (1 – solteiro, 2 – casado, 3 – outros)”
LER EC
FACA CASO
CASO EC = 1:
ESCREVER “Solteiro”
CASO EC = 2:
ESCREVER “Casado”
CASO EC = 3:
ESCREVER “Outros”
OUTRO_CASO:
ESCREVER “Valor inválido”
FIM_CASO
Para que possamos entender melhor o funcionamento desta estrutura, vamos
observar os exemplos a seguir:
ESTRUTURA DE REPETIÇÃO
Uma Estrutura de Repetição deve ser usada sempre que uma rotina tenha
que ser executada mais do que uma vez durante o mesmo processamento.
As repetições podem ser feitas por Contador Fixo, ou seja, a rotina vai ser
repetida sempre um número fixo de vezes. Por Flag de Resposta, onde a cada
volta do laço perguntamos ao usuário se ele quer continuar ou não, se a resposta
for sim à rotina, segue repetindo; e se for não, a rotina termina. Ainda podemos
fazer a repetição por Flag Predeterminado, isto é, determinamos que quando o
usuário pressionar um determinado conjunto de teclas ou um determinado valor
para conteúdo de uma variável, a rotina termina.
Para construir a estrutura de repetição, podemos utilizar dois tipos de
estruturas: a estrutura FACA ENQUANTO ou a estrutura PARA PROXIMO, sendo
que a estrutura FACA ENQUANTO serve tanto para repetições por Contador Fixo
como para, repetições por Flag. A estrutura de PARA PROXIMO só serve para
repetições por Contador Fixo.
ESTRUTURA FACA ENQUANTO
A seguir outro tipo de construção para repetições com a estrutura PARA
PROXIMO.
As palavras-chave da estrutura FACA ENQUANTO são:
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
31
LÓGICA
DE
PROGRAMAÇÃO
32
ESTRUTURA PARA PROXIMO
EXEMPLO DE REPETIÇÃO POR CONTADOR FIXO
As palavras chave da estrutura PARA PROXIMO são:
Desafio: Ler o nome do aluno e duas notas para uma turma de 15 alunos,
calcular a média e mostrar o nome as duas notas e a média de cada aluno.
SOLUÇÃO
UTILIZANDO A ESTRUTURA FACA ENQUANTO
VARIAVEIS
NUMERICO N1, N2, M, C
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
C=0
ESCREVER “DIGITE O NOME, N1, N2”
FACA ENQUANTO C < 15
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2, M.
C=C+1
FIM_ENQUANTO
FIM
Neste tipo de construção a rotina sempre entra na estrutura a primeira vez,
visto que no inicio da estrutura temos uma atribuição: VAR = VI (valor inicial),
repete tudo que estiver dentro da estrutura até encontrar a palavra PROXIMO.
Quando encontra a palavra PROXIMO, pega o valor do passo, soma na variável
de controle e faz um teste com o valor final (VF), enquanto o valor da variável de
controle não for maior do que o valor final (VF), continua repetindo.
Observação: O PASSO é opcional, quando não colocado assume por padrão o valor 1 (um).
Este tipo de Estrutura é mais utilizado para trabalhar com Vetores e
Matrizes, como veremos na última parte da apostila.
Vamos observar o exemplo a seguir para melhor entender o funcionamento
da estrutura PARA PROXIMO.
SOLUÇÃO
UTILIZANDO A ESTRUTURA PARA PROXIMO
VARIAVEIS
NUMERICO N1, N2, M, C
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
C=0
ESCREVER “DIGITE O NOME, N1, N2”
PARA C = 1 ATE 15
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
PROXIMO
FIM
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
33
LÓGICA
DE
PROGRAMAÇÃO
34
EXEMPLO DE REPETIÇÃO POR FLAG DE RESPOSTA
EXEMPLO DE REPETIÇÃO POR FLAG PREDETERMINADO
Desafio: Ler o nome e duas notas para os diversos alunos, calcular a média
e mostrar o nome, as duas notas e a média de cada aluno. Após processar cada
aluno, perguntar ao usuário se deseja continuar. Enquanto o usuário responder
sim (S), o programa continua; se a resposta for não (N), o programa termina.
Problema: Ler o nome e duas notas para uma turma de alunos, calcular a
média e mostrar o nome, as duas notas e a média de cada aluno. O programa irá
terminar quando o usuário digitar a palavra “FIM”, como conteúdo da variável
Nome, em vez de um nome válido.
Observação: Para repetições usando como controle o Flag, só poderemos utilizar a estrutura
Observação: Predeterminamos que quando o usuário digitar a palavra FIM no
lugar do nome de um aluno, o programa irá terminar.
FACA ENQUANTO.
Solução:
Solução:
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME, CF
INICIO
N1 = 0
N2 = 0
M=0
CF = “S”
ESCREVER “DIGITE O NOME, N1, N2”
FACA ENQUANTO CF = “S”
LER NOME
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
ESCREVER “DESEJA CONTINUAR (S/N)?”
LER CF
FIM_ENQUANTO
FIM
VARIAVEIS
NUMERICO N1, N2, M
CARACTER NOME
INICIO
N1 = 0
N2 = 0
M=0
ESCREVER “DIGITE O NOME (FIM PARA SAIR), N1, N2”
NOME = “ “
FACA ENQUANTO NOME <> “FIM”
LER NOME
SE NOME <> “FIM”
LER N1
LER N2
M = (N1+N2)/2
ESCREVER NOME, N1, N2,M
FIM_SE
FIM_ENQUANTO
FIM
Até aqui analisamos quais são as palavras-chave e como se representam os
algoritmos em Pseudocódigo. Veremos a seguir como fazer a representação das
estruturas de controle através de Fluxograma e Diagrama de Chapin.
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
35
LÓGICA
DE
PROGRAMAÇÃO
36
ESTRUTURA SEQÜENCIAL
ESTRUTURA
DE
SELEÇÃO SIMPLES
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
37
LÓGICA
DE
PROGRAMAÇÃO
38
ESTRUTURA
LÓGICA
DE
DE
SELEÇÃO COMPOSTA
PROGRAMAÇÃO
ESTRUTURA
39
LÓGICA
DE
DE
SELEÇÃO MÚLTIPLA
PROGRAMAÇÃO
40
ESTRUTURA
DE
REPETIÇÃO
P ROCEDIMENTOS E F UNÇÕES
No final dos anos 60, várias empresas se depararam com o aumento
crescente dos custos para a elaboração de programas de computador. Isso gerou
a chamada Crise do Software. Essa crise foi também decorrente do
descompasso entre a tecnologia de desenvolvimento dos Softwares. Sem
metodologias avançadas para a elaboração de programas, a probabilidade de
aparecimentos de bugs (falhas, erros) nos Softwares era quase inevitável. Isso
tornava a manutenção dos sistemas de informações cada vez mais onerosa.
Para tentar resolver esses problemas, uma série de estudos foi iniciada e
surgiram vários tipos de programação. Um deles, o mais utilizado, é a
Programação Estruturada. A característica dessa programação é a utilização de
técnicas que decompõem a solução de um problema em “blocos” que interagem
com um bloco principal. Isso é possível por meio da técnica de refinamentos
sucessivos e da modularização dos algoritmos. A Programação Estruturada tem
como objetivo desenvolver Programas/Algoritmos confiáveis, legíveis, de fácil
entendimento, flexíveis e de fácil manutenção; para isso, ela utiliza as técnicas a
seguir.
1) Desenvolvimento de algoritmos por etapas/refinamentos sucessivos.
2) Número limitado de estruturas de controle de fluxo.
3) Mudanças de etapas/refinamentos de alta complexidade ou tamanho em
módulos.
MODULARIZAÇÃO
Técnica para desenvolver algoritmos, por meio de refinamentos sucessivos,
em que podem ser utilizados módulos.
MÓDULO
Conjunto de comandos que constitui uma parte de um algoritmo principal e
que tem uma tarefa bem definida e é independente em relação ao resto do
Algoritmo. Fazendo uma analogia, imagine o coração como um módulo do corpo
humano. Esse módulo desempenha um conjunto de operações específicas, tem
uma tarefa bem definida e é independente em relação à boa parte dos outros
órgãos (tanto assim, que pode ser transplantado para outro corpo).
Veja a seguir as características da técnica da modularização.
1) A independência do módulo permite uma manutenção mais simples e evita
efeitos colaterais em outros pontos do algoritmo.
2) A elaboração do módulo pode ser feita independentemente e em época
diferente do restante do algoritmo.
3) Testes correções dos módulos podem ser feitas separadamente.
4) Um módulo pode ser utilizado em outros algoritmos que requerem o mesmo
processamento por ele executado.
LÓGICA
DE
PROGRAMAÇÃO
41
LÓGICA
DE
PROGRAMAÇÃO
42
PROCEDIMENTO
E
FUNÇÃO
VARIÁVEL
Para inserir módulos em um algoritmo existem os comandos Procedimento e
Função. As ações de procedimento e função estão hierarquicamente
subordinadas a um algoritmo principal, geralmente, chamado de Módulo
Principal. Dentro de um procedimento ou uma função, pode haver o chamamento
de outros procedimentos ou funções. Veja o diagrama a seguir.
GLOBAL
Variável que pode ser utilizada no módulo em que foi declarada ou em um
módulo interno ao módulo do algoritmo no qual foi declarada.
VARIÁVEL
LOCAL
Variável que só pode ser utilizada no módulo do algoritmo no qual foi
declarada e que não possui qualquer significado fora desse módulo.
Observação: Todo módulo (Procedimento ou Função) é criado por meio de declarações e
executado por meio de um comando de chamada.
DIFERENÇA ENTRE PROCEDIMENTO E FUNÇÃO
Cada procedimento ou função pode utilizar os objetos (constantes e
varáveis) do módulo principal, definir os seus próprios, ou ainda utilizar os dois
tipos. Veja o quadro abaixo.
A diferença entre Procedimento e Função é que o Procedimento executa uma
tarefa e não retorna valores para o módulo que o chamou, já a Função também
executa uma tarefa, mas obrigatoriamente deverá retornar um resultado para o
módulo que a chamou. A chamada de um procedimento é feita como uma linha de
comando normal, repassando ou não parâmetros (argumentos); já a chamada de
uma função sempre deve ser por atribuição a uma variável ou por um teste
condicional, também repassando ou não parâmetros (argumentos).
PROCEDIMENTOS COM PARÂMETROS
Parâmetros (argumentos)
Na técnica de modularização podem ser utilizados pontos de comunicação
entre os módulos. Esses pontos, chamados Parâmetros, classificam-se em
formais e reais.
PARÂMETROS FORMAIS
São os parâmetros declarados com o módulo (Procedimento ou Função). São
os que recebem os valores enviados pelo módulo que chamou o Procedimento ou
a Função.
PARÂMETROS REAIS
São os parâmetros que substituem os parâmetros formais, no procedimento
ou função. São os que enviam valores do módulo principal para o módulo
(procedimento ou função) que foi chamado.
Pelo exemplo acima, tanto as Funções 1 e 2 como o Procedimento 4 podem
utilizar a variável X, porque ela é uma variável global e está no módulo principal.
Porém, a variável Z não pode ser utilizada no algoritmo principal, nem na função
1 e nem no Procedimento 4, por ser uma variável local da Função 2.
PASSAGEM DE PARÂMETROS
PASSAGEM
DE PARÂMETROS POR VALOR
Quando passamos parâmetros por valor, na verdade estamos enviando uma
cópia do valor original da variável. Portanto, se no Procedimento ou Função este
valor for alterado, não modificará o conteúdo da variável cujo valor foi repassado.
LÓGICA
DE
PROGRAMAÇÃO
43
LÓGICA
DE
PROGRAMAÇÃO
44
PASSAGEM
DE PARÂMETROS POR
REFERÊNCIA
EXEMPLOS DE PROCEDIMENTO E FUNÇÃO
Quando repassamos parâmetros por referência, na realidade estamos
enviando não uma cópia do valor, mas, sim, o endereço de memória onde está
armazenado o valor. Logo, qualquer alteração deste valor no Procedimento ou
Função implica alterar o conteúdo da variável que repassou o parâmetro.
Ler o estado civil de uma pessoa como valor numérico, sendo 1 para
solteiro, 2 para casado e 3 para outros. Escrever o estado civil em caracteres.
Observação: Existe diferença no padrão (Default) de repasse de parâmetros entre as
Módulo Principal
Procedimento Traduz(e)
VARIAVEIS
Numerico ec, e
INICIO
Ec = 0
Ler ec
Traduz (ec)
FIM
INICIO
SE e = 1 entao
Escrever “Solteiro”
SENAO
SE e = 2 entao
Escrever “casado”
SENÃO
SE e = 3 entao
Escrever “outros”
SENAO
Escrever “Inválido”
FIM_SE
FIM_SE
FIM_SE
FIM
linguagens.
Exemplo: No Visual Basic o Padrão (Default) de repasse é por referência,
já no Delphi o padrão (Default) é por valor.
EXEMPLOS
DE SINTAXE
No Visual Basic:
Na declaração do tipo: Procedimento (x), o repasse de x é por referência
(Padrão). Se quisermos repassar o parâmetro por valor, a declaração tem que
ser:
PROCEDIMENTO
Procedimento (By val x).
No Delphi
Na declaração do tipo: Procedimento (x), o repasse de x é por valor
(Padrão). Se quisermos repassar o parâmetro por referência, a declaração tem
que ser:
Procedimento (Var x).
FUNÇÃO
Observação: Em algumas linguagens é possível elaborar um arquivo contendo diversos
Procedimentos e Funções e compilar este arquivo como uma DLL, ficando,
portanto todos os procedimentos e funções contidos nele disponíveis para todos
os programas do sistema.
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
Ler a base e altura de um triângulo, calcular a área. Escrever a base, a
altura e a área calculada.
Módulo Principal
Funcao Calc_Área(b, h)
VARIAVEIS
Numerico base, altura, área,a
Inicio
Base = 0
Altura = 0
Area = 0
Ler Base
Ler Altura
Area = Calc_Área (Base, Altura)
Escrever Área
FIM
INICIO
a=b*h
retornar a
FIM
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
45
LÓGICA
DE
PROGRAMAÇÃO
46
RECURSIVIDADE
V ETORES E M ATRIZES
Os Procedimentos e as Funções, na maioria das linguagens, possuem a
propriedade da recursividade, isto é, a capacidade de chamar ela mesma.
Podemos utilizar a recursividade para simular uma estrutura de repetição.
O QUE SÃO VETORES E MATRIZES
EXEMPLO
DE RECURSIVIDADE
VARIAVEIS
Numerico Num, N
Vetores e Matrizes, que nas linguagens de programação são chamados de
Array, são variáveis indexadas, isto e, em uma mesma variável podemos
armazenar diversos valores, e esses valores são identificados pelo nome da
variável e por um número ou mais números, dependendo de quantas dimensões
tem a matriz. Esse número ou esses números são os índices da matriz, pois
indicam a posição do valor (elemento) dentro da Matriz ou do Vetor.
Vamos fazer uma analogia para entendermos melhor esse conceito. Como
vimos anteriormente, uma variável normal é um endereço de memória onde
podemos guardar um valor de cada vez. Como se fosse uma gaveta onde
podemos guardar apenas um objeto; se quisermos colocar outro objeto, temos
que retirar o anterior. Agora vamos supor que nessa gaveta fizemos cinco
divisões, então podemos guardar cinco objetos na mesma gaveta, isso é o que
podemos comparar como sendo um Vetor.
INICIO
Num= 0
Mostra(Num)
FIM
A Matriz pode-se comparar como sendo um armário com, por exemplo, três
gavetas. Neste caso eu posso guardar três objetos, um em cada gaveta, porém,
se em cada gaveta são feitas três divisões, podemos nesse armário guardar não
apenas três objetos, mas, sim, nove objetos.
PROCEDIMENTO MOSTRA(N)
INICIO
EXEMPLO
N=N+2
DE VETOR
Matriz numérico V[5]
Escrever N
SE N < 10 entao
Mostra(N)
Para referenciar o valor 18, temos que indicar V[3], isto é, o valor 18 é o
terceiro elemento do Vetor V, ou que o valor 18 encontra-se na terceira posição
do vetor.
FIM_SE
FIM
EXEMPLO
DE MATRIZ
Matriz numérico M[3,3]
RESULTADO
Temos como resultado desse processamento, os seguintes valores:
2 – 4 – 6 – 8 – 10.
.......................................................................................................
Para referenciar o valor 76, temos que indicar M[2,3], isto é, o elemento da
matriz que armazena o valor 76 está na linha 2, coluna 3.
.....................................................................................................................
A indicação do índice ou índices é feita sempre entre colchetes “[ ]”, ou em
algumas outras linguagens ente parênteses “( )”.
.....................................................................................................................
Como o Vetor é uma matriz que possui dimensão única, temos apenas um
índice, que indica a posição que o elemento ocupa dentro do Vetor. Por exemplo:
V[3]. O número 3 entre os colchetes indica da Posição do Elemento (local onde
o valor está armazenado).
LÓGICA
LÓGICA
DE
PROGRAMAÇÃO
47
DE
PROGRAMAÇÃO
48
Como a Matriz tem mais de uma dimensão, tem uma quantidade de índices
igual à quantidade de suas dimensões. No exemplo anterior, a matriz tem duas
dimensões, tendo, portanto, dois índices: o primeiro, indicando a linha, e o
segundo, indicando a coluna em que se encontra armazenado o valor.
Exemplo: M[2,3], o número 2 indica a linha, e o numero 3 indica a coluna,
Posição do Elemento (local do valor armazenado).
A LGORITMOS PARA M ANIPULAR V ETORES E M ATRIZES
Para construir algoritmos que manipulam Vetores e Matrizes, utilizamos a
estrutura Para - Proximo, que é a mais adequada para esse tipo de construção.
Algumas linguagens admitem o comando de leitura direta para armazenar um
valor em um elemento do Vetor ou da Matriz; outras só aceitam o armazenamento
por atribuição. Para ser genérico nos exemplos, usaremos a atribuição que todas
as linguagens suportam.
Exemplo de Vetor: Algoritmo para ler e escrever um Vetor de nome V com
cinco posições (elementos).
.......................................................................................................
.....................................................................................................................
VARIAVEIS
NUMERICO AUX, I
MATRIZ NUMERICO V[5]
.....................................................................................................................
INICIO
.....................................................................................................................
AUX = 0
PARA I = 1 ATE 5
LER AUX
V[I] = AUX
ESCREVER V[I]
PROXIMO
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
FIM
Exemplo de Matriz: Algoritmo para ler e escrever uma Matriz de nome M
com nove posições (elementos), com três linhas e três colunas.
.....................................................................................................................
VARIAVEIS
NUMERICO AUX, L, C
MATRIZ NUMERICO M[3,3]
INÍCIO
AUX = 0
PARA L = 1 ATE 3
PARA C = 1 ATE 3
LER AUX
M[L,C] = AUX
ESCREVER M[L,C]
PROXIMO
PROXIMO
FIM
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
Podemos dentro da estrutura Para – Proximo, trabalhando com Vetores e
Matrizes, fazer os mesmos tipos de processamentos que fazemos dentro da
estrutura Faca – Enquanto, com a vantagem de que os valores permanecem
armazenados na Memória, até que o processamento termine.
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
49
LÓGICA
DE
PROGRAMAÇÃO
50
C ONSIDERAÇÕES F INAIS
A PÊNDICE 1
Acreditamos que ao terminar esse curso e após ter realizado os exercícios
constantes nesta apostila, o aluno, com certeza, deve ter apropriado os
conhecimentos necessários sobre raciocínio lógico, estruturas e construção de
algoritmos, para dar prosseguimento à sua aprendizagem de uma linguagem de
programação, seja ela Visual Basic, Delphi, Java, etc., e aplicar os
conhecimentos adquiridos nesse curso para elaborar seus programas de maneira
correta e eficiente.
EXEMPLO DE ALGORITMO PARA ORDENAR UM VETOR
Desafio: Classificar em ordem crescente um vetor A com dez elementos (dez
posições)
VARIAVEIS
NUMERICO N, I, J, AUX
MATRIZ NUMERICO A [10]
INICIO
N=0
AUX = O
.......................................................................................................
PARA I = 1 ATE 10
.....................................................................................................................
LER N
.....................................................................................................................
A [I] = N (Bloco para carregar e imprimir o vetor)
ESCREVER A [I]
.....................................................................................................................
PROXIMO
.....................................................................................................................
PARA I = 1 ATE 9
PARA J = I+1 ATE 10
.....................................................................................................................
SE A [I] > A [J] ENTAO
.....................................................................................................................
AUX = A [I]
.....................................................................................................................
A [I] = A [J] (Bloco para ordenar o vetor)
A [J] = AUX
.....................................................................................................................
FIM_SE
.....................................................................................................................
PROXIMO
.....................................................................................................................
PROXIMO
.....................................................................................................................
PARA I = 1 ATE 10
ESCREVER A [I] (Bloco para imprimir o vetor ordenado)
.....................................................................................................................
.....................................................................................................................
PROXIMO
FIM
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.......................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
LÓGICA
DE
PROGRAMAÇÃO
51
LÓGICA
DE
PROGRAMAÇÃO
52
•
A PÊNDICE 2
Extrai de um número ou uma variável qualquer, somente a parte inteira.
Exemplos: Inteiro(14,235) = 14. N = 234,57 – Inteiro(N) = 234.
COMANDOS DO INTERPRETADOR DA LINGUAGEM DOS ALGORITMOS (ILA)
Os comandos do ILA (Interpretador da Linguagem dos Algoritmos) são, em
geral, os mesmos utilizados nas estruturas dos algoritmos representados em
Pseudo-Código (Português Estruturado).
•
•
•
•
•
•
•
•
•
•
INICIO
FIM
LER
ESCREVER
SE
SENAO
FIM_SE
FACA ENQUANTO
FIM_ENQUANTO
PARA – PRÓXIMO, Etc...
•
A L E AT Ó R I O () – Função.
C O M P R I M E N T O (<var>,<texto>) – Função.
Somente para dados do tipo caracter (texto). O resultado é um valor
numérico que indica a quantidade de caracteres que compõem texto ou o
conteúdo da variável. Exemplo: x = “casa” – COMPRIMENTO(X) = 4
•
E S P E R AR (<tempo>) – Comando
Suspende a execução do algoritmo por um intervalo de tempo, dependendo
da velocidade do processador. Exemplo: ESPERAR(200).
•
I M P R E S S O R A () – Função.
Para ter efeito a função deve ser usada antes do comando escrever. Desvia
as informações enviadas pelo comando escrever para a impressora. Para retornar
a escrever no vídeo devemos usar a função Vídeo().
LÓGICA
DE
PROGRAMAÇÃO
L I M P AR (< L I N H A >,< C O L U N A >,< L I N H A 1>,< C O L U N A 1>) – C O M A N D O .
53
P I – C O N S T AN T E .
Constante numérica cujo resultado é o valor de Pi = 3,14159265359
•
P O S I C I O N AR (<linha>,<coluna>) – Comando.
Posiciona o cursor na tela, conforme indicado por linha e coluna. Este
comando deve ser usado sempre antes dos comandos Ler e Escrever. Exemplo:
POSICIONAR(12,15). Posiciona o cursor na linha 12, na coluna 15.
•
R AI Z (<num>,<índice>) – Função.
Calcula a raiz indicada pelo índice, de um número qualquer. O parâmetro
<num>, indica o número do qual se quer a raiz, e o parâmetro <índice>, indica o
tipo de raiz desejado. Exemplos: Raiz(256,2), calcula a raiz quadrada de 256 =
16. RAIZ(8,3), calcula a raiz cúbica de 8 = 2.
•
C O R (<frente>,<fundo>) – Comando
Muda o atributo de cor no vídeo, os argumentos (parâmetros) podem ser em
texto ou código numérico. Ver tabela de cores no Help do ILA. Exemplo:
COR(“verde”,”Amarelo”) é igual a COR(2,15), a fonte fica em verde sobre o fundo
amarelo. Para ter efeito, este comando deve ser usado antes de um comando
escrever, limpar ou janela.
•
J AN E L A (<linha>,<coluna>,<linha1>,<coluna1>) – Comando.
Desenha uma moldura na tela. A primeira coordenada linha, coluna, referese ao canto superior da janela, e a segunda coordenada linha1, coluna1,
determina o canto inferior direito da janela. Exemplo: Janela(2,3,20,78), desenha,
na tela, uma moldura começando na linha 2, coluna 3 e terminando na linha 20,
coluna 78.
Semelhante ao comando janela, limpa uma área da tela desde o canto
superior esquerdo, linha, coluna, até o canto inferior direito, linha1, coluna1.
Caso forem omitidos os parâmetros (argumentos), será assumido 1,1,24,80, isto
é, limpa a tela inteira. Exemplos: Limpar(2,30,2,70), limpa somente a linha 2
desde a coluna 30 até a coluna 70. Limpar, limpa a tela inteira.
Resulta em um valor aleatório sempre maior que zero e menor do que 1.
Maior número a ser gerado 0,999999, menor número 0,000001.
•
•
•
Abaixo temos uma lista de Comandos e Funções do ILA que podemos (ou
devemos) usar nos algoritmos para facilitar o desempenho dos algoritmos e
também obter uma melhor visualização dos resultados.
•
I N T E I R O (<n>,<var>) – Função.
R E S T O (<valor1>,<valor2>) – Função.
O resultado dessa função é o valor do resto da divisão inteira do valor1 pelo
valor2. Exemplos: Resto(24/12) = 0. Resto(25,12) = 1.
•
R E T O R N AR – Comando.
Retorna um valor (resultado), de uma função definida pelo usuário, para o
módulo que chamou a função.
•
V AL O R (<var>,<texto>) – Função.
Transforma um texto ou o conteúdo de uma variável caracter em um valor
numérico, desde que o conteúdo desse texto ou dessa variável seja apenas
caracteres numéricos. Exemplo: VALOR(“12”) = 12. X = “23” – VALOR(X) = 23.
•
V I D E O () – Função.
A saída padrão (Default) do comando Escrever é para o vídeo. Porém, se
desviamos essa saída para a impressora usando a função Impressora(), devemos
após a impressão retornar à saída para o vídeo. Para isso usamos Video().
LÓGICA
DE
PROGRAMAÇÃO
54
16) Dada a seguinte divisão:
E XERCÍCIOS DE R ACIOCÍNIO L ÓGICO
1) Utilizar cálculos aritméticos com oito números oito, (88888888), usando apenas os oito
números oito e todos eles de forma a obter como resultado o valor 1000 (mil).
2) Utilizar cálculos aritméticos com quatro números quatro, (4444), usando
apenas os quatro números quatro e sempre todos eles de forma a obter os 10
(dez) dígitos do sistema decimal. Ex: 44-44 = 0, 44/44 = 1, ...
Qual o valor de P,Q,R,S,T.
3) 64, 8, 49, 7, 36. ? .
17) Numa rua tem três casas, temos que ligar Água, Luz e Telefone nas três casas
individualmente. Como fazer não cruzando linhas. Veja abaixo:
4) 2, 5, 7, ?, ?, ?, ?, 20, 22, 25.
5) 82, 97, 114, 133, ? .
6) 4, 6, 10, 18, 34, ? .
7) 2,9,100,...
8) 2, 10, 12, 16, 17, 18, 19, ? .
18) Dentro de uma peça fechada com uma porta bem vedada, tem uma lâmpada
incandescente. Na parte de traz da peça, por fora, tem um interruptor de
energia com chave tripla. Descobrir qual a chave que liga a lâmpada, podendo
abrir a porta para olhar apenas uma vez.
9)
10) Um tijolo pesa 1Kg mais meio tijolo. Qual o peso de 3 tijolos?
11) Temos dois baldes, um com capacidade para 3 litros e outro com a capacidade
de 5 litros. Usando somente estes dois baldes medir no balde de 5 litros
exatamente 4 litros.
12) Sobre uma mesa há quatro pacotes de presentes exatamente iguais. O
conteúdo deles, porém, é diferente, não sendo igual o peso de cada um deles.
Sabemos que o peso total dos 4 pacotes é 8,800 Kg; o quarto pacote pesa
menos 800 gramas que o segundo. O terceiro pesa mais 400 gramas que o
primeiro, e o segundo pacote pesa mais 100 gramas do que a média do peso
deles. Qual o peso de cada pacote?
13) Em uma obra temos um grupo de oito tijolos. Sete destes tijolos têm o mesmo
peso e um é mais pesado. Usando uma balança de dois pratos e pesando
apenas duas vezes, determinar qual o tijolo é mais pesado.
14) Na cozinha tem um cesta contendo ovos. Uma pessoa veio tirar ovos desta
cesta cinco vezes. Cada vez que ela vinha tirar ovos, tirava sempre a metade
dos ovos que tinha na cesta mais meio ovo. Quando ela retirou ovos na quinta
vez a cesta ficou vazia. Quantos ovos tinham na cesta antes de ela começar a
retirar ovos?
19) Chegaram ao banco cinco sacos contendo moedas. Quatro sacos têm moedas
verdadeiras e apenas um saco contém moedas falsas. O peso de cada moeda
verdadeira é de 10gr, e cada moeda falsa pesa 1gr. Fazendo apenas uma
pesagem, determinar com certeza qual o saco que está com moedas falsas.
20) Dois árabes se encontram em um oásis, cada um acompanhado de seus
camelos. Vamos identificar um deles como X e o outro como Y. Se o Y der um
camelo para X, eles ficam com quantidades iguais, porém se for X a dar um
camelo para Y, Y fica com o dobro da quantidade de camelos que fica X.
Quantos camelos tem cada árabe?
21) Encontramos duas portas, a porta A e a porta B, sendo uma do inferno, e a
outra, do céu, não sabemos qual a porta certa. Em frente a estas portas estão
dois guardas que se revezam caminhando de um lado para outro. Um destes
guardas só fala a verdade, nunca diz mentiras. O outro, ao contrário, só diz
mentiras, nunca fala a verdade. Também não sabemos qual fala a verdade e
qual mente. Só podemos fazer uma pergunta para apenas um dos guardas, e
com uma resposta única deste guarda, entramos na porta certa que é a do
céu. Como formular a pergunta?
15) Um operário recebe R$ 50,00 por dia de trabalho para terminar uma obra em
10 dias e paga uma multa de R$ 20,00 por dia que atrasar a obra. No final da
obra recebeu R$ 380,00. Em quantos dias terminou a obra?
LÓGICA
DE
PROGRAMAÇÃO
55
LÓGICA
DE
PROGRAMAÇÃO
56
22) O quadrado mágico. A soma em qualquer direção é sempre um valor
constante. Qual a lógica de preenchimento?
32) Num balcão estão enfileirados seis copos numa seqüência de 3 cheios e 3
vazios. Mover apenas um copo e deixar a seqüência alternada com um cheio e
um vazio.
33) Dispor aritmeticamente nove números sete (777777777) de forma que o
resultado seja igual a 790.
34) 123² – 122² = ?
538² – 537² = ?
35) Dois pais e dois filhos foram a uma confeitaria e compraram três doces
diferentes. Cada um deles comeu um doce inteiro. Como isto foi possível?
23) Uma empresa possui cem (100) funcionários. Foi solicitado pelo gerente da
mesma um relatório informando quantos funcionários tomavam café, quantos
tomavam chá, quantos tomavam ambos e quantas pessoas não tomavam nada.
Feito o relatório, apresentava o seguinte: Café – 78, Chá – 71, Café e Chá –
48 e Nada – zero. O chefe olhou relatório e notou que tinha um erro. Qual o
erro que existe?
24) Qual o estranho?
36) Foi deitar às 08:00. Acertou o despertador para as 09:00 do dia seguinte.
Quanto tempo dormiu?
37) Escrever os números de um até nove, menos o oito (12345679). Escolher o
que menos gosta. Multiplicar os números 12345679 pelo número escolhido
multiplicado por nove e observe o resultado. Exemplo: escolhendo o número 5,
multiplicar (12345679)*45 = ?
38) Precisamos cozinhar um ovo em dois minutos. Só dispomos de duas
ampulhetas, uma com tempo de 3 minutos e outra com tempo de 5 minutos.
Como medir o tempo corretamente?
(AOGIBA – BIAXACA – CELANAMI – RENOUCA – JANARAL)
25) Como chegar aos seguintes resultados?
39) Um relógio está parado. Outro atrasa uma hora por dia. Qual mostra mais
freqüente a hora certa?
26) Uma bactéria dobra seu número a cada minuto. Num determinado recipiente
ela leva 29 minutos para ocupar até a metade. Quanto tempo levará para
encher o recipiente?
40) Sabe-se que 5 melancias valem 21 cajus, que 7 cajus valem 15 laranjas, que
18 laranjas valem 6 mangas e que 10 mangas custam R$ 10,00. Calcular o
preço de uma melancia.
41) Observe as figuras abaixo e descubra qual delas completa a ultima seqüência,
substituindo o X.
27) Ao medir uma vara verificou-se que ela tem 10 metros mais a terça parte do
seu comprimento. Qual o tamanho da vara?
28) No fundo de um poço com 20 metros de profundidade tem um caracol. Durante
o dia o caracol sobe 2 metros na parede do poço e durante a noite cai
escorregando 1 metro. Em quantos dias o caracol sai do poço?
29)
30) De uma peça de tecido com 100 metros de comprimento, uma costureira corta
5 metros por dia. Quanto tempo levará para cortar a peça toda?
31) Temos três baldes, um com capacidade para 3 litros, outro com capacidade
para 5 litros e o terceiro com a capacidade de 10 litros. Devemos misturar no
balde de 5 litros, 4 litros de água e 1 litro de querosene. Como fazer utilizando
apenas os baldes acima?
LÓGICA
DE
PROGRAMAÇÃO
57
LÓGICA
DE
PROGRAMAÇÃO
58
42) Tendo por base as equações solucionadas, determine o valor de X na última
equação.
÷ 4 =3
*
÷
43.
+
46.
Nos valores contidos nas figuras abaixo, qual o valor de X?
47.
Na figura abaixo temos 7 quadrados. Mover apenas 3 palitos e deixar apenas
5 quadrados iguais.
48.
Na figura abaixo tem 17 palitos formando uma figura com 6 quadrados.
Retirar 5 palitos e deixar a figura com apenas 3 quadrados.
49.
A figura a seguir é composta de cinco quadrados formados por 16 palitos.
Deslocar apenas dois palitos e deixar somente quatro quadrados.
50.
A figura abaixo tem cinco quadrados, deslocar apenas quatro palitos
deixando apenas três quadrados.
=20
=32
+
=X
Quantos triângulos você consegue ver em cada uma das figuras abaixo?
44.
As equações abaixo, formadas por barras, não estão corretas, como
transformá-las verdadeiras, movendo apenas uma barra em cada equação?
45.
Analisando as equações
determinar o valor de X.
LÓGICA
DE
PROGRAMAÇÃO
abaixo
formadas
por
figuras,
como
podemos
59
LÓGICA
DE
PROGRAMAÇÃO
60
51.
52.
53.
Com vinte e quatro palitos formamos a figura abaixo que possui nove
quadrados. Retirar seis palitos e deixar a figura com três quadrados.
Com doze palitos formamos a figura abaixo que tem quatro quadrados.
Retirar apenas dois palitos, deixando a figura com apenas dois quadrados.
E XERCÍCIOS COM A LGORÍTMOS
1)
Escreva o pseudocódigo em português estruturado que leia três valores em variáveis
distintas e armazene a soma em uma outra variável e escreva o valor obtido.
2)
Ler três valores em variáveis diferentes armazene, a soma das duas primeiras em uma nova
variável e o produto das duas últimas em uma outra variável e mostre o produto das duas
novas variáveis em uma terceira variável.
3)
Escreva o pseudocódigo em português estruturado e que leia três valores em diferentes
variáveis e escreva o maior valor digitado.
4)
Escreva o pseudocódigo em português estruturado que leia dez valores fornecidos pelo
usuário e escreva os valores e seus dobros.
5)
Gerar números de zero a 200 variando de 5 em 5. Mostrar estes números digitados e, no
final, a soma deles e quantos números foram gerados.
6)
Fazer uma tabela de conversão de polegadas para centímetros. Esta tabela deverá começar
em uma polegada e terminar em 10 polegadas variando de 0.5 em 0.5 de polegada. Mostrar
a tabela
7)
Ler 10 valores dois a dois, compará-los entre si. Mostrar cada par de números, e ao lado
deles a mensagem, segundo cada caso. Se forem iguais, se o maior é o primeiro ou se o
maior é o segundo.
8)
Escreva o pseudocódigo em português estruturado que mostre somente os números pares
de 0 até 100. Se este número for maior que 20, escreva também o seu quadrado.
9)
Escreva o pseudocódigo em português estruturado que, para 20 números fornecidos pelo
usuário, escreva a quantidade de positivos e de negativos.
10)
Escreva o pseudocódigo em português estruturado que mostre a tabuada de zero até 10
para um número fornecido pelo usuário.
11)
Ler oito valores positivos. Testar cada valor, se for maior do que 100, extrair a raiz
quadrada, caso contrário, elevar ao quadrado. Mostrar os números lidos e ao lado a raiz ou
o quadrado. No final informar quantos números pares foram digitados.
12)
Uma empresa possui 15 funcionários. Ler para cada funcionário o seu nome, as horas
trabalhadas e seu salário hora. Calcular o salário bruto. Mostrar o nome de cada funcionário,
as horas trabalhadas, o salário hora e o salário bruto. No final mostrar o total de salários
brutos.
13)
Ler 20 valores dois a dois. Testar estes valores. Se o segundo for maior que o primeiro,
calcular a soma deles. Se o primeiro for maior que o segundo, calcular a diferença, e, se
forem iguais, multiplicá-los.
14)
Fazer um algoritmo que calcule as raízes da equação do segundo grau usando a fórmula de
Báscara. Testar o discriminante, caso seja negativo, informar que é impossível no campo
dos números reais; caso contrário, calcular e mostrar as raízes.
15)
Ler o nome, o sexo e a idade de 100 pessoas. Mostrar quantas pessoas são do sexo
masculino e quantas são do sexo feminino, quantas são menores de 18 anos e quantas são
maiores ou iguais a 18.
Na figura abaixo temos um triângulo equilátero formado por nove palitos.
Mover cinco palitos e formar cinco triângulos também equiláteros.
LÓGICA
DE
PROGRAMAÇÃO
61
LÓGICA
DE
PROGRAMAÇÃO
62
16)
Ler oito valores diferentes de zero, imprimir os valores lidos e no final mostrar quantos
números são negativos.
17)
Ler uma série de dez números, mostrar os números lidos e, no final, a soma deles e quais
foram o maior e o menor número digitado.
18)
Ler o nome e número de filhos de 30 pessoas, imprimindo:
24)
Ler o nome e o salário bruto de 15 funcionários de uma empresa. Calcular o INSS e o IRRF
conforme tabelas abaixo. Calcular o valor do Vale Transporte = 6% sobre o salário bruto.
Calcular o salário líquido. Mostrar os nomes dos funcionários, o salário bruto, o valor do
INSS, valor do IRRF, valor do Vale Transporte e o salário líquido.
a. Quantas pessoas têm de 1 a 3 filhos.
b. Quantas pessoas têm de 4 a 7 filhos.
c. Quantas pessoas têm 8 filhos ou mais.
d. Quantas pessoas não têm filho.
19)
Observação: O valor do Vale Transporte não pode ultrapassar R$ 95,00
Ler nome, idade e sexo de 40 pessoas e após imprimir:
a. Número de pessoas do sexo masculino.
No final mostrar:
b. Número de pessoas do sexo feminino.
-
A soma dos salários líquidos;
c. Número de pessoas com idade até 30 anos.
-
A média dos salários brutos;
-
O maior salário;
-
O menor salário;
d. Número de pessoas com idade igual ou superior a 60 anos.
20)
O proprietário de um cinema desejou saber certo dia qual seria a sessão mais lucrativa para
ele. Assim sendo, para cada um dos 100 espectadores deste dia registrou nome e sessão
(tarde ou noite). Fazer um algoritmo para ler estes dados e após informar ao proprietário
qual foi a sessão que teve mais espectadores ou se foram iguais.
21)
Numa pesquisa populacional, entre outros dados, registrou-se para cada um dos 160000
recenseados o nome, sexo, idade e grau de escolaridade (0=analfabeto, 1=primário,
2=secundário, 3=superior, 4=pós-graduação). Como resultado da pesquisa deseja-se obter
um relatório contendo as seguintes informações:
25)
Fazer um algoritmo que solicite dois valores quaisquer e apresente um menu com as
opções de soma, subtração, multiplicação e divisão, Conforme a opção escolhida apresentar
os números digitados e o resultado. Perguntar se quer mais cálculos; caso positivo reiniciar,
se não, encerrar o programa informando quantos cálculos foram efetuados.
26)
Uma empresa resolveu conceder um aumento aos seus funcionários conforme tabela
abaixo:
Salários até
Salários de
Salários acima de
a. Número de analfabetos.
b. Número de pessoas com instrução primária.
d. Número de pessoas com formação superior
e. Número de homens pós-graduados.
22)
23)
Número de mulheres pós-graduadas
Ler as notas e os nomes de uma turma de 30 alunos, mostrar os nomes e as notas de cada
aluno e a mensagem de aprovado, se a nota for maior ou igual a 7 e reprovado, se menor
que 7. No final imprimir a nota mais alta, a nota mais baixa, a média aritmética da turma,
quantos alunos foram aprovados e quantos foram reprovados.
Ler 10 valores maiores que zero. Mostrar os valores e informar se são ímpares ou não. No
final mostrar a soma deles, a média aritmética, a soma dos pares, a soma dos ímpares, o
maior e o menor valor.
LÓGICA
DE
PROGRAMAÇÃO
63
até
R$ 500,00
20%
15%
10%
a. Ler para cada funcionário o nome e o salário antigo. Calcular o novo
salário. Mostrar o nome, o salário anterior e o novo salário. Finalizar
o programa quando for digitada a palavra “FIM” em lugar do nome.
Informar no final o seguinte:
b. Quantos funcionários têm a empresa;
c. O total dos salários antigos;
d. O total dos salários novos;
e. O maior salário novo;
f. O menor salário novo.
c. Número de pessoas com mais de 50 anos e instrução secundária.
f.
R$ 200,00
R$ 200,01
R$ 500,00
27)
Escrever um algoritmo que lê a quantidade de cobaias utilizadas em cada
uma das experiências e um código 1 ou 2. O código 1 representa coelhos e o
2 representa ratos. Quer-se saber o total de cobaias utilizadas, o total de
ratos, o total de coelhos, a percentagem de coelhos e a percentagem de
ratos. Escrever esses valores. Usar como Flag 999, na quantidade de
cobaias.
LÓGICA
DE
PROGRAMAÇÃO
64
28) Em um certo estabelecimento selecionaram 20 pessoas com diferentes
idades e para cada uma delas foram registrados, nome, idade e mês de
nascimento. Após o registro de dados, desejou-se saber:
31) A empresa X requisitou uma pesquisa em
objetivo de inteirar-se de alguns dados. Para
consta no cadastro nome, sexo, tempo de
deverá ler estes dados e após imprimir na
seguintes informações:
seu cadastro de pessoal com
cada um dos seus funcionários
serviço e salário. O algoritmo
tela, um relatório contendo as
a. Idade da pessoa mais jovem;
a. Nome, sexo, tempo de serviço salário e mensagem "FUNCIONÁRIO
APOSENTADO", para os empregados que possuírem mais de 35 anos
de serviço; ·
b. Nome e idade da pessoa mais idosa;
c. Número de pessoas nascidas no mês de setembro e no mês de
outubro.
b. Nome, sexo, tempo de serviço e salário dos
possuírem tempo de serviço inferior a 3 anos.
29) Um fabricante de televisores deseja inteirar-se do movimento de sua
produção durante um determinado período, para cada um dos televisores
fabricados, registraram-se os seguintes dados: modelo (1, 2 ou 3), tipo preto
e branco (PB) ou colorido (C), preço de custo e preço de venda.
funcionários que
c. Nome, sexo, tempo de serviço e salário dos funcionários que
possuírem tempo de serviço superior a 3 anos e salários inferiores a
R$ 500,00
a. Elaborar um algoritmo para ler e imprimir estes dados, além do lucro
obtido na venda de cada televisor.
d. Usar como flag FIM no campo nome.
32) Uma empresa fez uma pesquisa para saber a aceitação de um produto
lançado no mercado, para isso devemos ler o sexo e a resposta de cada
pessoa pesquisada.
b. Usar como flag 9 no modelo.
c. Ao final do algoritmo deverá ser impresso um segundo relatório
contendo as seguintes informações:
a. Usar com flag a letra X no campo sexo.
i. Número de televisores vendidos do modelo 1;
b. No final informar:
ii. Número de televisores vendidos do modelo 2;
i. Quantas pessoas responderam SIM.
iii. Número de televisores vendidos do modelo 3;
ii. Quantas pessoas responderam NÃO.
iv. Número de televisores preto e branco vendidos;
iii. Quantas pessoas do sexo feminino disseram SIM.
v. Número de televisores coloridos vendidos;
iv. Quantas pessoas do sexo masculino disseram NÂO.
vi. Lucro total obtido pela fábrica;
v. Quantas foram as pessoas pesquisadas.
vii. Maior preço de custo;
viii. Maior preço de venda.
30) Uma empresa deseja realizar um levantamento no cadastro de seus
funcionários. Para isso, deverá ser lido para cada funcionário: nome, idade,
salário e ano de admissão;
33) Ler o nome, as horas trabalhadas e o salário hora de cada funcionário de
uma empresa. O programa terminará quando forem digitadas três letras X no
lugar do nome (XXX). Calcular o salário bruto. Fazer uma função para
calcular o INSS, outra para calcular o IRRF, conforme tabelas abaixo e outra
para calcular o vale transporte, que é de 6% sobre o salário Bruto.
a. Ao final deverá ser impresso um relatório em que constarão os
seguintes dados:
i. Nome do funcionário mais idoso;
ii. Nome do funcionário mais antigo na empresa;
iii. Maior salário na empresa.
iv. Usar como flag ZZZ no nome.
LÓGICA
DE
PROGRAMAÇÃO
Observação: O valor do Vale Transporte não pode ultrapassar 110,00 reais.
65
LÓGICA
DE
PROGRAMAÇÃO
66
a. Calcular o Salário Líquido.
b. Escrever o nome, Salário Bruto, INSS. IRRF, VT e SL para cada
funcionário.
34) Elaborar um algoritmo para ler números positivos. O programa terminará
quando o usuário digitar o zero. Escrever os números lidos. Fazer uma
função para informar se o número digitado é primo ou não.
45) Ler um vetor K de cinco posições. Escrever o vetor. Mostrar a soma do
primeiro elemento com o último e a multiplicação do segundo pelo quarto e a
diferença entre a multiplicação e a soma.
46) Escreva o pseudocódigo em português estruturado que leia um vetor V de 20
posições e classifique-o em ordem crescente. Escreva o vetor ordenado.
47) Ler 50 valores de 1 até 10, contar e mostrar quantas vezes foi digitado cada
valor.
a. No final informar:
48) Escreva o pseudocódigo em português estruturado que leia um vetor L de 15
posições e classifique-o em ordem decrescente. Escreva o vetor ordenado.
i. A soma total dos números.
ii. A soma dos números primos.
49) Preencher um vetor de 15 posições com valores aleatórios de 1 até 100.
Escrever o vetor. Pesquisar os valores do vetor. Se forem menores que 50
substituir pelo seu triplo, caso contrário substituir pelo seu dobro. Escrever o
vetor modificado.
iii. O maior número.
iv. O menor número.
35) Ler um número de um a sete, correspondendo ao dia da semana, fazer um
procedimento para escrever o dia da semana em caracteres.
50) Escreva um algoritmo que lê uma matriz M[5,5] e calcula as somas:
a. Da linha 4 de M;
36) Ler como valor numérico o dia, mês e ano em varáveis distintas, repassar
estes parâmetros para uma função que vai testar se esta data está digitada
corretamente.
b. Da coluna 2 de M;
c. De todos os elementos da matriz.
37) Ler um valor de um até 10. Consistir a entrada. Fazer uma função para
calcular o fatorial do número digitado.
38) Escrever um algoritmo que lê um vetor V[16] e o escreve. Conte, a seguir,
quantos valores de V são negativos, quantos são pares, quantos são impares
e escreva esta informação.
39) Escreva um algoritmo que lê um vetor A [20] e escreve todos os valores
maiores que 10 deste vetor e suas posições.
51) Escrever um algoritmo que lê duas matrizes N1[4,6] E N2[4,6] e cria uma
matriz M1 que seja a soma de N1 com N2. Escrever as matrizes lidas e
calculadas.
52) Escrever um algoritmo que lê uma matriz M[6,6] e calcula as somas das
linhas e das colunas. Escrever a matriz lida e as somas calculadas
53) Escrever um algoritmo que lê uma matriz M[5,5] e calcula as somas:
40) Escrever um algoritmo que lê um vetor X[15] e o escreve. Substitua, a
seguir, todos os valores zeros de X pelo valor do dobro de sua posição e
escrever o novo vetor.
a. Da linha 3 de M;
41) Escrever um algoritmo que lê um vetor C[20] e o escreve. Encontre, a seguir,
o maior elemento de C e o escreva.
c. Da diagonal da matriz.
b. Da coluna 5 de M;
d. Da diagonal inversa da matriz.
42) Escrever um algoritmo que lê um vetor V[18] e o escreve. Encontre, a
seguir, o menor elemento e a sua posição no vetor V e escreva: "O MENOR
ELEMENTO DE V É =“, M, “E A SUA POSIÇÃO É =“, P.
43) Escreva o pseudocódigo em português estruturado que leia um vetor V de 10
posições e, após, verifica se um número N, fornecido pelo usuário, existe no
vetor. Se existir, indicar a posição, se não, escrever a mensagem "O número
fornecido não existe no vetor!".
44) Escreva o pseudocódigo em português estruturado que leia um vetor A, de 5
posições, um vetor B de 5 posições e coloque a soma dos elementos no
vetor C, também de 5 posições.
LÓGICA
DE
PROGRAMAÇÃO
67
54) Preencher uma matriz M de quinze linhas por quinze colunas M[15,15], com
números aleatórios de 1(um) até 1000(mil). Solicitar que o usuário digite um
valor também de 1(um) até 1000(mil). Consistir esta entrada. Pesquisar se o
número digitado foi gerado na matriz. Caso tenha sido encontrado informar
ao usuário em qual posição se encontra e se não for encontrado enviar uma
mensagem informando que não foi gerado.
55) Ler valores para uma matriz de cinco linhas por cinco colunas, preencher e
escrever a matriz linha por linha. Transpor a matriz, isto é, passar o valor
das linhas para as colunas e escrever novamente a matriz.
LÓGICA
DE
PROGRAMAÇÃO
68
Download

Lógica de Programação