CAPÍTULO 1
1
INTRODUÇÃO A LÓGICA DE PROGRAMAÇÃO
1.1.
CONCEITOS BÁSICOS
Nesta disciplina, vamos estudar sobre Lógica de Programação. Mas, antes de começarmos,
seria bom fazermos uma reflexão sobre o significado da palavra “Lógica”. Assim, o que é Lógica?
A Lógica pode ser vista como a arte de pensar corretamente. A lógica visa a colocar ordem
no pensamento.
Utilizamos a lógica naturalmente em nosso dia-a-dia. Por exemplo:
a) Sei que o bornal está no armário.
Sei que o armário está fechado
Logo, concluo que tenho de abrir o armário para pegar o bornal.
b) Sei que sou mais velho que Andre.
Sei que Andre é mais velho que Roberto.
Então, concluo que eu sou mais velho que Roberto.
1
Sejam os seguintes fatos:
 Todos os filhos de José são mais altos do que Ana.
 Ricardo é filho de José.
Então, o que podemos concluir logicamente?
2
Sejam os fatos a baixo:
 Andre é aluno do IFS-SE.
 Para ser aprovado, um aluno do IFS-SE precisa obter nota
maior ou igual a 60 e comparecer a mais de 75% das aulas.
 André compareceu a todas as aulas e obteve nota igual a 80.
