Prévia do material em texto
Faculdade FORTIUM
Curso de Sistemas de Informação
Algoritmos e Lógica de
Programação
Prof. Giselle Barbosa Gomes Machado
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 1 ~
1- INTRODUÇÃO
A automatização de tarefas é um aspecto marcante da sociedade moderna. O
aperfeiçoamento tecnológico alcançado, com respeito a isto, teve como elementos
fundamentais a análise e a obtenção de descrições da execução de tarefas em termos de
ações simples o suficiente, tal que pudessem ser automatizadas por uma máquina
especialmente desenvolvida para este fim, O COMPUTADOR.
Em Ciência da Computação houve um processo de desenvolvimento simultâneo e
interativo de máquinas (hardware) e dos elementos que gerenciam a execução
automática (software) de uma dada tarefa. E essa descrição da execução de uma tarefa,
como considerada acima, é chamada algoritmo.
O objetivo dessa matéria é a Lógica de Programação dando uma base teórica e
prática, suficientemente boa, para que, o aluno domine os algoritmos e esteja habilitado a
aprender uma linguagem de programação. Será mostrado também um grupo de
algoritmos clássicos para tarefas cotidianas, tais como: ordenação e pesquisa.
2- DEFINIÇÕES DE ALGORITMO
• "O conceito central da programação e da Ciência da Computação é o conceito de
algoritmos, isto é, programar é basicamente construir algoritmos."
• É a descrição, de forma lógica, dos passos a serem executados no cumprimento
de determinada tarefa.
• "O algoritmo pode ser usado como uma ferramenta genérica para representar a
solução de tarefas independente do desejo de automatizá-las, mas em geral está
associado ao processamento eletrônico de dados, onde representa o rascunho
para programas (Software)."
• "Serve como modelo para programas, pois sua linguagem é intermediária à
linguagem humana e às linguagens de programação, sendo então, uma boa
ferramenta na validação da lógica de tarefas a serem automatizadas."
• "Um algoritmo é uma receita para um processo computacional e consiste de uma
série de operações primitivas, interconectadas devidamente, sobre um conjunto de
objetos. Os objetos manipulados por essas receitas são as variáveis."
• Como qualquer modelo, um algoritmo é uma abstração da realidade. A abstração é
o processo de identificar as propriedades relevantes do fenômeno que esta sendo
modelado. Usando o modelo abstrato, podemos nos centrar unicamente nas
propriedades relevantes para nós, dependendo da finalidade da abstração, e
ignorar as irrelevantes.
• É a forma pela qual descrevemos soluções de problemas do nosso mundo, de
forma que possam ser implementadas utilizando os recursos do mundo
computacional. Como o mundo computacional possuí severas limitações em
relação ao nosso mundo, é necessário que sejam impostas algumas regras
básicas na forma de solucionar os problemas, para que possamos utilizar os
recursos de hardware e software disponíveis. Algoritmos apesar de servirem para
representar a solução de qualquer problema, no caso do Processamento de
Dados, eles devem seguir as regras básicas de programação para que sejam
compatíveis com as linguagens de programação.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 2 ~
*** ATENÇÃO ***
Algoritmo não é a solução de um problema, pois, se assim fosse, cada problema
teria um único algoritmo. Algoritmo é um caminho para a solução de um problema, e em
geral, os caminhos que levam a uma solução são muitas.
O aprendizado de algoritmos é como aprender a jogar futebol, não se consegue a
não ser através de muitos exercícios.
Algoritmos não se aprendem:
- Copiando Algoritmos
- Estudando Algoritmos
Algoritmos só se aprendem:
- Construindo Algoritmos
- Testando Algoritmos
2.1- Fases de um Algoritmo
Quando temos um problema e vamos utilizar um computador para resolvê-lo
inevitavelmente temos que passar pelas seguintes etapas:
a) Definir o problema.
b) Realizar um estudo da situação atual e verificar quais a(s) forma(s) de resolver
o problema.
c) Terminada a fase de estudo, utilizar uma linguagem de programação para
escrever o programa que deverá a princípio, resolver o problema.
d) Analisar junto aos usuários se o problema foi resolvido. Se a solução não foi
encontrada, deverá ser retornado para a fase de estudo para descobrir onde está a
falha.
2.2- Conceitos
Algoritmo
É uma seqüência finita de ações que descrevem como um problema pode ser resolvido.
Instrução
São frases que indicam as ações a serem executadas. São compostas de um verbo no
imperativo/infinitivo mais um complemento.
Ex. Bata(bater) duas claras em neve
Ligue os faróis
Abra a porta
Programa
Ações de um algoritmo obedecendo à sintaxe de uma linguagem de programação.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 3 ~
2.3- Como Construir um algoritmo
a) Análise Preliminar
Entenda o problema, identifique os dados envolvidos e os resultados esperados.
b) Solução
Desenvolver algoritmo para resolver o problema
c) Teste de qualidade (Teste de mesa)
Ideal testar o algoritmo com o máximo de combinações possíveis
d) Alteração
Caso o resultado do algoritmo não seja satisfatório, altere-o e submeta a um novo teste.
e) Produto Final
Algoritmo concluído e testado.
2.4- Decomposição (Top-Down)
Dividir o problema em problemas menores.
Exemplo.
1. Troque o pneu furado.
1. Pegue o material necessário (Inicio)
2.Troque o pneu furado (Meio)
3.Guarde o material (Fim)
� Abra o porta-malas
� Retire o macaco, o estepe e a chave em cruz e o sinalizador
� Coloque o sinalizador atrás do carro
� Afrouxe as porcas do pneu furado
� Coloque o macaco na posição correta
� Levante o carro
� Retire as porcas
� Retire o pneu
� Coloque o estepe
Detalhamento
Pequeno
Um pouco mais
de Detalhes
Operações
Detalhadas
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 4 ~
� Coloque as porcas
� Desça o carro
� Retire o macaco
� Aperte as porcas do pneu trocado
� Guarde o macaco, o pneu furado , o sinalizador e a chave em cruz.
� Feche o porta-malas
Obs. Algumas instruções poderiam ser dividas mais uma vez.
2.5- Desenvolvimento Estruturado
São técnicas que permitem sistematizar e ajudar no desenvolvimento de algoritmos para
a resolução de grandes e complexos problemas computacionais.
Objetivos destas técnicas
- Facilitar o desenvolvimento do algoritmo
- Facilitar o seu entendimento pelos humanos
- Antecipar a comprovação de sua correção
- Facilitar a sua manutenção e modificação
- Permitir que o seu desenvolvimento possa ser empreendido simultaneamente por uma
equipe de pessoas
2.6- Formas de representação
a) Descrição Narrativa
Ex. Cálculo da média de um aluno:
– Obter as notas da primeira e da segunda prova
– Calcular a média aritmética entre as duas
– Se a média for maior ou igual a 7, o aluno foi aprovado, senão ele foi reprovado
Curso de Sistemas de InformaçãoAlgoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 5 ~
b) Fluxograma
Representação gráfica de algoritmos, ou seja, das instruções e/ou módulos do
processamento. Conhecido também como diagrama de blocos utiliza modelagem visual
para especificar o conjunto de instruções através de formas geométricas, facilitando a
compreensão da lógica utilizada pelo profissional. Existem atualmente vários padrões
para definir as formas geométricas a serem utilizadas para as diversas instruções
(passos) a serem seguidos pelo sistema, o padrão utilizado nesta disciplina, será definido
pelo professor durante as aulas.
Abaixo, veja alguns símbolos que são utilizados no fluxograma:
SÍMBOLO DESCRIÇÃO
- Marcador de Inicio ou fim do fluxograma
- Entrada de dados
- Saída de dados
.V.
- Estrutura condicional (Se – Então – Senão)
.F.
- Processamento
- Laço de repetição
- Conector
Vamos a seguir, exibir um fluxograma que teria o objetivo de calcular o valor diário de um
salário mínimo.
Seguindo uma lógica simples, teríamos que dividir o valor do salário mínimo (que
sabemos ser equivalente a R$ 360,00) e dividir este total por 30 (número de dias de um
mês).
Inicio Fim
Idade
“A idade é”,
Idade
Idade
>= 18
Nasc <- Ano - Idade
I de 1 até 10
passo 1
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 6 ~
Observe como ficaria este fluxograma:
• A princípio marcamos o início do fluxograma;
• Em seguida, armazenamos em uma posição de memória (variável), o resultado do
cálculo 360,00 dividido por 30;
• Em seguida, apresentamos a frase “O valor diário é” seguido do valor constante na
posição de memória (variável) VlrDia
O valor diário é: 32,00
• Em seguida, finalizamos o fluxo.
c) Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol.
A representação de um algoritmo na forma de pseudocódigo é a seguinte:
Algoritmo Nome_Do_Algoritmo
Variáveis
Declaração das variáveis
Procedimentos
Declaração dos procedimentos
Funções
Declaração das funções
Início
Corpo do Algoritmo
Fim
Inicio
VlrDia <- 360,00 / 30
“O valor diário
é:”, VlrDia
Fim
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 7 ~
Exemplo.
Algoritmo “Média”
Variáveis
N1, N2, Média: real
Início
Escreva (“informe o primeiro valor”)
Leia (N1)
Escreva (“informe o segundo valor”)
Leia (N2)
Média <- (N1+N2)/2
Se Média >= 7 Então
Escreva (“Aprovado!!”)
Senão
Escreva (“Reprovado!!)”
Fim se
Fim.
A identação (deslocamento para a direita) de uma instrução significa que tais instruções
estão subordinadas a instrução anterior e facilita em muito a compreensão e manutenção
do algoritmo e dos códigos fontes em uma linguagem de programação.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 8 ~
2.7- Tipos de processamento
a) Processamento Seqüencial
As instruções do algoritmo são executadas uma após a outra, sem que haja desvio na
seqüência das instruções, sendo cada instrução executada uma única vez.
Ex. Obter a média aritmética das quatro notas
1. Inicio
2. Some as duas primeiras notas
3. Some a terceira nota com o resultado da instrução 2
4. Some a Quarta nota com o resultado da instrução 3
5. Divida resultado da instrução 4 por 4
6. Fim
Se as quatro notas são 10,5,8,1 a execução das instruções ficara da seguinte forma
1. Inicio
2. 10+5 = 15
3. 15+8 =23
4. 23+1 =24
5. 24 / 4=6
6.Fim
b) Processamento Condicional
Um conjunto de instruções (pode ser apenas uma instrução) é executado ou não
dependendo de uma condição. Se a condição que estiver sendo testada tiver resposta
afirmativa, o conjunto de instruções é executado.
Ex. Obter a média aritmética das quatro notas. Se a média for maior ou igual a sete, o
aluno está aprovado, caso contrário, está reprovado.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 9 ~
1. Inicio
2. Some as duas primeiras notas
3. Some a terceira nota com o resultado da instrução 2
4. Some a Quarta nota com o resultado da instrução 3
5. Divida resultado da instrução 4 por 4
6. Se o resultado da instrução 5 for maior ou igual a 7
7. Aprove o aluno
8. Se o resultado da instrução 5 for menor que 7
9. Reprove o aluno
10.Fim
Se as quatro notas são 10,5,8,1 a execução das instruções ficara da seguinte forma
1. Inicio
2. 10+5 = 15
3. 15+8 =23
4. 23+1 =24
5. 24 / 4=6
6. Resposta negativa
7. Resposta afirmativa � resultado < 7
então � aluno reprovado
6. Fim
Note que a instrução 6 foi executada. Como a resposta foi negativa (a média foi inferior a
sete), o aluno foi reprovado não sendo executada a instrução sete.
c) Processamento com repetição
Conjunto de instruções (pode ser apenas uma) que é executado um determinado número
de vezes.
Sendo determinada uma condição de parada.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 10 ~
Ex. Obter a média aritmética das quatro notas de todos os alunos da sala.
1. Inicio
2. Para cada aluno da sala
3. Some as duas primeiras notas
4. Some a terceira nota com o resultado da instrução 3
5. Some a Quarta nota com o resultado da instrução 4
6. Divida o resultado da instrução 5 por 4
7. Fim
Se existem dois alunos na sala e suas notas são: 10, 5, 8, 1 e 4, 6, 7, 3 a execução das
instruções ficará da seguinte forma
3. 10+5 = 15
4. 15+8 =23
5. 23+1 =24
6. 24/4 = 6
3. 4+6 = 10
4. 10+7=17
5. 17+3=20
6. 20/4 = 5
Observe que um laço de repetição necessita sempre de uma condição de parada
que seja válida, caso contrário o programa entrará em um “laço” infinito.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 11 ~
2.8- Tipos de dados
Os dados são representados pelas informações a serem processadas por um
computador. Estas informações estão caracterizadas por quatro tipos de dados: inteiros,
reais, caracteres e lógicos.
a) Tipo Inteiro
Dados numéricos positivos ou negativos, excluindo-se qualquer número fracionário.
Ex. 35, 0, -56
b) Tipo Real
Dados numéricos positivos, negativos e números fracionários.
Ex. 1.2, -45.897
c) Tipo Caractere
São do tipo caractere as seqüências contendo letras, números e símbolos especiais. Uma
seqüência de caracteres deve ser indicada entre aspas.Sendo também conhecido como:
alfanumérico, string, literal ou cadeia.
Ex. “PROGRAMAÇÃO”, “Rua Alfa, 52 apto 1”, “7”, “249-4455”
d) Tipo Lógico
São do tipo lógico ou booleano os dados com valores verdadeiro/true (.T.) e falso/false
(.F.), sendo que este tipo poderá representar um dos dois valores.
2.9- Variáveis (identificadores)
Podemos imaginar uma variável como sendo um local onde se pode colocar qualquer
valor do conjunto de valores possíveis para o tipo definido para a variável.
Toda variável possui um Nome, um Tipo e um valor associado.
O nome de uma variável é utilizado para sua identificação e posterior uso dentro de um
programa, sendo assim, é necessário estabelecer algumas regras de utilização das
mesmas.
� O nome de uma variável pode conter um ou mais caracteres;
� O primeiro caractere do nome de uma variável deve ser sempre uma letra;
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 12 ~
� Não pode possuir espaços em branco;
� Não pode ser uma palavra reservada a uma instrução de programa;
� Não poderão ser utilizados outros caracteres que não sejam letras e números.
� Os nomes escolhidos devem explicitar seu conteúdo.
Qualquer caminho seguido no diagrama abaixo levara a um nome de variável valido:
Onde:
Letra: Qualquer letra do alfabeto [a..z, A..Z]
Digito: Dígitos de [0..9]
São identificadores válidos:
NOMEUSUARIO, FONE1, X, DELTA25, Z4, Idade, X1, mODELoDeVeiculo,
São identificadores inválidos:
*nome, 2Fone, NOME/USUARIO, mODELO-DE-VEICULO, Nota do Aluno
2.10- Declaração de variáveis
Para que os programas manipulem valores, estes devem ser armazenados em variáveis e
para isso, devemos declará-las de acordo com a sintaxe:
NomeVariável : Tipo
Ex.: VARIÁVEIS
SalMes, Inss: REAL
Nome: CARACTER[30] // Cadeia de caracteres
Sexo: CARACTER // Caractere
Nesta definição, deveremos seguir as regras seguintes:
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 13 ~
• VARIÁVEIS é a palavra chave, que deverá ser utilizada uma única vez na definição
das variáveis e antes do uso das mesmas;
• Variáveis de tipos diferentes deverão ser declaradas em linhas diferentes;
• Em uma mesma linha, quando quisermos definir variáveis de mesmo tipo, deveremos
usar o símbolo de vírgula (,) para separar as mesmas.
2.11- Constantes
Tudo aquilo que é fixo ou estável
Ex. o valor do ��- 3.14159
EXERCÍCIOS:
1 - Identifique os atributos e declare variáveis para um objeto automóvel
2 - Identifique os Atributos e declare variáveis para um objeto Pessoa
3 - Identifique os atributos e declare variáveis para um objeto Eleitor
4 - Assinale com C os nomes corretos de variável e com I os incorretos. Explique o que
está errado nos nomes incorretos.
(a) ( ) certo (b) ( ) *oi
(c) ( ) oi! (d) ( ) 'Lucio'
(e) ( ) soda# (f) ( ) i123453
(g) ( ) Nota do Aluno (h) ( ) o
(i) ( ) arquivox11 (j) ( ) 1ate
5 - Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I
os dados do tipo inteiro, com R os reais, com C os caracteres (literais), com B os lógicos
(booleanos), e com N aqueles para os quais não é possível definir o tipo de dado.
(a) ( ) -988786,987 (b) ( ) "34,50"
(c) ( ) "Casa do Titio" (d) ( ) .F.
(e) ( ) site (f) ( ) -33
(g) ( ) ".V". (h) ( ) 0,5
(i) ( ) .'V'. (j) ( ) ".F."
(l) ( ) 12,89 (m) ( ) 215333
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 14 ~
2.12- Operações Básicas:
a) Expressões
Na lógica de programação uma expressão tem o mesmo objetivo/conceito do termo
expressão da matemática comum, ou seja, um conjunto de variáveis e constantes que se
relacionam por meio de operadores aritméticos. Este conjunto de expressão e operadores
aritméticos (soma por exemplo), formam uma fórmula que, após solucionada fornecem
um resultado em específico.
Observe o gráfico a seguir:
Neste caso, a fórmula para se calcular a área de um retângulo é igual ao produto de sua
altura por sua base, poderemos então montar a fórmula como se segue:
AREA <- altura * base
Observe que no exemplo acima, utilizamos três variáveis: altura, base e área, sendo que
o resultado final é armazenado na variável AREA, ou seja, local de memória onde será
armazenado o resultado da avaliação da expressão e o operador é o sinal de ‘*’ que em
linguagem de computador representa a multiplicação.
Já que falamos em operadores, vamos ser um pouco mais claros neste tópico. Os
operadores são elementos ativos que tem influência sobre os operandos e através de sua
ação resultam em um determinado valor. No exemplo acima, os operandos seriam as
variáveis “altura” e “base” e o operador de multiplicação o “*”.
Em lógica de programação, os operadores podem ser classificados em dois grupos:
• Binários: quando trabalham sobre os operandos em uma expressão. Os mais
conhecidos são os símbolos + - * /, que representam a soma, subtração, multiplicação e
divisão respectivamente.
• Unários: quando tem influência sobre um único operando, indicando, por exemplo,
que este se trata de um número negativo e não vem acompanhado nenhum outro
operando. Exemplo: ao representar o número quatro negativo podemos utilizar (-4). Isso
não quer dizer que queremos subtrair o número quatro de outro valor.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 15 ~
Assim como classificamos os operadores, podemos também classificar as expressões
quanto ao seu tipo, conforme mostra a lista a seguir:
• Expressão aritmética: quando o resultado de sua avaliação for um número, podendo
este ser positivo ou negativo assim como inteiro ou real;
• Expressão lógica: quando o resultado de sua avaliação for um valor lógico, ou seja,
verdadeiro (.T.) ou falso (.F.);
• Expressão literal: quando o resultado de sua avaliação for um valor literal.
Cada uma das expressões vistas acima possui seus operadores em específico. A seguir,
vamos mostrar uma tabela contendo esses operadores:
b) Operadores
Na solução da grande maioria dos problemas é necessário que as variáveis tenham seus
valores consultados ou alterados e para isto devemos definir um conjunto de
OPERADORES, sendo eles:
• OPERADOR DE ATRIBUIÇÃO:
NomeDaVariavel ← Valor ou Expressão Atribuída.
ATENÇÃO!!
Em nossa disciplina usaremos o símbolo ← para atribuição.
• OPERADORES ARITMÉTICOS:
+ Adição a Div b Divisão Inteira
* Multiplicação a Resto b Resto da divisão de inteiros
- Subtração ou inversor do sinal. ^ Exponenciação ab (^ ou **)
/ Divisão
• FUNÇÕES PRIMITIVAS: SEN(x); COS(x); TG(x); ABS(x); INT(x); Raizq(x).
• OPERADORES RELACIONAIS:
São utilizados para relacionar variáveis ou expressões, resultando num valor lógico
(Verdadeiro ou Falso), sendo eles:
= - igual (==) <> - diferente (!=)
< - menor > - maior
<= - menor ou igual >= - maior ou igual
Curso de Sistemas deInformação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 16 ~
• OPERADORES LÓGICOS:
São utilizados para avaliar expressões lógicas, sendo eles:
.E. - e lógico ou conjunção.
.Ou. - ou lógico ou disjunção.
Não - negação.
A B A .E. B A .OU. B
VERDADEIRO/TRUE/.T./.V./1 VERDADEIRO/TRUE/.T./.
V./1
VERDADEIRO/TRUE/.T./.V.
/1
VERDADEIRO/TRUE/.T./.V./
1
VERDADEIRO/TRUE/.T./.V./1 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 VERDADEIRO/TRUE/.T./.V./
1
FALSO/FALSE/.F./0 VERDADEIRO/TRUE/.T./.
V./1
FALSO/FALSE/.F./0 VERDADEIRO/TRUE/.T./.V./
1
FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0
Tabela verdade dos operadores .E. e .OU.
APROVADO??
(Media >= 60) .E. (Frequencia > 0.75)
REPROVADO??
(Media < 60) .OU. (Frequencia < 0.75)
TABELA VERDADE DO OPERADOR .E.
A B A .E. B
1 1 1
1 0 0
0 1 0
0 0 0
TABELA VERDADE DO OPERADOR .OU.
A B A .OU. B
1 1 1
1 0 1
0 1 1
0 0 0
TABELA VERDADE DO OPERADOR .Não.
A Não(A)
1 0
0 1
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 17 ~
PRIORIDADE DE OPERADORES:
Durante a execução de uma expressão que envolve vários operadores, é necessário a
existência de prioridades, caso contrário poderemos obter valores que não representam o
resultado esperado.
A maioria das linguagens de programação utiliza as seguintes prioridades de operadores:
1º - Efetuar operações embutidas em parênteses "mais internos"
2º - Efetuar Funções
3º - Efetuar multiplicação e/ou divisão
4º - Efetuar adição e/ou subtração
5º - Operadores Relacionais
6º - Operadores Lógicos
OBS: O programador tem plena liberdade para incluir novas variáveis, operadores ou
funções para adaptar o algoritmo as suas necessidades, lembrando sempre, que estes
devem ser compatíveis com a linguagem de programação a ser utilizada.
Exercícios:
Na expressão A*B-C, qual será a seqüência de execução?
Na expressão (A*B)-C, qual será a seqüência de execução?
Na expressão A*(B-C), qual será a seqüência de execução?
Na expressão ( A*(B-C*(D/E))), qual será a seqüência de execução?
A lógica para se montar uma expressão é ponto determinante na questão do resultado ser
ou não verdadeiro, ou seja, de ser o resultado esperado.
2.13- Primeiras instruções
Após dominarmos os assuntos anteriormente tratados, passaremos a estudar as
instruções primitivas, ou seja, comandos básicos que executam tarefas consideradas
essenciais para a execução de qualquer programa de computador. Um exemplo deste
tipo de instrução são aquelas responsáveis pela comunicação do operador com o
computador por meio do teclado (entrada de dados) ou ainda a impressão de um relatório
(saída de dados “sem contar com a parte estética do relatório, alinhamento de colunas,
etc...).
Toda linguagem de programação tem por obrigação possuir instruções primitivas, pois
sem estas não existiria comunicação com os periféricos.
Antes de qualquer coisa, você saberia diferenciar periféricos de entrada e de saída de
dados? A resposta é simples, periféricos de entrada são aqueles responsáveis pela
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 18 ~
passagem de dados do mundo externo para a memória do computador, como por
exemplo, o teclado, unidade de CD-ROM, etc... Já os periféricos de saída recebem os
dados do computador para outro equipamento externo, como por exemplo, o monitor de
vídeo, impressora, etc...
Toda instrução, primitiva ou não possui uma sintaxe, ou seja, uma regra que deverá ser
seguida para a construção de seu código e caso esta não seja obedecida, o seu
programa pode simplesmente não funcionar.
Devemos saber também que o conjunto de ações que serão realizadas pelo computador
após a execução de um determinado comando é conhecida como semântica.
EXERCÍCIOS:
1) Quais os valores das expressões a seguir:
2 + 3 * 6
12 / 3 * 2 – 5
31 / 4
31 div 4
31 Resto 4
9 ** (3-1)
3 ** 3
2) Considere o seguinte trecho do algoritmo:
Algoritmo “Exercicio2”
Variaveis
Pig,Vari, Total, A, I : Inteiro
ValorA, X : Real
Inicio
Vari ← 2
Total ← 10
ValorA ← 7.0
A ← -4
I ← 80
X ← 4.0
X ← Total / Vari
X ← X + 1
A ← A + I
Pig ← 10
A ← I div Pig
A ← A + I Resto 6
ValorA ← Pig * ValorA + X
Fim
Pig
Vari
Total
A
I
ValorA
X
Mostre quais os valores armazenados em cada uma das variáveis após a execução
de cada um dos comandos do algoritmo acima.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 19 ~
3) Considerando o conteúdo das variáveis conforme a seguir, diga qual o valor de
cada uma das expressões:
Nome Apelido Qquer Aux Resp K Karol
“ANA” “flor” “ana” 10 .F. 3 2
a) Nome == Apelido
b) (Nome == Qquer) .E. (Nome <> “ANa”)
c) Nome == “Nome”
d) (K >= Karol + 1) .OU. (Qquer == “ana”)
e) Não Resp
f) (Não Resp) .E. (K < Aux)
g) (Aux <= Aux / K + K) .E. ((Resp) .OU. (Apelido == “flor”))
h) K > Karol + (K – Karol)
i) ((Não Resp .E. Resp) .OU. (Não Resp)) .E. (Resp .OU. (Não Resp))
4) Faça o teste de mesa do algoritmo a seguir:
Algoritmo “exercicio4”
Variaveis
Q, W, R : inteiro
Ex : Real
Inicio
Q ← 10
Q ← 10 + 30
W ← -1
W ← W + Q
Q ← Q Resto W
Q ← W div (Q + 4)
Ex ← 2 * Q / W
R ← 0
R ← R + 1
R ← R + 1
Fim
5) Considerando as variáveis abaixo, indique o resultado de cada uma das
expressões a seguir:
X Y Z W Q
.V. 2 4 1,50 “PROVA”
a) (2 * (5 resto 3) + Y + W * 2) > Z .OU. (Y < Z -1) .E. não((Z * (Y – 1) + Y) < 100) ( )
b) (X .OU. .V.) .OU. (Z * 2 div Y < W * Y) ( )
c) .F. .E. X = não(.V.) .OU. Y < Z ( )
d) Y + 4 * (Z RESTO 3 + 1) ( )
e) (3 + W – (Y + 1) / 2) + 1,5 ( )
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 20 ~
6) Dada a declaração de variáveis:
variáveis
I1, I2, I3 : inteiro
R1, R2, R3 : real
L1, L2 : literal
B1, B2 : lógico
Para as variáveis declaradas acima, às quais são dados os valores seguintes:
I1 ← 9 R3 ← 6.0
I2 ← 7 L1 ← 'Olá'
I3 ← 6 L2 ← 'A1'
R1 ← 5.5 B1 ← .V.
R2 ← 3.92 B2 ← .V.
Determine o resultado da avaliação das expressões abaixo. Se caso não for
possível resolver a expressão responda “Expressão Inválida”:
(a) (I1+I2) > 10 .OU. (I1+I2) = (I3+R1)
(b) (I1^2) + (I3^ 2)
(c) L1 <> L2
(d) (I1+I2) > 10 .OU. (I1+I2) = (I3+R1) .E. (I1>=I3) .E. (R1 >= I3)
(e) (R1 * I1) / (R3^B1) - B2
(na sintaxe do VisuAlg)
7) Faça o teste de mesa do algoritmo a seguir:
algoritmo "horas"
var
ht:inteiro
sm,a,a1,b,c,d:real
inicio
escreval("informe o salario minimo:")
leia(sm)
escreval("informe as horas trabalhadas:")
leia(ht)
a <- sm /2
b <- ht*a
c <- b*3/100
d <- b - c
escreval("Uma hora trabalhada corresponde a :",a)
escreval("o salario bruto é :",b)
escreval(" imposto :",c)
escreval("salario bruto menos imposto:",d)
fimalgoritmoCurso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 21 ~
8) Faça o teste de mesa do algoritmo a seguir:
algoritmo "peso"
var
idade,pesideal,altura:real
sexo:caracter
inicio
escreval("Informe o sexo: ")
leia(sexo)
escreva("Informe a altura: ")
leia(altura)
se sexo = "M"entao
pesideal <-(72.7 * altura)-58
senao
pesideal<-(62.1 * altura)-44,7
fimse
escreval("Peso ideal é: ",pesideal)
fimalgoritmo
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 22 ~
3- COMANDOS DE ENTRADA E SAÍDA:
No algoritmo é preciso representar a troca de informações que ocorrerá entre o
mundo da máquina e o nosso mundo, para isso, devemos utilizar comandos de entrada e
saída. Em nível de algoritmo esses comandos representam apenas a entrada e a saída
da informação, independe do dispositivo utilizado (teclado, discos, impressora,
monitor,...), embora nas linguagens de programação essa independência não existe, ou
seja, nas linguagens de programação temos comandos específicos para cada tipo de
unidade de Entrada/Saída.
Comando de Entrada de Dados
Leia (variável_1, variável_2,...)
Comando de Saída de Dados
Escreva (expressão_1, expressão_2,...)
Algoritmo “media”
Variáveis
quilometragem,litros,media: REAL
Inicio
ESCREVA (“Entre com a quilometragem inicial e a Quantidade de litros gastos”)
LEIA (quilometragem)
LEIA (litros)
Media ← quilometragem/litros
ESCREVA (“A média é:”, media)
Fim.
Observe que no pseudocódigo, quando queremos enviar uma expressão como saída, a
mesma é colocada dentro de aspas, porém quando queremos enviar o conteúdo de uma
variável, esta deverá estar fora de aspas.
EXERCÍCIOS:
01 - Construa o fluxograma e o algoritmo que receba um número, calcule o seu quíntuplo
e mostre o número recebido e o resultado.
02 - Construa o fluxograma e o algoritmo que receba um número, calcule a sua metade,
mostre o resultado.
03 - Construa o fluxograma e o algoritmo que receba dois números, calcule o produto
entre eles, mostre o resultado e os números recebidos.
04 - Construa o fluxograma e o algoritmo que receba três números, calcule a diferença do
primeiro pelo segundo, o resultado deve ser multiplicado pelo terceiro número e mostre os
resultados obtidos.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 23 ~
05 - Construa o fluxograma e o algoritmo que receba dois números, calcule: a divisão, a
multiplicação, a soma, a diferença entre eles e mostrar os resultados.
06 - Construa o fluxograma e o algoritmo que receba, a idade de três pessoas, calcule e
mostre a média das idades.
07 - Construa o fluxograma e o algoritmo que receba a matrícula, o nome e o salário-base
de um funcionário, calcule o salário líquido a receber e o total do desconto, sabendo que:
o imposto a ser descontado é de 12% sobre o salário-base. Mostre os resultados e os
dados do funcionário.
08 - Uma Empresa de Energia Elétrica calcula o valor da conta de luz de acordo com o
consumo em Kw/h. Faça o fluxograma e o algoritmo que receba o número da conta, a
leitura anterior e a leitura atual, calcule o valor a ser pago, sabendo que a tarifa do Kw/h é
de 0.20725. Mostre o número da conta, o valor da conta e o consumo de luz de um
usuário.
09 - Faça o fluxograma e o algoritmo que receba a matrícula e três notas do aluno, calcule
a sua média sabendo que a primeira nota tem peso dois, a segunda peso três e a terceira
peso quatro. Mostre a matrícula e a média do aluno.
10 -. Uma loja está vendendo os seus produtos a prazo com juros de 10% e a vista com
desconto de 5%. Faça o fluxograma e o algoritmo que receba o valor da compra, calcule o
valor à vista, a prazo e mostre os resultados.
11 - Faça o fluxograma e o algoritmo que receba a matrícula, o nome e o salário-base de
um funcionário, calcule os descontos com vale transporte (vt) 3% e vale refeição (vr) 5%.
Mostre o nome, a matrícula e os valores descontados separadamente.
12 - Um comércio está vendendo os seus produtos com um desconto de 25%. Faça o
fluxograma e o algoritmo que calcule e mostre o valor do desconto obtido em uma
determinada compra, valor da compra com e sem desconto.
13 - Uma firma paga a seus vendedores o salário-base e uma comissão de 20% sobre o
valor das vendas do mês. Faça o fluxograma e o algoritmo que calcule e mostre, a
comissão e o líquido a receber de um vendedor.
14 - Faça o fluxograma e o algoritmo que receba a matrícula, o salário-base de um
funcionário, calcule 7% de gratificação sobre as vendas da loja, mostre a matrícula, o total
dos vencimentos, a gratificação e o salário-base do funcionário.
15 - O custo ao consumidor de um carro novo é a soma do custo de fábrica, a
percentagem do distribuidor e a percentagem da concessionária (aplicados ao custo de
fábrica). Faça o fluxograma e o algoritmo que receba o custo de fábrica de um carro,
informe o custo ao consumidor. Sabendo que: a percentagem do distribuidor é de 28% e a
percentagem da concessionária é de 48%. Mostre os valores separadamente.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 24 ~
16 - Construa o fluxograma e o algoritmo que receba o código, o preço unitário, a
quantidade e o desconto em percentual de um produto, calcule o valor total, o total a
pagar com desconto e o valor do desconto. Mostre o código do produto e os resultados.
4- COMANDOS DE CONTROLE DE FLUXO:
Para representar a solução de um problema devemos escrever o conjunto de passos a
serem seguidos, sendo que a maioria dos problemas exige uma dinâmica na sua solução,
impondo assim que os algoritmos executem o conjunto de instruções de acordo com as
possíveis situações encontradas no problema original. De acordo com a Programação
Estruturada os mecanismos utilizados para esse controle são: Seqüência, Seleção e
Repetição.
• SEQUÊNCIA: usada para executar comandos passo a passo, sabendo que todos
eles serão executados na ordem de escrita, sem nenhum desvio. Uma seqüência
pode possuir um ou vários comandos, os quais devem ser delimitados pelos
identificadores Início e Fim.
Inicio
Comando_1
...
Comando_n
Fim
• SELEÇÃO: usada para tomar decisões, ou seja, desviar a execução do algoritmo
de acordo com uma condição, podendo ser simples ou composta.
Simples Composta
Se (Expressão Lógica) Então
Seqüência_1
Fim se
Se (Expressão Lógica) Então
Seqüência_1
Senão
Seqüência_2
Fim se
Imagine a seguinte situação: em uma empresa, será solicitado o salário de um
determinado funcionário para se calcular seu novo salário, sendo que, se este tiver um
salário superior a R$ 1500,00, o reajuste será de 5%, caso contrário o reajuste será de
8%.
Observe que teremos que testar o valor do salário, para saber o índice a ser aplicado.
Vamos criar então um pseudocódigo com este objetivo:
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 25 ~Algoritmo testa_salario
Variáveis
Salario: REAL
Salario_final: REAL
Inicio
Escreva(“Informe o salario”)
Leia (salario)
Se salario <= 1500 então
Salario_final=(salario*1,08)
senão
Salario_final=(salario*1,05)
Fim se
Escreva(“Salario final = ”,Salario_final)
Fim.
Observe que, durante a execução do pseudocódigo, após obtermos, através de uma
instrução de entrada de dados, o valor do salário do funcionário, efetuamos um teste “Se”,
que possui duas condições, uma verdadeira e uma falsa. As instruções que serão
executadas no caso de um teste verdadeiro devem estar abaixo da cláusula “Então”, já as
instruções que serão executadas no caso de um teste falso, devem estar abaixo da
cláusula “senão”. A instrução “Fim_se” termina o bloco de testes. Observe a sintaxe de
uma estrutura de decisão a seguir:
Se <teste>
Então
Lista de comandos a serem executados caso teste=verdadeiro
Senão
Lista de comandos a serem executados caso teste=falso.
Fim se
Em fluxograma, uma estrutura de decisão é representada pelo símbolo:
Os símbolos que estiverem na direção de “True” serão executados caso o teste seja
verdadeiro. Já os símbolos que estiverem na direção de “false” serão executados caso o
teste tenha um resultado falso.
teste .T.
.F.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 26 ~
Observe o trecho do pseudocódigo acima, representado no fluxograma:
Existem casos em que não basta ter apenas as “direções” verdadeiro e falso para tomar
uma determinada decisão, e sim, uma série de testes sobre um mesmo bloco. Este tipo
de estrutura é chamado de estrutura de decisão do tipo “ESCOLHA”.
Observe a seguir a sintaxe da estrutura de decisão do tipo escolha em pseudocódigo:
Faça Caso
Caso <condição 1>
Lista de instruções caso condição 1 = verdadeira
Caso <condição 2>
Lista de instruções caso condição 2 = verdadeira
Caso <condição 3>
Lista de instruções caso condição 3 = verdadeira
Outro caso
Lista de instruções caso todas as condições = falsa
Fim_Caso
salario
<=
300
salario_final =
salario * 1,08
salario_final =
salario * 1,05
True
False
salario_final
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 27 ~
No fluxograma, o símbolo que representa cada uma das condições acima, é o mesmo que
o símbolo que representa a estrutura de decisão. Veja a sintaxe da estrutura de decisão
de escolha no fluxograma:
Vamos imaginar um exemplo parecido, de reajuste de salário, porém teremos as
seguintes situações para reajuste:
Salários inferiores a R$ 400,00 = reajuste de 9%
Salários iguais a R$ 400,00 e inferiores a R$ 800,00 = reajuste de 7%
Salários iguais a R$ 800,00 e inferiores a R$ 1000,00 = reajuste de 5%
Fora das faixas supracitadas = reajuste de 3%
Veja o pseudocódigo do exemplo citado:
Algoritmo testa_salario2
Variáveis
Salário , Salario_final: REAL
Inicio
Ler salario
Faca caso
Caso salario < 400
Salario_final=(salario*1.09)
Caso salario >= 400 .e. salario<800
Salario_final=(salario*1.07)
Caso salario>=800 .e. salario<1000
Salario_final=(salario*1.05)
Outro caso
Salario_final=(salario*1.03)
Escrever Salario_final
Fim.
Teste1
True
False
Teste2
Teste3
False
False
Instruções
Condição 01
True Instruções
Condição 02
True Instruções
Condição 03
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 28 ~
Observe que, temos aqui uma novidade, ou seja, em uma única condição, estamos na
verdade realizando dois testes, isto porque usamos o operador lógico “AND”“. e.”, ou seja,
se salário menor ou igual a 400 e salário menor que 800 faça isso... assim
sucessivamente.
Quando usamos o operador lógico “.e.”, os testes, neste caso dois, que formam o caso,
devem ser verdadeiros. O outro operador lógico “.ou.”, retorna verdadeiro caso um dos
testes que formam o conjunto satisfaça a uma determinada condição.
Como exercício, crie o fluxograma do pseudocódigo visto acima. A seguir iremos estudar
as estruturas de repetição e desenvolver mais exemplos sobre o que estudamos neste
módulo.
EXERCÍCIOS:
Seleção Simples:
01 - Construa o fluxograma e o algoritmo que receba um número e mostre o seu quíntuplo
somente quando o número digitado for maior que trinta.
02 - Construa o fluxograma e o algoritmo que receba um número e mostre a sua metade
somente quando ela for maior que cinqüenta.
03 - Construa o fluxograma e o algoritmo que receba um número e mostre o número e o
seu dobro somente quando o número for maior que noventa e menor que cem.
4 - Construa o fluxograma e o algoritmo que receba. um número e mostre a sua quinta
parte somente quando ela for menor que cinqüenta ou maior que mil.
05 - Construa o fluxograma e o algoritmo que receba um número e mostre o seu sêxtuplo
somente quando o resultado não for menor que trezentos.
06 - Construa o fluxograma e o algoritmo que receba um número e mostre o número e o
sêxtuplo somente quando o número for maior que noventa.
07 - Construa o fluxograma e o algoritmo que receba dois números e mostre a diferença
somente quando o primeiro for maior que o segundo.
08 - Construa o fluxograma e o algoritmo que receba um número e mostre o número
somente quando o número for par.
09- Construa o fluxograma e o algoritmo que receba um número e mostre o número se ele
estiver entre quinze(inclusive) e quarenta.
10 - Construa o fluxograma e o algoritmo que receba um número e mostre o número
somente se ele estiver entre trinta e duzentos e oitenta e um (inclusive).
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 29 ~
11 - Faça o fluxograma e o algoritmo que receba nome, idade e a altura, exiba somente o
nome da pessoa com 1, 70m e idade acima de 17 anos.
12 - Faça o fluxograma e o algoritmo que receba o código, o valor unitário e a quantidade
de mercadoria adquirida. Calcule 6% de descontos somente para o total da compra que
ultrapassar a R$ 100,00. Ao final mostre o código, o total a pagar com, sem desconto e o
valor do desconto.
13 - Faça o fluxograma e o algoritmo que receba o número da conta, o nome, o endereço
e o consumo em kw/h, informe o número da conta, o nome e o endereço da conta de luz
em que o consumo for inferior a 100 kw/h.
14 - Faça o fluxograma e o algoritmo que receba Nome, Turma e Três Notas do aluno.
Calcule a média ponderada considerando: primeira nota peso um, segunda nota peso
dois e terceira nota peso três, informar o nome, a turma e a média do aluno que a média
for inferior a sete.
15 - Construa o fluxograma e o algoritmo que receba um número e mostre se o número
recebido é ímpar.
16 - Faça o fluxograma e o algoritmo que receba o salário de um funcionário, calcule e
mostre o novo salário, sabendo-se que este sofreu um aumento de 25%. Este aumento é
válido para os funcionários com mais de cinco anos de serviço.
17 - Faça o fluxograma e o algoritmo que receba o salário de um funcionário, calculee
mostre o salário a receber, sabendo-se que esse funcionário tem gratificação de 5% sobre
o salário-base. Pagará imposto de 7% sobre o salário, o funcionário cujo salário mais a
gratificação ultrapassar a R$1.000,00.
Seleção Composta:
01 - Construa um algoritmo que receba dois números e mostre quando o primeiro for
maior e quando for menor que o segundo.
02 - Construa um algoritmo que receba dois números e mostre quando o primeiro for
maior, quando for menor e quando for igual ao segundo.
03 - Construa um algoritmo que receba três números e mostre quando o número estiver
na situação de maior número digitado.
04 - Faça um algoritmo que receba dois números e informe a diferença do maior pelo
menor.
05 - Faça um algoritmo que receba a matrícula e duas notas do aluno. Calcular a média e
mostrar a matrícula do aluno com as seguintes mensagens de acordo com a tabela
abaixo:
média> 7,0 - "Aluno Aprovado"
média = 7,0 - "Aluno em Recuperação"
média < 7,0 -" Aluno Reprovado"
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 30 ~
06 - Faça um algoritmo que receba o código, o preço e o tamanho da camiseta. Sabe-se
que de acordo com o tamanho há um desconto conforme tabela abaixo. Informar o
código, e o valor do desconto.
tamanho "G" - 1 0%
tamanho "M" - 20%
tamanho "P" - 30%
07 - Faça um algoritmo que receba o nome e o salário do funcionário, calcule os
descontos conforme a tabela e informe o nome, o salário a receber e os descontos
(separados) do funcionário.
SALARIO INSS IR
Até 500,00 3,00% 2,00%
500,01 a 950,00 5,00% 4,00%
Acima de 950,00 7,00% 6,00%
08- Faça um algoritmo que receba o código e o total de vendas do vendedor, calcule a
comissão conforme a tabela e informe o código e a comissão do vendedor.
TOTAL DAS VENDAS COMISSÃO
Até 100,00 0,00%
Acima 100,00 até 350,00 5,00%
Acima 350,00 10,00%
09 - Faça um algoritmo que receba a matrícula e o salário do funcionário, calcule a
gratificação conforme a tabela e informe a matrícula, salário a receber e o valor da
gratificação do funcionário.
SALÁRIO GRATIFICAÇÃO
até 500,00 15,00%
500,01 a 1.000,00 10,00%
Acima 1.000,00 5,00%
10 - Faça um algo ritmo que receba um número e informe quando ele for maior e menor
que o número 100.
11 - Faça um algoritmo que receba dois pesos e mostre quando o primeiro peso for maior
que o segundo peso.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 31 ~
12 - Faça um algoritmo que receba duas idades e mostre quando a primeira idade for
maior, quando for igual e quando for menor que a segunda idade (mostrar
separadamente)
13 - Faça um algoritmo que receba três alturas e informe quando a altura quando ela
estiver na situação de maior altura.
14 - Faça um algoritmo que receba o nome e o sexo de uma pessoa. Informar o nome
quando masculino e quando feminino.
15 - Faça um algoritmo que receba a matrícula e o salário do funcionário. Sabe-se que de
acordo com o salário há uma gratificação conforme tabela abaixo. Informar a matrícula e a
gratificação.
Acima de R$300,OO - 5%
Abaixo de R$ 300,00 - 10%
R$ 300,00 - 6%
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 32 ~
5- ESTRUTURAS DE REPETIÇÃO
Vamos falar um pouco sobre as estruturas de repetição, ou seja, uma parte do código que
deverá ser executada n vezes.
Em linguagem de programação, as estruturas de repetição são conhecidas como laços
(loops).
Trabalhamos basicamente com dois tipos de estruturas de repetição:
1. LAÇOS CONTADOS: Quando se tem, de forma prévia, o número de vezes que uma
determinada seqüência de comandos será executada.
2. LAÇOS CONDICIONAIS: Aqueles que não possuem um número pré-determinado de
vezes que a estrutura de comandos será executada, porém este número estará vinculado
a uma determinada condição.
Laços Contados (PARA):
Em pseudocódigo, utilizamos a seguinte sintaxe para laços contados:
Para <variável> = <valor inicial> até <valor final> Passo <numero> faca
<Comandos>
Fim para
Onde: A variável é aquela que irá receber a contagem. Os valores iniciais e finais
representam onde começa e termina a contagem da repetição. O número de Passo
(incremento) estipula a forma da contagem, como por exemplo, incrementos de 1 em 1, 2
em 2 .... e após , a seqüência de comandos que será executada durante o laço.
No fluxograma, utilizamos a seguinte sintaxe para representar laços contados:
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 33 ~
A lógica de trabalho do laço contado é apresentada a seguir:
1. No inicio da leitura do código/fluxo, o valor inicial é atribuído à variável;
2. O valor da variável é comparado ao valor final;
3. Se o valor da variável for maior que o valor final, a seqüência de comandos que faz
parte do laço não é executado e o controle do processo passa para a próxima linha após
o final do laço (FIM PARA) ou para o símbolo ao lado (no caso de fluxograma);
4. Se o valor da variável for menor ou igual ao do valor final, a seqüência de comandos é
executada e, ao final do último comando, o valor do incremento é adicionado a variável
e retorna-se à comparação entre variável e valor_final, repetindo todo o processo anterior.
Vale lembrar que o incremento não é de declaração obrigatória, e, caso não seja
declarado, assume automaticamente o valor 1.
laços Condicionais ENQUANTO/REPITA ATE:
Já os laços condicionais são aqueles cujo conjunto de comandos em seu interior é
executado até que uma determinada condição seja satisfeita.
ENQUANTO:
O pseudocódigo mais comum utilizado neste sentido (enquanto) é o apresentado a seguir:
Enquanto <condição> Faça
<seqüência de comandos>
Fim enquanto
A sintaxe de execução deste é:
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 34 ~
1. No inicio da execução do enquanto, a condição é testada;
2. Se o resultado do teste for verdadeiro, a seqüência de comandos é executada e ao
término desta, retorna-se ao teste da condição;
3. Sendo a condição falsa, o controle da aplicação passa para a próxima linha após o
Fim_enquanto.
No fluxograma, poderemos representar este tipo de operação da forma que segue:
Em resumo, neste tipo de operação, a execução somente abandonará o laço quando a
condição for falsa e neste caso a condição de parada deve ser elaborada com todo o
cuidado para evitar laços infinitos na execução do algoritmo.
REPITA ATE:
Outro tipo de laço condicional é o REPITA ATE, apresentado a seguir:
Repita
<seqüência de comandos>
Ate <condição>
A sintaxe de execução deste é:
1.Executa a primeira iteração do laço;
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________~ 35 ~
2.Se o resultado do teste for verdadeiro, a seqüência de comandos é executada e ao
término desta, retorna-se ao teste da condição;
3.Se a condição for falsa, executa nova iteração do laço, se a condição de parada for
verdadeira encerra a execução do laço
No fluxograma, poderemos representar este tipo de operação da forma que segue:
Veja um exemplo a seguir, utilizando-se de pseudocódigo, onde iremos apresentar a
soma de uma contagem de números de 1 à 5:
Algoritmo soma
Variáveis
Soma: REAL // Acumulador
Contador: INTEIRO // Contador
Inicio
Soma = 0
Escrever“A soma dos números de 1 à 10 é igual a”
Para contador = 1 até 10 faca
Soma = soma + contador
Fim para
Escrever soma
Fim.
No exercício acima, teremos como resultado a expressão :
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 36 ~
A soma dos números de 1 à 10 é igual a 55
Desenhe o fluxograma do pseudocódigo acima descrito.
EXERCÍCIOS:
Laços contados:
01 - Construa um algoritmo que receba trinta números e mostre a soma total dos números
recebidos.
02 - Construa um algoritmo que receba cinqüenta números e mostre a média dos
números que foram digitados.
03 - Construa um algoritmo que receba a idade de cem pessoas e mostre a média das
idades destas pessoas.
04 - Construa um algoritmo que leia cem números e mostre qual o maior número que foi
lido.
05 - Construa um algoritmo que leia cinqüenta números e mostre qual o menor número
lido.
06 - Construa um algoritmo que leia cento e cinqüenta números e mostre qual o maior e o
menor número lido.
07 - Construir um algoritmo que receba cem números e informe a média e a soma entre
os números positivos.
08 - Construa um algoritmo que receba quinze números quaisquer e informe qual o maior
e o menor entre os números que foram lidos.
09 - Escrever um algoritmo que receba 100 números, e contar quantos deles estão no
intervalo [10,20] e quantos deles estão fora do intervalo, escrevendo estas informações.
10 - Faça um algoritmo que receba o peso, a idade e a altura de cem pessoas, calcule e
informe os valores de: maior peso, menor peso, maior altura, menor altura, maior idade e
menor idade deste grupo.
11 - Escrever um algoritmo que lê 50 números e informar quantos destes valores são
negativos.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 37 ~
12 - Uma loja tem 150 clientes cadastrados e deseja mandar uma correspondência a cada
um deles anunciando um bônus especial. Escreva um algoritmo que leia o nome, o
endereço do cliente e o valor de suas compras e calcule um bônus de 10% se o valor das
compras for menor ou igual a 500.000 e de15 %, se superior a este valor.
13 - Faça um algoritmo que receba o salário-base dos1200 funcionário de uma fábrica,
calcular os descontos com vale transporte (vt) 2% e vale refeição (vr) 3%.Mostrar o total
dos descontos efetuados separadamente.
14 - Faça um algoritmo que receba o número do apartamento e o consumo em kw/h dos
setenta e dois apartamentos deste edifício. Informe os apartamentos com. o consumo
inferior ou igual a 100 kw/h(inclusive} e os que ultrapassaram este consumo..
15 - Faça um algoritmo que receba o tamanho de 500 camisetas existente no
almoxarifado e ao final informe quantas camisetas de cada tamanho P, M, G, GG.
Laços condicionais:
1 - Construa um algoritmo para somar os números recebidos. O algoritmo encerra quando
digitado o número zero.
2 - Construa um algoritmo que leia vários números e mostre quantos números foram lidos.
O algoritmo encerra quando digitado o número O.
3 - Faça um algoritmo que receba vários números e mostre a média dos números
recebidos. O final é conhecido pelo número zero.
4 - Faça um algoritmo que receba vários números, calcule e informe a média, a soma e a
quantidade de números recebidos. O algoritmo encerra quando digitado o número O.
5 - Faça um algoritmo que receba a sigla da cidade de origem de um grupo de pessoas,
ao final informe quantas foram digitadas das cidades do Rio de Janeiro, Belo Horizonte e
Santa Catarina (separadamente). O algoritmo encerra quando digitado "fim".
6 - Elabore um algoritmo que recebe o sexo dos alunos de um determinado colégio e
informe o número de alunas e alunos separados e o número de digitações inválidas. O
algoritmo encerra quando digitado o sexo "fim".
7 - Construa um algoritmo que receba o estado civil (cl sI v) de um grupo de pessoas,
calcular e informar a quantidade de solteiros, casados, viúvos, o número de digitações
válidas e inválidas. O algoritmo encerra quando digitado o estado civil "Fim"
8 - Foi feita uma pesquisa entre os habitantes de uma região. Foi coletado o salário de
cada habitante. Calcule e informe:
a) a média de salário;
b) o maior e o menor salário:
Encerre a entrada de dados quando for digitado o salário O.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 38 ~
9 - Foi realizada uma pesquisa de algumas características físicas da população de uma
certa região, a qual coletou os seguintes dados referente a cada habitante para serem
analisados:
- sexo (masculino e feminino) - olhos (claros e pretos) - cabelos ( louros, castanhos ou
pretos) Faça um algoritmo que calcule e informe a quantidade de pessoas do sexo
feminino, com olhos claros e cabelos louros. O final do conjunto de habitantes é
reconhecido pelo sexo em branco" "
10 - Faça um algoritmo que receba a idade e a altura de um conjunto de pessoas. Calcule
e informe média de altura e da idade das pessoas. Para encerrar a entrada de dados,
digite a idade igual a O.
11 - Construa um algoritmo que receba o peso dos bois de uma determinada Fazenda.
Calcular e informar a quantidade de bois, o maior peso e o menor peso. Encerra quando
digitado o peso o.
12 - Faça um algoritmo que receba a altura de um grupo de pessoas. Calcule e informe a
maior altura e a menor altura.
13 - Foi feita uma pesquisa de audiência de canal de televisão em várias casas de uma
determinada cidade. Será fornecido o número da casa e o do canal de televisão que
estiver ligado no momento, caso a televisão estiver desligada é fornecido o número zero,
bem como para a residência fechada. Calcular e informar: A quantidade de residências
fechadas, televisões desligadas e a quantidade de residências com a televisão
sintonizada no canal dois. Encerra a pesquisa quando fornecido para o número da
residência um valor negativo.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 39 ~
6- ANINHAMENTOS
Vamos falar sobre aninhamentos, ou seja, ter um conjunto de comandos de outra
construção dentro de qualquer um dos tipos de construções apresentadas até este
momento, para isso, terá que ter a construção interna embutida dentro da construção
externa.
O conjunto de comandos é um conjunto de comandos simples, podem ser inclusive de
instruções primitivas.
Por exemplo, temos uma determinada situação:
Vamos testar a região na qual um determinado cliente tem o seu domicílio e, dentro do
estado na qual este cliente reside naquela região,teremos uma tarifa de postagem
diferenciada.
Na verdade, teremos testes dentro de testes e cada um com um determinado
procedimento.
Vamos passar então para os exercícios propostos.
• Exercício 001 :
Escreva um pseudocódigo que irá receber a entrada de dois números e irá retornar como
saída a entrada (número) de maior valor.
• Exercício 002 :
Escreva um pseudocódigo na qual o usuário irá ter a oportunidade de entrar com 5
números e o sistema irá gerar como resultado a soma dos 5 números entrados pelo
usuário.
• Exercício 003 :
Uma empresa irá oferecer um reajuste salarial, cujo percentual será decidido através das
seguintes situações:
• Funcionários do sexo masculino com tempo de casa superior ou igual a 10 anos terão
direito a um reajuste de 5%;
• Funcionários do sexo masculino com tempo de casa inferior a 10 anos terão direito a
um reajuste de 3%;
• Funcionários do sexo feminino com tempo de casa superior ou igual a 8 anos terão
direito a um reajuste de 5%;
• Funcionários do sexo feminino com tempo de casa inferior a 8 anos terão direito a um
reajuste de 3%;
• Funcionários em qualquer uma das situações acima, porém com mais de um
dependente terá ainda um reajuste de 2% sobre o salário reajustado anteriormente.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 40 ~
• Exercício 004 :
Escreva um fluxograma na qual o usuário dará a entrada de 10 números e ao final o
sistema irá exibir o maior número informado pelo usuário.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 41 ~
7- ESTRUTURAS DE DADOS COMPOSTAS
O tema deste módulo será o das variáveis indexadas. Com uso frequente na
programação convencional, variável indexada é um conjunto de variáveis do mesmo tipo,
referenciadas pelo mesmo nome e que armazenam valores distintos.
A sua distinção se dá pela divisão da variável, possuindo esta uma posição de
armazenamento dentro de seu conjunto, sendo que a alteração ou a leitura do seu valor é
realizada por meio de índices, daí o nome indexada. Existem dois tipos de variáveis
indexadas:
• Vetor: quando a variável indexada possui um único índice (uma dimensão);
• Matriz: quando a variável indexada possui dois índices (duas dimensões –
X,Y/Coluna,Linha)
O número de índices dentro de uma variável é denominado dimensão.
Para se definir uma variável indexada, utilizamos a seguinte sintaxe:
Tipos
tipo Nome_tipo = Vetor[numero de elementos] : tipo de dado
Variáveis
Nome_variável_Vetor : Nome_tipo
...
...
Veja a seguir alguns exemplos de definição de variáveis indexadas:
Tipos
tipo V = vetor[5] : CARACTER[30]
Variáveis
Nome : V
No exemplo acima, criamos na verdade cinco variáveis nomes, porém elas estão divididas
da seguinte forma:
Nome[1], Nome[2], Nome[3], Nome[4], Nome[5]
Sendo que cada uma das dimensões, poderá armazenar um valor diferenciado para uma
cadeia de caracteres de 30 posições.
Tipos
tipo V = vetor[5] : REAL
Variáveis
Salario : V
A variável Salario é um vetor de 5 posições do tipo Real, assim como a variável Nome.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 42 ~
Os exemplos acima são do tipo Vetor, abaixo veremos uma variável indexada do tipo
matriz:
Tipos
tipo M = vetor[3,10] : Inteiro
Variáveis
CodigoProduto : M
No exemplo anterior, teremos a variável CodigoProduto, dividida nas seguintes
dimensões:
CodigoProduto[1,1] CodigoProduto[2,1] CodigoProduto[3,1]
CodigoProduto[1,2] CodigoProduto[2,2] CodigoProduto[3,2]
CodigoProduto[1,3] CodigoProduto[2,3] CodigoProduto[3,3]
CodigoProduto[1,4] CodigoProduto[2,4] CodigoProduto[3,4]
CodigoProduto[1,5] CodigoProduto[2,5] CodigoProduto[3,5]
CodigoProduto[1,6] CodigoProduto[2,6] CodigoProduto[3,6]
CodigoProduto[1,7] CodigoProduto[2,7] CodigoProduto[3,7]
CodigoProduto[1,8] CodigoProduto[2,8] CodigoProduto[3,8]
CodigoProduto[1,9] CodigoProduto[2,9] CodigoProduto[3,9]
CodigoProduto[1,10] CodigoProduto[2,10] CodigoProduto[3,10]
Quando estamos trabalhando com variáveis indexadas, temos que obrigatoriamente
especificar o índice da variável na qual queremos trabalhar. Nos exemplos acima, não
poderíamos nos referir apenas à variável NOME, mas sim a NOME[n], onde o “n” seria
uma dimensão válida, neste caso de 1 à 5.
Vamos fazer um pequeno exercício:
Seja a seguinte variável indexada bidimensional A:
A
1 175 225 10 9000 3,7 4,75
2 9,8 100 363 432 156 18
3 40 301 30,2 6381 1 0
4 402 4211 7213 992 442 7321
5 21 3 2 1 9000 2000
1 2 3 4 5 6
a) Quantos elementos fazem parte do conjunto?
b) Qual o conteúdo do elemento identificado por A [4,5] ?
c) Qual o conteúdo de X após a execução do comando X := A [3,2] + A [5,1] ?
d) O que aconteceria caso fosse referenciado o elemento A [6,2] no programa?
e) Somar os elementos da quarta coluna: A [1,4] + A [2,4] + A [3,4] + A [4,4] + A [5,4];
f) Somar os elementos da terceira linha: (A [3, 1] + A [3,2] + A [3,3] + A [3,4]).
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 43 ~
Agora vamos exibir um exemplo de algoritmo onde iremos preencher os valores para a
variável Nome em suas diversas dimensões e em seguida listar os mesmos:
Algoritmo Nomes
Tipos
tipo V = vetor[5] : caracter[30]
Variáveis
Nome : V
Conta , Lista: INTEIRO
Inicio
Para conta = 1 até 5 passo 1faca
Ler Nome[conta]
Fim para
Para lista = 1 até 5 passo 1 faca
Escrever Nome[lista]
Fim para
Fim.
Exercício 001: Escreva um pseudocódigo que irá ler e armazenar em variável indexada
10 números e após o final da leitura, irá exibir a soma dos 10 números armazenados nas
dez posições da variável indexada.
Exercício 002: Escreva um pseudocódigo que irá ler e armazenar em variável indexada
50 números e após o final de leitura, irá apresentar o número da posição e o valor
armazenado na posição de variável indexada que conterá o maior valor lido.
Quando trabalhamos com variáveis indexadas, poderemos entre outros criar “índices”, ou
seja, ordenar os vetores para que eles sejam apresentados em uma determinada ordem.
Este procedimento, também é conhecido, em sua forma mais simples como “Bolha de
Classificação”. Sua lógica consiste na leitura de todos os elementos de um vetor,
comparando-se os valores de seus elementos vizinhos, e neste momento é empregada a
seguinte seqüência:
1. Serão realizadas varreduras a menos do total de elementos do vetor;
2. Na primeira varredura, verificamos que o elemento do vetor já se encontra em seu
devido lugar;
3. Na segunda varredura, o procedimento é análogo à primeira varredura e vai até o
último elemento;
4. Ao final do procedimento, o vetor estará classificado segundo o critério escolhido.
Vamos à prática, no exemplo a seguir, iremos realizar a leitura de 5 números e em
seguida classificá-los em ordem crescente:
Algoritmo classificação
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________~ 44 ~
Tipos
tipo V = vetor[50] : inteiro
Variáveis
numero : V
A,B: INTEIRO
Aux: REAL
Inicio
Para A = 1 até 50 faça
Ler numero[A]
Fim para
B=50
Enquanto B > 1 faça
Para A = 1 até ( B-1 ) faça
Se numero[A] > numero[A+1}
Então
Aux=numero[A]
numero[A]=numero[A+1]
numero[A+1]=Aux
Fim se
Fim para
B=B-1
Fim enquanto
Escrever “Abaixo, a listagem ordenada dos números entrados”
Para A de 1 até 50 faça
Escrever numero[A]
Fim para
Fim.
Outro processo que poderá ser utilizado em programação é a pesquisa seqüencial, ou
seja, serão verificados todos os componentes de um vetor, para verificar se nestes estão
armazenados um determinado valor. Exemplo:
Iremos efetuar a leitura de 100 nomes, em seguida, será solicitado um nome qualquer e,
iremos verificar se, dentre os 100 nomes entrados, existe o nome na qual foi solicitada a
pesquisa. Veja este algoritmo a seguir:
Algoritmo pesquisa
Tipos
tipo V1 = vetor[100] : caracter[30]
Variáveis
nome : V1
pesquisado : CARACTER[30]
contador : INTEIRO
encontrado : LOGICO
Inicio
Para contador = 1 até 100 faça
Ler nome[contador]
Fim para
Ler pesquisado
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 45 ~
Escrever “Aguarde ... pesquisando no banco de dados”
contador=1
encontrado=.F.
Enquanto (contador<101) .E. (Encontrado = .F.) faça
Se nome[contador]=pesquisado
Então
Encontrado= .T.
Senão
Contador=contador+1
Fim se
Fim enquanto
Se encontrado = .T.
Então
Escreva “O valor está contido no banco de dados”
Senão
Escreva “O valor não existe no banco de dados”
Fim se
Fim.
EXERCÍCIOS:
Vetores e Matrizes
1 – Faça o fluxograma e o algoritmo que carregue um vetor com 150 números reais,
determine e mostre o seu elemento máximo (maior valor) e a posição na qual ele se
encontra.
2 – Faça o fluxograma e o algoritmo que carregue um vetor com 150 números inteiros,
determine e mostre o seu elemento mínimo (menor valor) e a posição na qual ele se
encontra.
3 - Escreva um algoritmo que armazene em um vetor os 100 primeiros números ímpares.
Após isso, o algoritmo deve imprimir todos os valores armazenados.
4 - Escreva um algoritmo que armazene em um vetor o quadrado dos números ímpares
no intervalo fechado de 1 a 20. Após isso, o algoritmo deve imprimir todos os valores
armazenados.
5 - Escreva um algoritmo que receba dez números inteiros e armazene em um vetor a
metade de cada número. Após isso, o algoritmo deve mostrar todos os valores
armazenados.
6 - Escreva um algoritmo que receba dez números do usuário e armazene em um vetor o
quadrado de cada número. Após isso., o. algoritmo. deve imprimir todos os valores
armazenados.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 46 ~
7 - Escreva um algoritmo que receba e armazene em um vetor, quinze números. Ao final
mostre todos os números pares do vetor e sua respectiva posição.
8 - Fazer um algoritmo em que sejam carregados dois vetores de 25 números inteiros:
a) intercale os elementos destes dois vetores formando um novo vetor de 50 elementos;
b) exiba os números do novo vetor.
9 - Fazer um algoritmo que:
a) leia um vetor A com 30 valores numéricos:
b) leia um outro vetor B com 30 valores numéricos;
c) leia o valor de uma variável X;
d) verifique qual o elemento de A que é igual a X;
e) exiba o elemento de B de posição correspondente à do elemento de A igual a X, se
existir.
10 - Dada uma matriz quadrada P, de ordem 10:
� Some os quadrados dos elementos da 1a coluna;
� Some os elementos da 2a linha;
� Some os elementos da diagonal principal;
� Some todos os elementos;
� Some os elementos de índice ímpar da 2a linha.
11 - Dadas as variáveis indexadas A e B abaixo;
A B
7 8 4 9 6 9 11 15
2 1 7 3 32 19 3 4
Calcular o conjunto C = A + B.
12 – Construa um fluxograma e o algoritmo que carregue 100 números inteiros positivos
(deve ser feito o teste para garantir a não inclusão de números inválidos – utilize o laço
“repita até” neste teste). O programa deve calcular a média dos números do vetor, e ao
final mostrar todos os números que são maiores que a média.
13 – Faça o fluxograma e o algoritmo que carregue um vetor com 50 nomes, ordene e
mostre o vetor ordenado.
14 – Faça o fluxograma e o algoritmo que carregue um vetor com 50 nomes, depois
solicite ao usuário um nome e verifique se o mesmo existe no vetor ou não (mostrar o
nome e a posição no vetor caso exista e uma mensagem indicativa, caso não exista). A
solicitação deve ser repetida ate que o usuário digite a palavra “fim”.
15 – Faça o fluxograma e o algoritmo que carregue um vetor com 100 números inteiros,
verifique cada número, se este for par, multiplique por 3 e atualize o seu valor no vetor. Ao
final, mostre todos os elementos do vetor.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 47 ~
16 – Faça o fluxograma e o algoritmo que carregue um vetor com 150 números inteiros,
gere um segundo vetor com todos os números do primeiro vetor multiplicados por 2.
mostre ambos os vetores.
17 – Faça o fluxograma e o algoritmo que carregue uma matriz de dimensão 5x5, calcule
e mostre a soma de todos os elementos e uma listagem com cada um dos elementos da
matriz.
18 – Faça o fluxograma e o algoritmo que carregue duas matrizes de dimensão 6x6. Gere
uma terceira matriz com a soma das duas anteriores e mostre seus valores.
19 – Faça o fluxograma e o algoritmo que carregue um vetor com 60 posições, calcule e
mostre a soma de todos os elementos das posições pares e impares do vetor.
20 – Faça o fluxograma e o algoritmo que carregue uma matriz de dimensão 10x10,
calcule e mostre a soma de cada uma das linhas e de cada uma das colunas da matriz.
21 - Faça um fluxograma e o algoritmo que:
O usuário preencha com quaisquer valores inteiros um vetor de trinta posições. Calcule a
média deles. Os valores menores que a média devem ser copiados em outro vetor, o qual
deve ficar em ordem crescente. Liste os dados do primeiro vetor e tantos quantos
houverem no segundo vetor. Use mensagens claras para o usuário tomar conhecimento
dos passos sendo executados.
22 - Faça um fluxograma e o algoritmo que:
O usuário preencha com quaisquer valores inteiros um vetor de trinta posições. Calcule a
média deles. Os valores maiores que a média devem ser copiados em outro vetor, o qual
deve ficar em ordem crescente. Liste os dados do primeiro vetor e tantos quantos
houverem no segundo vetor. Use mensagens claras para o usuário tomar conhecimento
dos passos sendo executados. O fluxograma e o portugol devem ser entregues passados
a limpo. Consulte apenas o seu material.
23 - Faça um Fluxograma e o algoritmo que:
O usuário insere em um vetor “N” 40 números negativos, seguido da digitação de
outros 40 números maiores que zero em um “P” (faça o teste para permitir somente a
entrada de valores válidos). Faça um vetor “V”, de tal forma que cada elemento seu seja a
soma dos elementos de “P” e “N”, de mesma i-ésima posição, e caso a soma seja
negativa transforme-a em positivo. Liste “V”, mostre a média, o maior e o menor valor do
mesmo. Apresente ao usuário aopção de pesquisar um valor qualquer em “V”,
informando a localização do mesmo ou declarando que não existe tal valor no vetor.
Repetir o procedimento de consulta, até que o usuário decida encerrar a execução do
algoritmo.
24 - Faça um fluxograma e o algoritmo que leia um vetor de 20 valores numéricos e
ordene esse vetor em ordem crescente. O programa também deve ler um número K e
imprimir, antes e depois da ordenação, o K-ésimo termo da variável composta.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 48 ~
25 - Faça um fluxograma e o algoritmo que leia e armazene 30 valores reais positivos,
determine a sua média e gere um segundo vetor, no qual cada elemento é calculado a
partir do elemento correspondente do primeiro vetor mais 30% caso seja menor que a
média, senão mais 20% do mesmo. Mostre os dois vetores. O calculo de 30%
corresponde a multiplicar por 1.3 e 20% por 1.2.
26 - Faça um fluxograma e o algoritmo que leia e armazene 70 valores reais positivos,
determine a sua média e mostre-a. Gere um segundo vetor, no qual cada elemento é
calculado a partir do elemento correspondente do primeiro vetor subtraído da média
determinada para o primeiro vetor. Calcule o somatório dos valores negativos do segundo
vetor e mostre . Mostre os dois vetores.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 49 ~
8- MODULARIZANDO ALGORITMOS – PROCEDIMENTOS E FUNÇÕES
Em determinadas situações, devido à complexidade de alguns algoritmos, é necessária a
divisão do mesmo em diversas partes, para que assim, o sistema tenha uma operação
precisa. Essa divisão de tarefas é denominada de “Subalgoritmos”. Os subalgoritmos
nada mais são do que rotinas que possuem uma função específica.
A modularização consiste num método para facilitar a construção de grandes
programas, através de sua divisão em pequenas etapas, que são: módulos, rotinas, sub-
rotinas ou sub-programas. Permitindo o reaproveitamento de código, já que podemos
utilizar um módulo quantas vezes forem necessárias, eliminando assim a necessidade de
escrever o mesmo código em situações repetitivas.
Vamos imaginar a seguinte situação:
Em um sistema comercial, em várias etapas temos que verificar se o número do CPF do
cliente foi digitado de forma correta. Imaginando que tal situação se repete por 38 vezes
no sistema. Teríamos que escrever 38 vezes o mesmo trecho de código? Não, para isso
teríamos uma rotina “subalgoritmo” que teria esta função. Este subalgoritmo teria um
nome e, sempre que fosse necessária a verificação do CPF, bastaria invocar “chamar”
este subalgoritmo.
De um modo geral, os subalgoritmos são importantes devido aos seguintes aspectos:
� Estruturação de algoritmos, facilitando assim a detecção de erros. Imagine se a
rotina de verificação do CPF do cliente tiver um erro lógico. Em uma primeira
hipótese, teríamos que corrigir a mesma em 38 pontos diferentes do sistema,
porém utilizando subalgoritmo, teríamos apenas que realizar uma correção em um
ponto do sistema;
� Modularização de sistemas, que justamente é utilizada para a reutilização de
rotinas “subalgoritmos” em vários pontos do algoritmo principal;
� Subdivisão de algoritmos extensos, facilitando assim a sua compreensão.
O esquema de um algoritmo e seus subalgoritmos pode ser observado a seguir:
Algoritmo (nome do algoritmo)
Variáveis
Definição das variáveis globais
<definição dos subalgoritmos>
Inicio
<estrutura do algoritmo principal>
Fim.
Quando o sistema está executando o algoritmo principal e é invocado algum subalgoritmo
(através do nome dado ao mesmo), a execução deste é interrompida e o sistema passa a
executar os comandos constantes do subalgoritmo. Ao final desta execução, o sistema
retorna automaticamente para o algoritmo principal a partir do ponto onde foi realizada a
chamada do subalgoritmo.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 50 ~
Um subalgoritmo é composto por:
� Cabeçalho: onde é definido o nome do subalgoritmo e as variáveis que serão
utilizadas pelo mesmo;
� Corpo: onde são especificadas as instruções do subalgoritmo.
Os subalgoritmos podem ser de dois tipos:
� Funções;
� Procedimentos.
O subalgoritmo tipo função é aquele na qual um valor é calculado com base em outros
valores, normalmente passado pelo algoritmo principal.
O subalgoritmo tipo procedimento é aquele que retorna zero ou mais valores ao
algoritmo que o invocou, sendo que, ao contrário das funções, esses valores não são
explícitos, ou seja, a chamada de procedimentos nunca é realizada ao meio de
expressões é só é realizada em comandos isolados dentro do algoritmo, como instruções
de entrada e saída de dados.
Veja a seguir um algoritmo e seu subalgoritmo para se calcular a raiz quadrada de um
determinado número:
(Por causa da didática de variáveis globais e locais, vamos manter uma estrutura um
pouco diferente do que temos mostrado até agora, vamos nos aproximar uma pouco da
estrutura do PASCAL)
Algoritmo Raiz_quadrada
Variáveis
num1, num2 : real
Função Raiz(numero:real) : real
Var
calc : real
Inicio
Calc = SQR(numero)
Retorne Calc
Fim
Inicio
Escreva “Numero para Raiz Quadrada”
Leia num1
Num2 = Raiz(num1)
Escreva “Raiz quadrada é igual a:”, num2
Fim
Com certeza, teria sido mais fácil executar o cálculo de raiz quadrada diretamente no
algoritmo principal, porém o fizemos assim para que você tenha uma idéia de como
funciona um subalgoritmo, ou seja, a passagem de valores de uma rotina principal, para
uma rotina secundária e o retorno do valor resultante deste processamento.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 51 ~
No módulo passado nos referíamos aos subalgoritmos. Aqui vamos falar um pouco sobre
variáveis globais e locais.
Como o próprio nome diz, uma variável global pode ser utilizada em qualquer parte do
algoritmo ou em seus subalgoritmos, ou seja, elas são visíveis em todo o procedimento
que engloba o processamento. Ao contrário, as variáveis locais são definidas
exclusivamente dentro de um subalgoritmo e sua vida se restringe ao uso dentro do
próprio subalgoritmo onde foi declarada.
Imagine a seguinte situação:
- Um “avião” foi fabricado pela Embraer, porém este poderá voar em qualquer parte
do mundo. Este avião poderia ser comparado a uma variável global.
- O “elevador” do edifício “ABC”, foi implantado naquele edifício e sua vida, ou seja,
sua utilidade está apenas naquele edifício. Este elevador poderia ser comparado a
uma variável local.
Veja o algoritmo utilizado no módulo anterior:
Algoritmo Raiz_quadrada
Var num1, num2 : real
Função Raiz(numero:real) : real
Var calc : real
Inicio
calc = SQR(numero)
Retorne Calc
Fim
Inicio
Escreva “Numero para Raiz Quadrada”
Leia num1
Num2 = Raiz(num1)
Escreva “Raiz quadrada é igual a:”, num2
Fim
Observe que as variáveis NUM1 e NUM2 utilizadas no processo foram declaradas no
inicio do algoritmo principal, ou seja, estas são variáveis globais. Já a variável CALC,
definida dentro da função RAIZ é uma variável local, ou seja, operável apenasdentro
daquela função.
Pelo que observamos até este ponto, um subalgoritmo é um nome dado a um
determinado trecho do algoritmo principal, que na maioria das vezes é responsável pela
execução de uma única tarefa dentro do contexto do sistema. Estudamos que existem
dois tipos de subalgoritmos:
1. Funções: que retornam um único valor para o algoritmo que a invocou;
2. Procedimentos: que retornam mais de um valor ou nenhum valor ao algoritmo que
o invocou.
Nas funções e procedimentos, temos as variáveis globais, definidas no início de um
algoritmo e que podem ser utilizadas por todos os subalgoritmos assim como pelo
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 52 ~
algoritmo principal e as variáveis locais, que são definidas dentro de um subalgoritmo e só
podem ser utilizadas dentro deste.
Para completar o nosso quebra-cabeça, temos também o que chamados de parâmetros,
ou seja, as portas pelas quais se realiza a comunicação bidirecional entre o algoritmo
principal e seus subalgoritmos e vice e versa. Possuímos dois tipos de parâmetros:
1. Parâmetros formais: são aqueles que, de forma automática substituem
parâmetros determinados por “nomes simbólicos” por valores passados durante a
execução do processo. Veja o exemplo a seguir:
Função Raiz(numero:real) : real
Variáveis
calc : real
Inicio
Calc = SQR(numero)
Retorne Calc
Fim
Na verdade, o parâmetro formal “número” será substituído por um parâmetro real, ou seja,
um valor numérico para o calculo da raiz quadrada de um determinado número.
2. Parâmetros reais: quando não temos parâmetros formais e sim valores pré
estabelecidos que não serão alterados durante o processamento.
Através desta lógica, devemos saber que, durante o processamento dos dados, quando
são substituídos parâmetros formais por valores reais, os parâmetros reais são calculados
e os parâmetros formais recebem uma cópia dos valores resultantes do processamento.
Seguindo esta lógica, iremos entender que os parâmetros formais não afetam os
parâmetros reais.
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 53 ~
9- ALGORÍTMOS DE PESQUISA
A capacidade de armazenar informações foi um passo decisivo na evolução da
ciência da computação e para o nível generalizado de utilização do computador. Com
isso, a capacidade de recuperar informações, para posterior processamento, assume
papel de suma importância na utilização cotidiana do computador, existindo para isto
inúmeros exemplos, como: recuperação de dados de dados de transações bancárias de
um cliente através de um número de conta, no cadastro de cliente/operações de um
banco. Portanto, algoritmos de pesquisa devem ser projetados de forma a garantir a
confiabilidade e eficiência exigidas pela importância das aplicações existentes.
A pesquisa de dados pode ser efetuada tanto em unidades de memória
secundárias (disco rígido, disquetes, fita), quanto na memória principal do computador.
PESQUISA SEQUENCIAL
O método mais simples de determinar a presença, ou não, de um elemento numa
seqüência, é percorrê-la a partir do seu início, efetuando comparações, até que o
elemento seja encontrado ou o fim da seqüência seja alcançado. Este método é chamado
de pesquisa seqüencial.
Dados :
vetor de n elementos (n conhecido)
elemento a ser pesquisado no vetor
Resultado:
Se o elemento existe, mostra-se a sua posição ou o total de ocorrências deste no vetor.
Se o elemento não existe, mostra-se uma mensagem de falha.
As considerações que podem ser feitas sobre os dados de entrada (vetor), são do
tipo: o vetor esta ou não ordenado; o elemento ocorre uma única vez (pesquisa única) ou
repetidas vezes no vetor (pesquisa múltipla). Isso acarreta os seguintes tipos de pesquisa:
a. Desordenada Única
b. Desordenada Múltipla
c. Ordenada Única
d. Ordenada Múltipla
Pesquisa Binária
O método de pesquisa seqüencial é fácil de escrever e é razoavelmente eficiente
para seqüências com poucos elementos. Entretanto, para seqüências de tamanho
considerável, que ocorrem na maioria das aplicações existentes, a utilização do método
torna-se inviável. Uma estratégia interessante e eficiente é utilizada no método de
pesquisa binária.
Descrição Geral do Método:
� Definir intervalo inicial (i, f) de busca
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 54 ~
� Determinar a posição média do intervalo(m = (i+f) div 2)
� Comparar o elemento da posição média (v[m]) com o elemento E:
� Caso sejam iguais então terminou as pesquisa
� Caso contrário definir o novo intervalo de busca
• Aplicar sucessivamente o passo anterior até encontrar E ou não existir mais o intervalo
de busca
São aspectos fundamentais do método:
• vetor de entrada tem que estar ordenado
• intervalo de busca inicial é (i,f) = (1,n)
• intervalo de busca, considerado a cada iteração, é definido do seguinte modo:
(i,m-1), se (E < v[m])
(m+1,f), se (E > v[m])
tendo a metade do tamanho do intervalo original
• O teste de repetição é (i <= f) e Não Achou
Dados :
vetor de n elementos (n conhecido)
elemento a ser pesquisado no vetor
Resultado
Se o elemento existe, mostra-se a sua posição ou o total de ocorrências deste no vetor.
Se o elemento não existe, mostra-se uma mensagem de falha
10- ALGORÍTMOS DE ORDENAÇÃO
Os problemas de ordenação são comuns tanto em aplicações comerciais quanto
científicas. Entretanto, raro são os problemas que se resumem à pura ordenação de
seqüências de elementos. Normalmente, os problemas de ordenação são inseridos em
problemas de pesquisa, intercalação e atualização. Isto torna ainda mais importante o
projeto e a construção de algoritmos eficientes e confiáveis para tratar o problema.
O nosso objetivo é analisar os seguintes tipos de ordenação:
a. Selection Sort
b. Bubble Sort
c. Insertion Sort
a. Selection Sort
Este método é um dos mais simples e intuitivos dentre os métodos existentes. Sua
estratégia básica é selecionar o menor elemento da seqüência considerada e colocá-lo no
início da seqüência. Assim, dada uma seqüência de tamanho n, várias iterações são
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 55 ~
efetuadas, sendo que a cada vez que esta estratégia é aplicada, uma nova seqüência é
gerada pela eliminação do menor elemento da seqüência original.
Algoritmo SelectionSort (vet : vetor; n : inteiro);
{ordenado crescente}
var
i, j, pmin : inteiro;
begin
para I de 1 até (n-1) faça
pmin <- i;
para j de (i+1) até n faça
se vet[j] < vet[pmin] entao
pmin <- j;
trocar (vet[i], vet[pmin] ) ;
fim-se
fim-para
fim-para
fimalgoritmo
b. Bubble Sort
A estratégia utilizada pelo BubbleSort consiste de comparações e trocas entre
elementos consecutivos da seqüência, a fim de "empurrar" o maior elemento para a última
posição. Assim, várias iterações são efetuadas e, para cada seqüência considerada, a
aplicação da estratégia gera uma nova seqüência pela eliminação do maior elemento da
seqüência original.
Além disto, uma variável de controle (lógica) é utilizadapara registrar a ocorrência
ou não de troca entre elementos da seqüência. Quando nenhuma troca é efetuada, tem-
se que a seqüência considerada já estava ordenada. Esta particularidade determina, em
alguns casos, um número menor de comparações que o método SelectionSort.
Algoritmo BubbleSort (vet : vetor ; n inteiro) ;
{ordem crescente}
var
i, limite : inteiro;
trocou : booleano;
begin
limite = n;
repita
trocou = .f.
para I de 1 até (limite - 1) faça
se vet[i] > vet [i+1] entao
trocar(vet[i], vet[i+1])
trocou = .t.
fim-se
fim-para
limite = limite - 1
até not(trocou)
fimalgoritmo
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 56 ~
c. Insertion Sort
Este método baseia-se no seguinte processo de inserção controlada:
� Com o primeiro elemento da seqüência forma-se uma seqüência de tamanho 1,
ordenada.
� Cada elemento restante da seqüência original é inserido na seqüência, de modo
que esta permaneça ordenada. Isto é feito através de uma pesquisa na seqüência
ordenada que determina a posição que o novo elemento deverá ser inserido.
� Quando um elemento é inserido a frente de outro, estes deverão ser deslocados
de uma posição.
11- RECURSIVIDADE
Recursão é um método geral para resolver problemas reduzindo-os a problemas
mais simples do mesmo tipo. A estrutura geral de uma solução recursiva de um problema
é assim:
Resolva de forma recursiva um problema.
• Se o problema é trivial, faça o obvio (resolva-o)
• Simplifique o problema
• Resolva de forma recursiva (um problema mais simples)
• Combine (na medida do possível) a solução do(s) problemas mais simples em uma
solução do problema original
Um subprograma recursivo chama a si próprio constantemente, cada vez em uma
situação mais simples, até chegar ao caso trivial, quando pára. Devemos lembrar que
recursividade deve ser utilizada na solução de problemas que tenham a natureza
recursiva.
Exemplos :
a. Somatório de inteiros - Se n =1; Somatório = 1. Caso contrário
Somatório = n + Somatório(n-1)
b. Fatorial - Se n=0 ou n=1 ; Fatorial = 1. Caso contrário Fatorial =
n*Fatorial(n-1)
c. MDC - Se b divide a, então o MDC é b. Caso contrário, MDC(a,b)
= MDC(b,a div b)
d. N-ésimo termo da série de Finonacci . 1� e 2� = 1 e n-ésimo = (n-
1)+(n-2)
e. Torre de hanoi
Bibliografia
INTRODUÇÃO AO DESENVOLVIMENTO DE ALGORITMOS
WILSON SILVA PINTO
ALGORITMOS
JOSE AUGUSTO MANZANO - JAYR FIGUEIREDO OLIVEIRA
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 57 ~
ALGORITMOS E ESTRUTURAS DE DADOS
NIKLAUS WIRTH
ALGORITMOS E ESTRUTURAS DE DADOS
ANGELO DE MOURA GUIMARAES - NEWTON A C LAGES
ALGORITMOS ESTRUTURADOS
H FARREL - C G BECKER - E C FARIA e MATOS, H F
PROJETO DE ALGORITMOS
NIVIO ZIVIANI
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 58 ~
ALGORITMO x LINGUAGEM C
TIPO DE DADOS
ALGORITMO LINGUAGEM C-ANSI
Inteiro int
Real float
double
Caractere char
Lógico (Não existe o tipo lógico em C, e sim
expressões lógicas)
Tipo Tamanho Intervalo Uso
char 1 byte -128 a 127 número muito pequeno e caracter ASCII
int 2 bytes -32768 a 32767 contador, controle de laço
float 4 bytes 3.4e-38 a 3.4e38 real (precisão de 7 dígitos)
double 8 bytes 1.7e-308 a 1.7e308 científico (precisão de 15 dígitos)
DECLARAÇÃO DE VARIÁVEIS
ALGORITMO LINGUAGEM C-ANSI
Variáveis identificadores : nome do tipo
EX:
Variáveis código : inteiro
Variáveis nota, CPF : real
Variáveis nome : caractere[30]
Variáveis altura[30] : inteiro
Variáveis peso[30,5] : real
tipo lista de identificadores
EX:
int codigo;
float nota;
double CPF;
char nome[30]; //string ou vetor de caracteres
int altura[30];
float peso[30][5];
DEFINIÇÃO DE CONSTANTES
ALGORITMO LINGUAGEM C-ANSI
defina variáveis valor
EX:
defina PI 3,14159
#define PI 3.14159
#define ON 1
#define OFF 0
#define ENDERECO 0x378
COMENTÁRIOS
ALGORITMO LINGUAGEM C-ANSI
delimitado por chaves { } ou // ou /* */
EX:
Variáveis nota inteiro {nota do aluno}
Variáveis nota inteiro //nota do aluno
delimitado por // ou /* */
EX:
float nota; /* nota do aluno */
float nota; // nota do aluno
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 59 ~
EXPRESSÕES ARITMÉTICAS
ALGORITMO LINGUAGEM C-ANSI
adição: +
subtração: -
multiplicação: *
divisão: /
radiciação: √n Raiz(n)
potenciação: ny Exp(n,y)
quoc. da divisão: A Div B
resto da divisão: A Resto B
ATRIBUIÇÃO:
EX:
nota ← 10
+
-
*
/
sqrt(valor)
pow(n,y)
A / B
A % B
ATRIBUIÇÃO:
EX:
nota = 10;
EXPRESSÕES LÓGICAS
ALGORITMO LINGUAGEM C-ANSI
igual a: =
diferente de: <>
maior que: >
menor que: <
maior ou igual a: >=
menor ou igual a: <=
conjunção: .E.
disjunção: .OU.
negação: .NÃO.
==
!=
>
<
>=
<=
&&
||
!
EXPRESSÕES LITERAIS
ALGORITMO LINGUAGEM C-ANSI
concatenação: |
comparação: =
atribuição: ←
EX:
A contém “bola”
B contém “preta”
A | B = “bolapreta”
A = B a resposta será falsa
B ← A a resposta será B = “bola”
strcat(A,B);
strcmp(A,B);
strcpy(A,B);
EX:
A contém “bola”
B contém “preta”
strcat(A,B); retorna A = “bolapreta”
strcmp(A,B); a resposta será valor <> 0
strcpy(B,A); a resposta será B = “bola
COMANDOS DE ENTRADA DE DADOS
ALGORITMO LINGUAGEM C-ANSI
Leia (variável)
EX:
scanf(“código de formatação”,&variável)
EX:
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 60 ~
Leia (nota) scanf(“%d”, ¬a);
COMANDOS DE SAÍDA DE DADOS
ALGORITMO LINGUAGEM C-ANSI
Escreva ( textos + variáveis )
EX:
Escreva (“A nota do aluno foi:”, nota)
printf(“textos + código de
formatação”,variáveis)
EX:
printf(“A nota do aluno foi %d”, nota);
CÓDIGO DE FORMATAÇÃO (Usado no
scanf e printf)
FORMATOS
%c caractere (apenas um - char)
%d ou %i inteiro (int)
%f real (float)
%e real (double)
%s String (cadeia de caracteres)
%p ponteiro
CONTROLE / CARACTER (Usado no printf) SEQUENCIA DE ESCAPE
nulo (null) \0
campainha (bell) \a
retrocesso (backspace) \b
tabulacao horizontal \t
nova linha (new line) \n
tabulacao vertical \v
alimentacao de folha (form feed) \f
retorno de carro (carriage return) \r
aspas (") \"
Apostrofo (') \'
interrogacao (?) \?
barra invertida (\) \\
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 61 ~
ESTRUTURA BÁSICA DE PROGRAMAS EM C
1- Declarações das Bibliotecas
As bibliotecas em C, são arquivos que normalmente se localizam no diretório
include. Essas bibliotecas contém funções e comandos pré-definidos na linguagem.
Ex:#include <stdio.h>
#include <conio.h>
2- Declarações de Variáveis Globais
As variavéis aqui declaradas são reconhecidas em todas as funções.
3- Funções Auxiliares
São módulos criados com funções definidas pelo programador. É “chamada” Por
outras funções para ser executada. Tem a finalidade de retornar um valor ou apenas executar
blocos de comandos.
4- Função Principal
Função obrigatório em TODOS os programas criados na linguagem C. É apartir
dessa função que o programa começa a ser executado.
Ex:
main()
{ //início da função
declaração de variáveis locais;
…
comandos;
…
} //fim da função
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 62 ~
ESTRUTURA SEQUENCIAL
ALGORITMO LINGUAGEM C-ANSI
Algoritmo cálculo
Variáveis a, b, c : inteiro
Início
Escreva (“Digite dois numeros: “)
Leia (a, b)
c ← (a + b) * b
Escreva (a, b, c)
Fim
#include <stdio.h>
#include <conio.h>
main ()
{ //início do algoritmo (main)
int a, b, c;
printf(“Digite o primeiro numero: ”);
scanf(“%d”,&a);
printf(“Digite o segundo numero: ”);
scanf(“%d”,&b);
c = (a+b)*b;
printf(“A=%d, B = %d, C = %d”,a,b,c);
getch();
} //fim do algoritmo (main)
ESTRUTURA CONDICIONAL
ALGORITMO LINGUAGEM C-ANSI
Algoritmo menor
Variáveis a, b c, menor : inteiro
Início
Escreva (“Digite tres numeros: “)
Leia (a, b, c)
Se ( (a > b) .E. (a < c) )
Então menor ← a
Senão Se (b < c)
Então menor ← b
Senão menor ← c
Fim se
Fim se
Escreva (“o menor valor é:”,menor)
Fim
#include <stdio.h>
#include <conio.h>
main ()
{
int a, b, c, menor;
printf(“Digite o primeiro numero:”);
scanf(“%d”,&a);
printf(“Digite o segundo numero:”);
scanf(“%d”,&b);
printf(“Digite o terceiro numero:”);
scanf(“%d”,&c);
if ((a < b) && (a < c))
{ //início do então
menor = a;
} //fim do então
else
{ //início do senão
if (b < c)
{ //início do então
menor = b;
} //fim do então
else
{ //início do senão
menor = c;
} //fim do senão
} //fim do senão
printf(“O menor valor e: %d”,menor);
system(“pause”);
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 63 ~
}
ESTRUTURA DE REPETIÇÃO – 1ª FORMA: Número definido de repetições
ALGORITMO LINGUAGEM C-ANSI
Estrutura: PARA
Ex:
Algoritmo soma
Variáveis i : inteiro
Início
Para i de 1 até 100 passo 1 faça
Escreva (“O número é:”,i)
Fim para
Fim
Estrutura: FOR
for(inicialização;condição;incremento ou
decremento)
{
... //comandos a serem repetidos
}
Ex:
#include <conio.h>
#include <stdio.h>
main()
{
int i;
for (i = 1; i <= 100; i++)
{ //início do para(for)
printf(“O numero e: %d”,i);
// o \n no printf, escreve um “pula linha”
}//fim do para(for)
getch();
}
Obs: Enquanto a condição for verdadeira repete os comandos da estrutura de repetição (for).
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 64 ~
ESTRUTURA DE REPETIÇÃO – 2ª FORMA: Número indefinido de repetições e teste no início
ALGORITMO LINGUAGEM C-ANSI
Estrutura: ENQUANTO
Ex(1):
Algoritmo soma
Variáveis i : inteiro
Início
Enquanto (i <= 100) faça
Escreva (“O número é:”,i)
i ← i + 1
Fim enquanto
Fim
Ex(2):
Algoritmo nomes
Variáveis nome, sobrenome, nomec :
caractere[20]
Início
Escreva (“Digite o nome: “)
Leia (nome)
Enquanto (nome <> “fim”) faça
Leia (sobrenome)
nomec ← nomec | nome
nomec ← nomec | “ ”
nomec ← nomec | sobrenome
Escreva (“O nome completo da pessoa
é:”, nomec)
Leia (nome)
Fim enquanto
Fim
Estrutura: WHILE
while(condição)
{
... //comandos a serem repetidos
}
Ex(1):
#include <conio.h>
#include <stdio.h>
main()
{
int i = 1;
while (i <= 100)
{ //início do enquanto(while)
printf(“O número e: %d”,i);
i = i + 1; // ou i++;
} //fim do enquanto(while)
getch();
}
Ex(2):
#include <conio.h>
#include <stdio.h>
#include <string.h>
main()
{
char nome[11], sobrenome[11],
nomec[22]
system(“cls”);
printf(“Digite o nome: “);
scanf(“%s”,&nome);
while (strcmp(nome,”fim”) != 0)
{
printf(“Sobrenome: ”);
scanf(“%s”,&sobrenome);
strcpy(nomec,” “);
strcat(nomec,nome);
strcat(nomec,” “);
strcat(nomec,sobrenome);
printf(“O nome completo da pessoa e:
%s”,nomec);
printf(“Digite o nome: “);
scanf(“%s”,&nome);
Curso de Sistemas de Informação
Algoritmos e Lógica de Programação
_______________________________________________________________________________________________________________________
~ 65 ~
}
system(“pause”);
}
Obs: Enquanto a condição for verdadeira repete os comandos da estrutura de repetição
(while).
ESTRUTURA DE REPETIÇÃO – 3ª FORMA: Número indefinido de repetições e teste no final
ALGORITMO LINGUAGEM C-ANSI
Estrutura: REPITA
Ex:
Algoritmo soma
Variáveis i : numérico
Início
i ← 1
Repita
Escreva (“O número é:”,i)
i ← i + 1
Até (i > 100)
Fim
Estrutura: DO WHILE
do{
... //comandos a serem repetidos
}while(condição);
Ex:
#include <conio.h>
#include <stdio.h>
main()
{
int i = 0;
do{ //início do repita(do while)
printf(“O numero e: %d”,i);
i++; // i=i+1
} while (i <= 100); //fim do repita(do
while)
getch();
}
Obs: Enquanto a condição for verdadeira repete os comandos da estrutura de repetição (do
while). Atenção: Em relação a estrutura REPITA (DO WHILE), a lógica em C difere do
lógica do algoritmo !