Então, o que podemos concluir?
2
1.2.
CONSTRUÇÃO DE ALGORITMOS
A lógica de programação é essencial para pessoas que desejam trabalhar como programador
de computadores. Lógica de programação pode ser definida como um conjunto de técnicas para
atingir um determinado objetivo.
O principal fundamento de toda programação é construir algoritmos. Mas, afinal, o que é um
algoritmo?
Um algoritmo pode ser definido como uma seqüência finita
de passos para executar uma determinada tarefa. Podemos pensar
em algoritmo como uma receita, uma seqüência de instruções
para chegar numa meta específica.
Quando criamos um algoritmo, estamos apenas descrevendo uma seqüência de ações para
solucionarmos um problema, até mesmo para resolver problemas do nosso dia a dia, podemos
escrever seqüências lógicas de atividades, ou seja, criar algoritmos:
Problema: Trocar uma lâmpada.
Seqüência de Passos para a Solução:
1. Pegue uma escada;
2. Posicione a escada embaixo da lâmpada;
3. Pegue uma lâmpada nova;
4. Suba na escada;
5. Retire a lâmpada velha;
6. Coloque a lâmpada nova;
7. Dessa da escada;
8. Guarde a escada.
o criarmos um algoritmo, descrevemos uma possível
seqüência de passos para resolver um problema.
3
Escreva um algoritmo (seqüência de passos) para
trocar um pneu de um carro.
3
4
Descreva um algoritmo que defina como fazer um
bolo.
1.3.
ALGORITMO COM ESTRUTURA DE DECISÃO
No nosso primeiro algoritmo define uma seqüência de passos para trocar uma lâmpada. Em
nenhum momento perguntamos se a lâmpada está queimada. Simplesmente trocamos a lâmpada
sem testá-la. Para resolver esse problema, podemos acrescentar ao nosso algoritmo um teste que
verifique se a lâmpada deve ser trocada:
1. Ligue o interruptor
2. Se a lâmpada não acender
2.1. Pegue uma escada;
2.2. Posicione a escada embaixo da lâmpada;
2.3. Pegue uma lâmpada nova;
2.4. Suba na escada;
2.5. Retire a lâmpada velha;
2.6. Coloque a lâmpada nova;
2.7. Dessa da escada;
2.8. Guarde a escada.
Nesse momento, estamos juntando aos passos de efetuar a troca da lâmpada a uma condição.
Assim, só efetuaremos os passos definidos de 2.1 a 2.8 caso a condição definida do passo 2 seja
verdadeira, ou seja, caso a lâmpada não acenda.
Testes que determinam quais ações serão executadas são
chamados de estruturas de seleção ou estruturas de decisão.
4
1.4.
ALGORITMO COM ESTRUTURA DE REPETIÇÃO
Apesar de nosso novo algoritmo estar testando a necessidade de trocar a lâmpada antes de
fazê-lo, em nenhum momento verificou se a lâmpada nova que foi instalada funciona. Assim,
vamos tentar alterar o nosso algoritmo a fim de garantir que ao fim de sua execução teremos uma
lâmpada funcionando. Para isso, vamos adicionar um novo teste em seu final:
1. Ligue o interruptor
2. Se a lâmpada não acender
2.1. Pegue uma escada;
2.2. Posicione a escada embaixo da lâmpada;
2.3. Pegue uma lâmpada nova;
2.4. Suba na escada;
2.5. Retire a lâmpada velha;
2.6. Coloque a lâmpada nova;
2.7. Enquanto a lâmpada não acender
2.7.1. Retire a lâmpada
2.7.2. Coloque uma outra lâmpada
2.8. Dessa da escada;
2.9. Guarde a escada.
Agora no nosso novo algoritmo, testará a lâmpada até que uma funcione, só finalizando-o
assim que uma lâmpada acender.
5
Crie um algoritmo que indique como fazer uma prova. Faça o
algoritmo pensando que o aluno não deve deixar questões em branco,
assim deve continuar fazendo a prova enquanto existir questão em
branco e o tempo de prova não tiver acabado. Além disso, o aluno só
deve resolver uma questão se souber resolvê-la, senão pula para a
próxima.
5
6
Suponha que você tenha uma caixa cheia de bolas. Nessa caixa
existem bolas azuis e bolas vermelhas. Além disso, você tem também
duas caixas vazias. Vamos chamar a caixa que contém as bolas de
“caixa 1” e as duas caixas vazias de “caixa 2” e “caixa 3”.
Neste contexto, escreva um algoritmo que defina como tirar
todas as bolas da “caixa 1” colocando as bolas azuis na “caixa 2” e as
bolas vermelhas na “caixa 3”.
7
André trabalha no departamento de recursos humanos de uma
empresa. A empresa de André definiu que os salários dos
empregados serão aumentados seguindo a seguinte regra: caso o
salário seja menor que R$1000,00 o aumento será de 10% e, caso
contrário, será de 8%. José recebeu uma lista contendo os nomes e
salários de todos os funcionários da empresa e foi solicitado que
calculasse o novo salário desses funcionários. Assim, escreva um
algoritmo para que André calcule corretamente os novos salários.
8
Desafio de lógica: Três missionários e três canibais
encontram-se na margem esquerda de um rio. Nessa margem
também existe um bote que pode transportar uma ou duas
pessoas. As seis pessoas pretendem todas passar para a margem
direita (usando o bote).
No entanto, os missionários têm de arranjar um plano para
conseguir de modo que, em nenhuma circunstância, existam
missionários numa margem em minoria relativamente aos
canibais, pois têm receio do que lhes possa acontecer. Quando o
bote chega à margem, os elementos do bote são contados como
estando na margem.
Assim, se houver apenas um canibal em uma margem, não
podemos enviar a essa margem o bote com um canibal e um
missionário, pois, ao chegar à outra margem, serão dois canibais
contra um missionário.
Lembre-se de que para o bote ir de uma margem a outra é
necessário que alguém esteja remando, ou seja, o bote nunca
atravessa vazio. Faça um algoritmo que exiba, passo a passo,
como efetuar esta travessia de forma segura.
6
CAPÍTULO 2
PORTUGOL IDE
2.1.
INICIANDO O PORTUGOL IDE
Portugol IDE é uma ferramenta desenvolvida na linguagem Java para ensinar lógica de
programação para iniciantes nessa área de programação, pois a IDE possibilita ao aluno criar e
testa seus algoritmos.
Mais para usarmos esse programa, primeiramente temos que baixá-lo na internet, o endereço
para o download isso é o http://www.dei.estt.ipt.pt/portugol/node/33, depois de baixar em sua
máquina é só descompactar e clicar duas vezes no programa chamado Portugol.jar, ai, ele abrir a
seguinte tela.
Figura 1. Tela inicial do Portugol IDE
Lembrando que para rodar o programa Portugol IDE você
tem que ter na sua máquina a JRE (Java Run Time) que é a
máquina virtual machine da linguagem JAVA. Pois é isso que
possibilita esse programa rodar tanto no Windows quanto no
Linux.
7
2.2.
EDITOR DE TEXTO
Para começarmos a criar nossos algoritmos temos primeiro que clicar na opção Editor de
Texto, pois é ai que iremos começar a digitar nossos algoritmos, e assim podermos testá-los, pois
nessa opção ele permite nós executarmos o algoritmo como um programa de computador, exibindo
os resultado do mesmo, ou alguma mensagem de erro se houver. A tela inicial do Editor de Texto é
exibida na figura 2.
Barra de título
Barra de menu
Barra de ferramentas
Figura 2. Tela inicial do Editor de Texto
Área de digitação
Área de mensagem e
ajuda (help)
Segue a baixo as definições de cada parte especificada na figura 2:
Barra de Título: Onde será exibido o nome do arquivo que guardará o algoritmo digitado.
Barra de Menu: Onde é mostrado todas as opções do programa.
Barra de Ferramentas: Onde é mostrado as opções mais usadas no programa em forma de
ícones para maior rapidez rodar umas dessas opções.
8
Área de Digitação: Onde será digitado nosso algoritmo.
2.2.1 Barra de Ferramentas
É o que mais iremos utilizar no Portugol IDE, portanto segue a baixo na figura 3 a dessa
barra e suas ícones, e logo após iremos definir a função dos ícones principais.
Novo
Abrir
Executar
Salvar
Executar passo a passo
Figura 3. Tela da barra de ferramenta
Avançar
Executar na memória
Retornar
Segue a baixo as definições de cada parte especificada na figura 3:
Novo: Inicia a tela para digitar um novo algoritmo.
Abrir: Server para abrir um arquivo de algoritmo já salvo.
Salvar: Serve para gravar um arquivo com o algoritmo digitado no momento.
Executar: Serve para executar (rodar) o algoritmo digitado, e teste se tem erros.
Executar Passa a Passo: Serve para executar (rodar) linha a linha do algoritmo
digitado, e teste se tem erro em cada linha.
Retornar: Serve para desfazer a última ação digitada.
Avençar: Serve para ir para próxima ação após ser retorna algumas.
Executar na Memória: Serve para executar (rodar) o algoritmo digitado, só que nesse
caso, é mostrado na tela os nomes e valores das variáveis
9
declaradas do jeito que são reservadas na memória do
computador, e teste se tem erros.
2.2.2 Exemplo de Execução
Agora vamos mostrar duas figuras, a 4 e 5, exibindo o resultado de um algoritmo sendo
executado pelo Portugol IDE, tanto o que foi clicado no butão Executar, quanto o butão
Executar na Memória.
Figura 4. Tela da execução direta pelo ícone executar
Figura 5. Tela da execução direta pelo ícone executar na memória
10
CAPÍTULO 3
CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES
3.1.
FORMALIZANDO A ESCRITA DE ALGORITMOS
Para que os computadores possam interpretar os algoritmos que criamos, precisamos
transformar a seqüência de passos que escrevemos em linguagem natural para uma linguagem que
possa ser “entendida” pelo computador. Essas linguagens são chamadas de linguagens de
programação. Existem varias linguagens de programação em uso atualmente. Em nosso curso,
usaremos a linguagem Portugol. O Portugol é linguagem que une a estrutura rígida das linguagens
de programação à facilidade de compreensão da linguagem natural.
Para aprender a criar algoritmo, devemos começar, estudando os conceitos básicos de
variáveis e constantes.
3.2.
VARIÁVEIS
Para que um programa seja executado em um computador, o mesmo, carrega esse programa
na memória. A memória é utilizada para armazenar tanto as instruções dos programas quanto os
dados utilizados pelos mesmos. Qualquer programa, para ser executado, tem de estar na memória
(FARRER, 1999).
Memória:
Meio físico para armazenar dados temporariamente ou
permanentemente (TANENBAUM, 1997, p.212).
Ao criamos nossos algoritmos, provavelmente precisamos armazenar dados referentes ao
problema, como um nome, um número ou mesmo o resultado de uma operação. Mas, para
armazenar esses dados, precisamos solicitar ao computador que ele reserve uma área da memória
para nosso uso. A forma de pedirmos ao computador que reserve memória é chamada de
declaração de variáveis.
11
Sintaxe:
Todos os comandos utilizados em linguagem de
programação, tem uma sintaxe. Sintaxe é a forma de escrita do
comando.
A sintaxe para declarar variável em Portugol é:
Sintaxe: variavel tipo_da_variável nome_da_varial
variavel: Comando em Portugol para indicar declaração de uma variável.
tipo_de_variável: Indica o tipo de dados que iremos armazenar na variável.
nome_da_variável: Define o nome que iremos referenciar a nossa variável.
Quando declaramos uma variável, temos o objetivo de armazenar algum tipo de valor
específico nela. Por exemplo, se criarmos um algoritmo que calcule de modo simples a idade de
uma pessoal, precisaremos de variáveis para armazenar o nome da pessoa, bem como a ano de
nascimento e ano atual, também uma que armazenará o resultado do cálculo. Assim, o nome dado
à variável deve deixar claro o objetivo da mesma, ou seja, devemos utilizar nomes sugestivos.
Apesar de esta ser a principal diretriz quanto à atribuição de nomes a variáveis, algumas outras
regras são apresentadas a seguir:
REGRAS
EXEMPLOS
Inicie sempre por uma caracter
alfabético, nunca por número
Nome (correto)
1nome (errado)
Não utilize caracteres especiais
como “, ( ) / *; +.
Nome (M); N*B
Não coloque espaços em branco
ou hífen entre nomes.
salario-bruto
Utilize, se necessário, underline
Salário_bruto
Crie suas variáveis com nomes
sugestivos.
Se vai guardar salário de
funcionários, dê à variável o
nome salario.
12
Quando declaramos uma variável, devemos ter em mente os valores que serão armazenados
naquele espaço de memória. É essa observação que definirá o tipo da variável a ser declarada. Uma
variável pode ser de um dos seguintes tipos:
TIPO
DESCRIÇÃO
VALORES
inteiro
Valares ordinais com 4 bits.
-2 147 483 648
2 147 483 647
real
Valores com parte decimal
definidos com 64 bits
-1.7 E 308
1.7 E 308
logico
Valores com parte decimal
definidos com 64 bits
verdadeiro (V) ou falso (F)
caracter
Caracteres da Tabela ASCII
ASCII(0)
| só um caracter
ASCII(255) | ex: “M”
texto
Conjuntos de caracteres
"Sequências de caracteres
entre aspas"
Variável:
Uma Variável é uma posição nomeada de memória, que é
usada para guardar um valor que pode ser modificado pelo
programa. (LAUREANO, 2005, p. 12)
9
Aprendemos algumas regras que devem ser seguidas para dar
nomes a variáveis. Assinale os nomes de variáveis que obedecem a
essas regras:
a) (
b) (
c) (
d) (
e) (
f) (
) nome
) telefone-celular
) nome+sobrenome
) 2taxa
) telefone_celular
) conta1
13
10
Para cada valor dado abaixo, foi definido um tipo de variável.
Marque os pares de valor e tipo definidos corretamente:
a) (
b) (
c) (
d) (
e) (
f) (
g) (
h) (
i) (
j) (
) valor = 6.5
) valor = “S”
) valor = -7
) valor = “R”
) valor = 9
) valor = -40.65
) valor = 59
) valor = “Maria”
) valor = 274
) valor = 1.3
Tipo = inteiro
Tipo = texto
Tipo = inteiro
Tipo = caracter
Tipo = inteiro
Tipo = inteiro
Tipo = real
Tipo = texto
Tipo = real
Tipo = inteiro
11
Você está fazendo um algoritmo para calcular a média dos
alunos a partir das notas de 2 provas. Assim, precisará de 3
variáveis: uma para a nota da primeira prova, uma para a nota da
segunda prova e uma para a média. Segundo as normas da
instituição, as notas das provas devem ser números inteiros de 0 a
10.
Já para a média podem ser atribuídos valores com casas
decimais. Utilizando a sintaxe de declaração de variáveis em
Portugol e as regras para definição de tipos e de nomes, indique
como você declararia essas 3 variáveis.
Dica: lembre-se de escolher nomes sugestivos para as
variáveis.
3.3.
CONSTANTES
Do mesmo jeito que o valor de uma variável pode ser alterado ao longo de seu algoritmo.
Mas, podemos precisar armazenar valores que não se alteram. Para isso existem as constantes.
As constantes são criadas obedecendo às mesmas regras das variáveis. Com uma única
diferença o valor armazenado na constante não se modifica durante a execução de um algoritmo.
A sintaxe para declarar constante em Portugol é:
Sintaxe: constante nome_da_constante <- valor
14
constante: Comando em Portugol para indicar declaração de uma constante.
tipo_de_constante: Define o nome que iremos referenciar a nossa variável.
valor: É o valor assumido pela constante.
Por exemplo, considere um algoritmo que calcule o valor da contribuição do FGTS: 15%
sobre o salário, independentemente do valor do salário. Assim, a taxa de 15% será constante
durante a execução do programa. Logo, poderia declarar a constante da seguinte forma:
constante TAXA_FGTS <- 0.15
Constante:
Variável com valor pré-definido que não pode ser
modificado por nenhuma função de um programa.
(LAUREANO, 2005, p.16).
3.4.
COMANDOS DE ATRIBUIÇÕES, ENTRADA E SAÍDA DE DADOS
3.4.1. Comandos de Atribuição
Para armazenar um determinado valor durante a execução do programa. Para isso,
utilizamos o comando de atribuição que, em Portugol, é representado por uma seta (<-),
conforme sintaxe abaixo:
Sintaxe: indicador <- expressão
indicador: Nome da variável ou constante a ser utilizada.
expressão: Valor ou expressão a ser armazenado.
15
Exemplo:
variavel inteiro nota
variavel caracter sexo
nota <- 9
sexo <- “M”
3.4.2. Comandos de entrada de dados
Responsável pela leitura e armazenamento dos dados digitado no teclado na variável que
indicarmos. A sintaxe do comando de entrada de dados em Portugol é exibida a seguir:
Sintaxe: ler variável
ler: Responsável por ler e armazenar o que o usuário digitou pelo teclado.
variável: Nome da variável a ser declarada.
Exemplo:
variavel real nota
variavel texto nome
ler nota
ler nome
3.4.3. Comandos de saída de dados
Responsável por exibir no monitor o valores de constantes, variáveis ou expressões. A
sintaxe do comando de saída de dados em Portugol é exibida abaixo:
Sintaxe: escrever expressão
escrever: Responsável por exibir no monitor uma mensagem para usuário.
expressão: Indica o que será exibido no monitor. É normalmente composta por
um texto fixo seguido por uma vírgula e um nome de variável.
16
.Exemplo:
inicio
variavel texto nome
escrever "Digite seu Nome"
ler nome
escrever “Bom dia”, nome
fim
12
Assinale os comandos de atribuição realizados corretamente:
a) (
b) (
c) (
d) (
) variavel
) variavel
) variavel
) variavel
texto SEXO <- “M”
real altura 1.72
inteiro IDADE <- 35
texto NOME <- “Silvio”
13
No programa abaixo, dois valores inteiros são lidos e somados, e
o resultado dessa soma é mostrado no final da execução. Analise as
linhas do programa e assinale as afirmações corretas:
Linha 1 ... inicio
Linha 2 ... varavel real NOTA1, NOTA2, MEDIA
Linha 3 ... escrever (“Digite a primeira nota:”)
Linha 4 ... ler (NOTA1)
Linha 5 ... escrever (“Digite a segunda nota:”)
Linha 6 ... leia (NOTA2)
Linha 7... MEDIA <- (NOTA1 + NOTA2)/2
Linha 8 ... escreva (“A média das notas digitadas é:”, MEDIA)
Linha 9 ... fim
a) ( ) linha 4:O primeiro valor digitado no teclado está sendo lido e
armazenado em NOTA1;
b) ( ) linha 6: O segundo valor digitado no teclado está sendo lido e
armazenado em NOTA2;
c) ( ) linha 7: O resultado da soma dos valores digitados está sendo
atribuído à variável MEDIA
d) ( ) linha 8: No monitor serão exibidas a mensagem que está entre
aspas e a média das notas digitadas
17
14
Faça um algoritmo que solicite que o usuário digite seu nome e a
seguir solicite que seja digitada sua idade. Depois que o usuário
digitar o nome e a idade, o programa deve exibir na tela duas
mensagens: uma com o nome e outra com a idade do usuário.
Por exemplo, nome do usuário seja João e ele tenha 42 anos.
Assim, após a digitação dos dados, seu programa deve exibir as
seguintes mensagens: “Seu nome é João” e “Você tem 42 anos”.
3.5.
OPERADORES ARITMÉTICOS E EXPRESSÕES ARITMÉTICAS
Os operadores aritméticos são símbolos que representam operações aritméticas, ou seja, as
operações matemáticas básicas. Abaixo é apresentada uma tabela contendo os operadores
aritméticos que utilizaremos neste curso.
Operadores Aritméticos
Operador
Operação Matemática
+
Adição
-
Subtração
/
Divisão
*
Multiplicação
%
Resto da divisão inteira
^
Potenciação
Os operadores aritméticos serão utilizados para formar expressões aritméticas. As
expressões aritméticas são formadas por operadores aritméticos que agem sobre operandos. Os
operandos podem ser variáveis ou constantes do tipo numérico, ou seja, inteiros ou reais.
Segue dois exemplos de expressões aritméticas:
Media/2
t*2+e/2
18
Nas expressões aritméticas o computador vai seguir as mesmas ordem da matemática,
primeiro divisão (/) e multiplicação (*), depois adição (+) e subtração (-), para ser alterado essa
ordem, poderemos usar os parênteses (( )), os colchetes ([]) e as chaves ({}).
Por exemplo:
numero1 + (numero2 + numero3) / 2
Primeiro somamos numero2 a numero3; o resultado é divido por 2 e só depois somamos
com numero1.
Vamos agora mostrar um exemplo de algoritmo que ler e multiplica dois números inteiro e
depois exibe o resultado, e logo depois explicar linha a linha desse algoritmo.
Algoritmo:
Linha 1...
inicio
Linha 2...
varariavel inteiro NUM1, NUM2, MULT
Linha 3...
escrever “Digite o primeiro número”
Linha 4...
ler NUM1
Linha 5...
escrever “Digite o segundo número”
Linha 6...
ler NUM2
Linha 7...
MULT <-NUM1 * NUM2
Linha 8...
escrever “O resultado da multiplicação é:”, MULT
Linha 9...
fim
Explicação:
Linha 1...
Indica o início do programa.
Linha 2...
Declaração das três variáveis do tipo inteiro necessárias ao
programa.
Linha 3...
O comando exibirá (escreva) a mensagem que solicita a digitação
do primeiro número.
Linha 4...
O primeiro número digitado será lido e armazenado na variável
NUM1.
Linha 5...
O comando escreva exibirá a mensagem que solicita a digitação
do segundo número.
19
Linha 6...
O segundo número digitado será lido e armazenado na variável
NUM2.
Linha 7...
A variável MULT receberá o resultado da multiplicação do
primeiro pelo segundo número.
Linha 8...
O comando escreva exibirá uma mensagem com o resultado da
multiplicação.
Linha 9...
3.6.
Indica o fim do programa.
OPERADORES LÓGICOS, RELACIONAIS E EXPRESSÕES LÓGICAS
Antes de falarmos de expressões lógicas, vamos conhecer os operadores lógicos e
relacionais, pois precisaremos desses operadores pra utilizar as expressões lógicas.
3.6.1. Operadores Lógicos
De acordo com seus operandos, os operadores lógicos só retornam dois estados,
verdadeiro ou falso, os mais comuns estão na tabela abaixo:
Operadores Lógicos
E
OU
NÃO
Também são conhecidos como conectivos, pois podem ser usadas para juntar duas
preposições como segue o exemplo abaixo, claro que utilizaremos duas variáveis inteiras, ou
seja, P e S onde, P = 8 e S = 13.
Você deve ter notado, pelos exemplos anteriores:
• quando utilizamos o operador lógico E, o resultado só será
verdadeiro se as duas condições relacionam das forem
verdadeiras;
• para o operador OU, basta que uma das condições seja
verdadeira que o resultado será verdadeiro;
• em conseqüência: para o operador OU, para que o resultado
seja falso, as duas condições devem ser falsas.
20
Agora vamos aprender a utilizar a tabelas-verdade para visualizar todas as opções
possíveis dos operadores lógicos. Segue um exemplo abaixo apresentando 3 tabelas-verdades
dos operadores lógicos E, OU e NÃO para duas preposições (ou expressões) A e B.
A
B
A ou B
V
V
V
V
F
V
F
V
V
F
F
F
A
B
AeB
V
V
V
V
F
F
F
V
F
F
F
F
A
não A
V
F
F
V
Relação
Resultado
P>6 E S>7
Verdadeiro: o valor de A é menor que 6 E o valor de B é
maior que 7.
P=5 E S<5
Falso (F): apesar de o valor de A ser igual a 5, o valor de
B não é menor que 5.
P = 5 OU S < 5
Verdadeiro: usando o operador OU, se ao menos uma
das condições for verdadeira (A=5), o resultado da
expressão é verdadeiro.
21
3.6.2. Operadores Relacionais
Operadores relacionais são utilizadores pra fazer comparação entre dois valores do
mesmo tipo, podendo esses valores ser representados por variáveis ou constantes. Abaixo é
apresentada uma tabela contendo os operadores relacionais.
Operadores Relacionais
Operador
Operação Relacional
=
Igual
=/=
Diferente
>
Maior
>=
Maior ou igual
<
Menor
<=
Menor ou igual
O nome que se da a uma comparação feito com os operadores relacionais é relação. O
resultado obtido dessa relação é sempre o valor lógico, ou seja, verdadeiro ou falso. Segue a
baixo uma tabela exemplificando isso, considerando duas variáveis inteiras, P e S onde, P = 8 e
S = 13.
Relação
Resultado
P=S
Falso
P<S
Verdadeiro
P >= S
Falso
B != 8
Verdadeiro
P >= 3
Falso
3.6.3. Expressões Lógicas
Como foi dito anteriormente, as expressões lógicas são expressões formadas a partir do
uso de variáveis e constantes, operadores relacionais e operadores lógicos. As expressões
lógicas também retornaram sempre um valor lógico: verdadeiro ou falso.
22
Exemplos:
(w < q) e (q < u)
(q + z < w) ou (w>10) e (q < 5)
Podemos ver nesse exemplo que combinamos operadores lógicos e relacionais numa
mesma expressão, então é importante aprendermos a ordem de precedência entre eles, pois isso
irá definir a forma de solução da expressão. Segue abaixo a ordem das precedências.
Ordem
Operador
1ª
Operadores aritméticos seguindo a ordem de precedência
indicada na seção 2.5.
2ª
Operadores relacionais
3ª
Operador lógico NÃO
4ª
Operador lógico E
5ª
Operador lógico OU
Uma forma de você não se confundir é
definir as precedências usando parênteses. As
expressões dentro dos parênteses mais internos
são resolvidas primeiro.
Observe as seguintes declarações de variáveis e suas respectivas atribuições e responda às questões de
15 a 19:
variavel inteiro NUM1 <- 20
variavel inteiro NUM2 <- 10
variavel inteiro NUM3 <- 210
variavel inteiro NUM4 <- 210
15
Coloque F ou V nas expressões abaixo:
Exemplo: ( F ) NUM4 > NUM3
a)
b)
c)
d)
(
(
(
(
) NUM1 > NUM2
) NUM1 < NUM3
) NUM1 < NUM4
) NUM3 = NUM4
23
16
Coloque F ou V nas expressões abaixo:
Exemplo: ( F ) NUM1-NUM2 < NUM2
a)
b)
c)
d)
(
(
(
(
) NUM1 + NUM2 > NUM3
) NUM1 * NUM2 < NUM4
) NUM3 – NUM4 != NUM4
) NUM3 / NUM1 < NUM4
17
Coloque F ou V nas expressões abaixo:
Exemplo: ( F ) NUM1+ NUM2 > 10 e NUM3 - NUM4 = NUM3
a)
b)
c)
d)
(
(
(
(
) NUM1 / NUM2 > 0 e NUM1 + NUM3 > NUM4
) NUM1 * NUM2 > 40 e NUM3 - NUM1 > NUM4
) NUM1 - NUM2 = 10 e NUM2 + NUM3 > NUM4
) NUM1 + NUM2 < 10 e NUM3 - NUM4 = NUM1
18
Coloque F ou V nas expressões abaixo:
Exemplo: ( V ) NUM3 / NUM2 >55 ou NUM1+ NUM3 > NUM4
a)
b)
c)
d)
(
(
(
(
) NUM3 / NUM2 > 0 ou NUM1 + NUM3 > NUM4
) NUM2 * NUM1 = 50 ou NUM3 - NUM1 > NUM4
) NUM1 - NUM2 > 10 ou NUM2 + NUM3 > NUM4
) NUM1 + NUM2 > 10 ou NUM3 / NUM1 > NUM4
19
Coloque F ou V nas expressões abaixo:
Exemplo: ( V ) NUM1 > NUM2 e NUM2 < NUM3 ou NUM3 < NUM4
a)
b)
c)
d)
( ) (NUM1 > NUM2 e NUM2 < NUM3) ou NUM3 < NUM4
( ) NUM1 * NUM2 > 10 e (NUM1 > NUM4 ou NUM3 - NUM1 > UM4)
( ) NUM1 > 10 ou (NUM1> NUM4 e NUM3 - NUM1 > NUM4)
( ) NUM1 + NUM2 > 10 ou (NUM1 / NUM3 > NUM4 e NUM3 < NUM4)
24
20
O algoritmo abaixo deverá ler duas notas, calcular a média e
mostrar o resultado. Para que o algoritmo seja executado
corretamente, complete-o com os comandos que faltam:
inicio
variavel ____ NOTA1, NOTA2, MEDIA
________ “Digite a primeira nota”
________ NOTA1
escrever “___________________”
ler (________)
MEDIA <- (_______ + _______)/2
escrever “A média das notas é: ”, _____________
fim
21
Faça um algoritmo que leia um número inteiro e
mostre seu antecessor e seu sucessor.
22
Faça um algoritmo que leia dois números reais e
mostre a soma e a média aritmética desses números.
23
Faça um algoritmo que receba como entrada as
medidas dos dois catetos de um triângulo retângulo e
calcule e exiba a medida da hipotenusa e a área do
triângulo.
25
3.7.
ESTRUTURA DE SELEÇÃO (DECISÃO)
Os comandos de seleção ou de decisão são técnicas de programação que conduzem a
estruturas de programas que não são totalmente seqüenciais. Uma estrutura de seleção permite a
escolha de um grupo de ações a ser executado quando determinadas condições, representadas por
expressões lógicas, são ou não satisfeitas.
3.7.1. Comando SE
Responsável por tomada de decisão no algoritmo, fazendo com que tenha dois tipos de
bloco instruções a ser executadas de acordo com a reposta da expressão lógica, uma verdadeira
e outra falsa. A sintaxe do comando SE em Portugol é exibida abaixo:
Sintaxe: se expressão lógica entao
bloco de instruções verdade
senao
bloco de instruções falso
imse
se: Indica o início da estrutura de seleção.
expressão lógica: Condição que definirá o bloco a ser executado.
entao: Responsável de executar o bloco de instrução, caso a expressão lógica
seja verdadeira.
senao: Responsável de executar o bloco de instrução, caso a expressão lógica
seja falsa.
fimse: Indica o final da estrutura de seleção.
Exemplo 1:
inicio
variavel real nota1
variavel real nota2
variavel real media
26
ler nota1
ler nota2
media <- (nota1 + nota2)/2
se media >= 60 entao
escrever "Parabéns! Aprovado!"
fimse
fim
Note, no algoritmo acima, que não utilizamos o bloco
SENAO na estrutura de seleção. Com isso, caso a média seja
menor que 60, nada será executado em nosso algoritmo.
Isso mostra que não é obrigatório o uso do SENAO, a não
se que seja necessário executar algumas instruções se o retorno
da expressão lógica for falso.
Exemplo 2:
inicio
variavel real nota1
variavel real nota2
variavel real media
ler nota1
ler nota2
media <- (nota1 + nota2)/2
se media >= 60 entao
escrever "Parabéns! Aprovado!"
senao
escrever "Desculpe! Reprovado!"
fimse
fim
3.7.2. Comando ESCOLHE
Também responsável por tomada de decisão, mais numa estrutura diferente do comando
27
SE. A sintaxe do comando ESCOLHA em Portugol é exibida abaixo:
Sintaxe:
escolhe expressão
caso constante
bloco de instrução 1
caso constante
bloco de instrução 2
defeito
bloco de instrução padrão
fimescolhe
escolha: Indica o início da estrutura de seleção.
expressão lógica: Responsável por retorna o valor da expressão.
caso constante: Responsável de executar o bloco de instrução, caso a expressão
seja verdadeira.
defeito: Responsável de executar o bloco de instrução, caso a nenhum dos casos
seja satisfatório, ou seja, verdadeira.
fimescolhe: Indica o final da estrutura de seleção.
Exemplo:
inicio
variavel inteiro num1, num2
variavel caracter operador
escrever "Digite o primeiro numero: "
ler num1
escrever "Digite um operador (+, -, *, /) : "
ler operador
escrever "Digite o segundo numero: "
ler num2
escolhe operador
caso "+" :
escrever "O resultado é: ", num1 + num2
28
caso "-" :
escrever "O resultado é: ", num1 - num2
caso "*" :
escrever "O resultado é: ", num1 * num2
caso "/" :
escrever "O resultado é: ", num1 / num2
defeito :
escrever "Operador invalido!!!"
fimescolhe
fim
24
O algoritmo abaixo deve ler o salário bruto e calcular o salário
líquido. Neste exemplo, o salário líquido será o salário bruto menos os
descontos de INSS e IR, seguindo as seguintes regras: caso o salário
seja menor que R$ 1.500,00, não devemos descontar IR e
descontaremos 8% de INSS; para
salários a partir R$ 1.500,00,
descontaremos 5% de IR e 11% de INSS. Ao final deve ser exibido o
novo salário. Para que o algoritmo seja executado corretamente,
complete-o com os comandos que faltam. Obs. essas faixas de cálculo
são fictícias, apenas para exemplo, não condizendo com as leis em
vigor no país.
inicio
var _______ bruto, liquido, inss, ir
__________ (“Digite o salário”)
_____ (bruto)
se ___________ < 1500 entao
inss <- ____________* 0.08
ir <- ____________
senão
____ <- bruto * 0.11
ir <- bruto * _____
fimse
liquido <- bruto - _____ - _____
___________ “O valor do salário líquido é:”, ______________
fim
29
25
Sabendo que triângulo é uma figura geométrica de três lados onde cada um dos
lados é menor que a soma dos outros dois, queremos fazer um algoritmo que receba
três valores e verifique se eles podem ser os comprimentos dos lados de um triângulo.
Neste contexto, complete o algoritmo abaixo para que funcione:
inicio
variavel real lado1, lado2, lado3
______ “Digite os valores dos 3 lados.”
______ lado1
______ lado2
ler _____
se (lado1 + lado2 < _____) e (lado2 + lado3 < lado1) _____ (lado1 + _____ < lado2) então
__________ “Podemos construir um triângulo com estas dimensões!”
senão
escrever “_____________________”
_______
fim
26
Escreva um algoritmo que leia um número inteiro e diga:
• Se ele é par ou ímpar. Dica: utilize o operador % (resto da
divisão inteira).
• Se ele é positivo, negativo ou nulo (zero).
27
Escreva um algoritmo que leia a idade de um atleta e
escreva na tela em que categoria ele se enquadra, seguindo a
tabela abaixo:
Faixa Etária
de 5 a 10 anos
de 11 a 17 anos
de 18 a 30 anos
acima de 30 anos
Categoria
Infantil
Juvenil
Profissional
Sênior
30
3.8.
ESTRUTURA DE REPETIÇÃO
Os comandos de repetição são técnicas de programação que permite repetir um bloco de
instruções em determinado números de vezes determinado ou alguma condição seja satisfatória.
3.8.1. Comando PARA
Responsável por criar um laço de repetição de instruções determinando o número de
vezes que será executar essas instruções. A sintaxe do comando PARA em Portugol é exibida
abaixo:
Sintaxe: para variável_numérica de valor_inicial ate valor_final
bloco de instruções
próximo
para: Indica o início da estrutura de repetição.
variável_numérica: Nome da variável que vai guardar a valor que vai variar
durante o laço.
de: Indica onde irá iniciar o laço.
valor_inicial: Valor que indicará da onde começará o laço.
ate: Indica onde irá terminar o laço.
valor_final: Valor que indicará onde parará o laço.
proximo: Volta para início da estrutura de repetição.
Exemplo:
inicio
variavel real nota, soma <- 0, media
variável inteiro conta
para conta de 0 ate 9 passo 1
escrever "Digite a nota: "
31
ler nota
soma <- soma + nota
proximo
media <- soma / conta
escrever "A média da turma é: ", media
fim
Note, no algoritmo acima que usamos um opção chamado
PASSO no comando PARA, isso serve para incrementar o
valor da variável, por isso se não informado, o valor será
incrementado de 1 em 1, mais caso coloque essa opção, faz
com que o valor será incrementado pelo valor informado nele,
por exemplo PASSO 2, isso fará o valor da variável ser
incrementada em 2 em 2.
3.8.2. Comando ENQUANTO
Responsável por criar um laço de repetição de instruções enquanto uma determinada
condição seja satisfatória. A sintaxe do comando ENQUANTO em Portugol é exibida abaixo:
Sintaxe: enquanto condição faz
bloco de instruções
fimenquanto
enquanto: Indica o início da estrutura de repetição.
condição: Condição que definirá o bloco a ser executado.
faz: Responsável de executar o bloco de instrução, caso a expressão lógica seja
verdadeira.
fimenquanto: Indica o final da estrutura de repetição.
32
Exemplo:
inicio
variavel real nota, soma <- 0, media
variável inteiro resp <- 1, contador
enquanto resp = 1 faz
escrever "Digite a nota: "
ler nota
soma <- soma + nota
escrever "Digite 1 para continuar ou digite outra tecla para finalizar."
ler resp
contador <- contador + 1
fimenquanto
media <- soma / contador
escrever "A média da turma é: ", media
fim
28
Crie um algoritmo que leia 5 valores e determinar o maior
dentre eles.
29
Crie um algoritmo que leia 4 números inteiros e calcular a
soma dos que forem par.
30
Crie um algoritmo que mostre a tabuada de multiplicar do
número 4.
33
31
Crie um algoritmo que calcule e mostrar a média aritmética
dos números pares compreendidos entre 13 e 73.
32
Crie um algoritmo que leia 10 valores, um de cada vez, e
contar quantos deles estão no intervalo [10,50] e quantos deles
estão fora deste intervalo, mostrando estas informações.
3.9.
VETORES E MATRIZES
Até o momento, nossas variáveis que declaramos em nossos algoritmos eram capazes de
armazenar apenas um valor. Assim, para cada valor que precisamos manipular, nós declaramos
uma variável distinta. Mais nesse capitulo vamos aprender a armazenar vários valores do mesmo
tipo em uma única uma variável. Para isso, utilizaremos os conceitos de vetores e matrizes.
.
3.9.1. VETORES
Um vetor é uma estrutura de dados utilizada para representar certa quantidade de valores
homogêneos, ou seja: um conjunto de valores, todas do mesmo tipo, numa mesma variável. A
sintaxe do comando em Portugol é exibida abaixo:
Sintaxe: variavel / constante tipo nome[dimenssão]
variavel: Indicar a declaração de uma variável.
constante: Indicar a declaração de uma constante.
tipo: Indica o tipo de dados que iremos armazenar na variável.
nome: Define o nome que iremos referenciar a nossa variável.
34
dimenssão: Define o tamanho do vetor, ou seja, sua capacidade de
armazenamento.
Exemplo:
inicio
variavel real notas[10]
variavel inteiro indice
escrever "Lendo as notas \n"
para indice de 0 ate 9
escrever "Digite a nota do próximo aluno: "
ler notas[indice]
proximo
para indice de 0 ate 9
escrever "A nota ", notas[índice], " foi armazenada na posição ", índice, " do vetor"
proximo
fim
3.9.2. MATRIZES
Na verdade, vetor é um tipo especial de matriz. Dizemos que vetor é uma matriz
unidimensional. Ou seja, enquanto o vetor tem apenas uma dimensão, a matriz pode ter tantas
dimensões quantas forem necessárias.
Mas, Assim, sempre que nos referirmos a matrizes com duas dimensões, estaremos
falando de matrizes bidimensionais. A sintaxe do comando em Portugol é exibida abaixo:
Sintaxe:
variavel / constante tipo nome[dimenssão1] [dimenssão2]... [dimenssãon]
35
variavel: Indicar a declaração de uma variável.
constante: Indicar a declaração de uma constante.
tipo: Indica o tipo de dados que iremos armazenar na variável.
nome: Define o nome que iremos referenciar a nossa variável.
dimenssão: Define o tamanho do vetor, ou seja, sua capacidade de
armazenamento.
Exemplo:
inicio
variavel real notas[5][2]
variavel inteiro lin, col
escrever "INICIANDO O LOOP DE LEITURA \n\n"
para lin de 0 ate 4
para col de 0 ate 1
escrever "Digite a nota ", lin, " do aluno ", col
ler notas[lin][col]
proximo
proximo
escrever "\nINICIANDO O LOOP DE EXIBIÇÃO \n\n"
para lin de 0 ate 4
para col de 0 ate 1
escrever "Nota = ", notas[lin][col]
proximo
proximo
fim
Note, no algoritmo acima usamos uma opção to tipo “\n”
no texto do comando ESCREVER, isso serve para indicar ao
computador que o que ele vai mostrar após o \n será mostrador
na próxima linha, e uma naneira de você forçar uma quebra de
linha.
Lembrando que essa opção não é obrigatória, e sim
opcional. Mais é uma maneira de melhor visualizar os
resultados de seu algoritmo.
36
32
Crie um algoritmo que leia e armazene num vetor a média de
10 alunos, depois mostre somente os maiores que 6,0.
33
Crie um algoritmo que leia e armazene em vetor o nome e
nota final de 10 alunos, depois mostre os mesmo com a descrição
ao lado "aprovado" se nota >= 6,0 e "reprovado" se nota < 6,0.
34
Crie um algoritmo carregue uma matriz 2 x2 com os valores
das vendas de uma loja, supondo 2 meses e 2 vendedores. Calcule
e mostre, em cada mês, os valores das vendas.
3.10. FUNÇÕES PRÉ-DEFINIDAS
Uma função é uma unidade de código de programa autônoma desenvolvida para cumprir
uma determinada tarefa em particular (MIZRAHI, 1990).
Sendo assim, funções pré-definidas, já são funções prontas para ser usadas no algoritmo ou
programas. Segue a baixo uma tabela com alguns funções pré-definidas mais comuns para usarmos
nos nossos algoritmos.
37
Função
Descrição
Exemplo
EXP
Exponeciação
exp(1.0)
ABS
Valor Absoluto
abs(123.6)
RAIZ
Raiz Quadrada
raiz(123.6 * 4)
LOG
Logaritmo base 10
log(1.0 * 1000)
LN
Logaritmo base E
ln(1.0 * 1000)
INT
Parte inteira de um número real
int(123.6)
FRAC
Parte fracionária de um número real frac(123.6)
ARRED
Arredondamento de um número real arred(123.6)
REFERÊNCIAS
CARVALHO, Vicictorio Albani de – Lógica de Programação, Colatina-ES: CEAD / Ifes, 2009.
LAUREANO, M. Programando em C. Rio de Janeiro: Brasport, 2005.
MIZRAHI, Victorine V. Treinamento em Linguagem C – Curso Completo – Módulo 1. São Paulo: Mc
Graw Hill, 1990.
TANENBAUM, Andrew S. Sistemas Operacionais. Porto Alegre: Bookman, 2000.
38
Download

- QUEM SOU