Você está na página 1de 91

Introdução a Algoritmos

PROF. MARLON PEREIRA FARIAS


Conceitos Iniciais
2

 Desde o início de sua existência, o homem procurou


criar máquinas que o auxiliassem em seu trabalho,
diminuindo o esforço e economizando tempo.
 Dentre essas máquinas o
computador vem se
mostrando uma das mais versáteis, rápidas e
seguras.
 A finalidade de um computador é receber, manipular
e armazenar dados.
Conceitos Iniciais
3

 A finalidade principal do computador é realizar a


tarefa de processamento de dados, isto é, receber
dados por um dispositivo de entrada, realizar
operações com esses dados e gerar uma resposta que
será expressa em um dispositivo de saída.
 O computador não possui iniciativa, nenhuma
independência, não é criativo nem inteligente, por
isso, precisa receber instruções nos mínimos
detalhes.(ASCENCIO, 2012)
O Computador
4

 Um computador é uma máquina que manipula


dados a partir de uma lista de instruções.

 CPU
 Memória
 Dispositivos de E/S
O Computador
5

 A UCP (ou CPU da sigla em inglês, Central Processing Unit)


é um conjunto de dispositivos eletrônicos responsável pelas
operações de processamento referentes aos cálculos lógicos
e matemáticos.
 A memória é o dispositivo responsável por armazenar
dados.
 Os dispositivos de entrada e saída de dados (E/S) são de
suma importância pois qualquer informação que deva
entrar ou sair do computador será feita através deles.
RACIOCÍNIO LÓGICO
6

 é um conjunto de estudo que visa a determinar os processos


intelectuais que são as condições gerais do conhecimento, mais
podemos ser mais técnico e dizer que é sequência coerente, regular e
necessária de acontecimentos, de coisas ou fatos, ou um esquema
sistemático que define as interações com critérios e princípios formais
de raciocínio e pensamento.
RACIOCÍNIO LÓGICO
7
 Eu tenho que atravessar
um rio de barco, mais só
posso levar um de cada
vez, de um jeito que a
raposa não fique só com a
galinha e tão pouco a
galinha com o saco de
milho. Se não a raposa
come a galinha ou a
galinha come o saco de
milho.
Algoritmo
8

 Um algoritmo é formalmente uma sequência finita


de passos que levam a execução de uma tarefa.
 Receita
 Passo-a-passo
Receita de Bolo
9
Nó de gravata
10
Algoritmos
11

 é uma sequencia de passos que visa atingir um objetivo


bem definido(FORBELLONE, 1999)
 é a descrição de uma sequencia de passos que deve ser
seguida para a realização de uma tarefa(ASCENCIO,
1999)
 É uma sequencia finita de instruções ou operação cuja
execução, em tempo finito, resolve um problema
computacional, qualquer que seja sua instância.
(SALVETTI, 1999)
 São regras formais para a obtenção de um resultado ou da
solução de um problema, englobando fórmulas de
expressões aritméticas.(MANZANO, 1997)
Algoritmos
12

 O algoritmo será a receita para a construção dos


meus programas.
 Um programa de computador tem um objetivo e uma série de
passos para resolver um problema
 Ao fazer um algoritmo, poderemos nos deparar com:
 Problemas que podem ser resolvidos de várias formas.

 Vários caminhos para chegar a um determinado lugar.

 Lugares que só possuem um caminho.

 Tudo dependerá da sua capacidade de criar a melhor lógica


para solucionar o problema apresentado.
Algoritmos
13

 Para o desenvolvimento de um algoritmo eficiente é


necessário obedecermos algumas premissas básicas
no momento de sua construção:
 Definir ações simples e sem ambiguidade;
 Organizar as ações de forma ordenada
 Estabelecer as ações dentro de uma sequência finita de passos.
Algoritmo 1 Troca de pneu do carro.
14

 1: desligar o carro
 2: pegar as ferramentas (chave e macaco)
 3: pegar o estepe
 4: suspender o carro com o macaco
 5: desenroscar os 4 parafusos do pneu furado
 6: colocar o estepe
 7: enroscar os 4 parafusos
 8: baixar o carro com o macaco
 9: guardar as ferramentas
Algoritmo 2 – Somar três números
15

 Passo 1 – Receber os três números


 Passo 2 – Somar os três números
 Passo 3 – Mostrar o resultado obtido
Algoritmo 3 – Fazer um sanduíche
16

 Passo 1 – pegar o pão


 Passo 2 – Cortar o pão ao meio
 Passo 3 – Pegar a maionese
 Passo 4 – Passar a maionese no pão
 Passo 5 – Pegar e cortar o alface e tomate
 Passo 6 – Colocar o alface e tomate no pão
 Passo 7 – Pegar o hambúrguer
 Passo 8 – Fritar o hambúrguer
 Passo 9 – Colocar o hambúrguer no pão
Algoritmo 4 – Trocar lâmpada
17

 Passo 1 – Pegar uma lâmpada nova


 Passo 2 – Pegar uma escada
 Passo 3 – posicionar a escada embaixo da lâmpada
queimada
 Passo 4 – subir na escada com a lâmpada nova na mão
 Passo 5 – retirar a lâmpada queimada
 Passo 6 – colocar a lâmpada nova
 Passo 7 – descer da escada
 Passo 8 – testar a nova lâmpada
 Passo 9 – guardar a escada
Observação
18

 Você pode estar pensando: “Mas eu realizo essas


atividades de maneira diferente!”.
 Esse pensamento está correto, pois, às vezes, um
problema pode ser resolvido de diversas maneiras,
porém, gerando a mesma resposta. Ou seja, podem
existir vários algoritmos para solucionar o mesmo
problema.
Partes de um Algoritmo
19

 Um algoritmo quando programado num computador é


constituído pelo menos das 3 partes, sendo elas:
1) Entrada de dados – na entrada, são fornecidas as
informações necessárias para que o algoritmo possa ser
executado. Estas informações podem ser fornecidas no momento
em que o programa está sendo executado ou podem estar
embutidas dentro do mesmo.
2) Processamento de dados – no processamento são
avaliadas todas as expressões algébricas, relacionais e lógicas,
assim como todas as estruturas de controle existentes no
algoritmo (condição e/ou repetição).
3) Saída de dados – na saída, todos os resultados do
processamento (ou parte deles) são enviados para um ou mais
dispositivos de saída, como: monitor, impressora, ou até mesmo a
própria memória do computador.
Algoritmo Calcula Área de uma Circunferência.
20

 1: π  3,14 {entrada para o processamento}


 2: leia R {entrada para o processamento}
 3: A π *R² {processamento}
 4: escreva A {saída}
Formas de representação de
algoritmos

21

PROF. MARLON PEREIRA FARIAS


Formas de representação de algoritmos
22

 Existem diversas formas de representação de


algoritmos
 Linguagem Natural
 Linguagem de Máquina
 Fluxograma
 Pseudocódigo
 Linguagem de Programação
Linguagem Natural (Descrição Narrativa)
23

 A linguagem natural é a maneira como expressamos


nosso raciocínio e trocamos informação.
 Nesta forma de representação os algoritmos são
expressos diretamente em linguagem natural.
 Exemplo: Cálculo da média de um aluno:
 Obter as suas 2 notas de provas
 Calcular a média aritmética
 Se a média for maior que 7,
 o aluno foi aprovado,
 senão ele foi reprovado
Linguagem Natural (Descrição Narrativa)
24

 Um computador não é por si só uma máquina


inteligente no sentido que não pode aprender com a
própria experiência para melhorar seu
comportamento futuro.
 Ao contrário, um computador é somente capaz de
realizar estritamente as tarefas que lhe forem
delegadas e que façam parte do conjunto daquelas
ações que ele pode executar.
Linguagem de Máquina
25

 O formato dos comandos que um computador pode


executar depende basicamente da arquitetura do seu
processador.
 Como existem diversas arquiteturas diferentes, um
mesmo comando pode funcionar em um computador
e não funcionar em outro.
 O formato dos comandos que funcionam em um
determinado processador define a linguagem de
máquina ou código de máquina desse
processador.
Linguagem de Máquina
26

 Comandos definidos em linguagem de máquina são


perfeitos para os computadores processarem. Por
outro lado, eles são extremamente complexos para as
pessoas entenderem.
 Podemos verificar essa complexidade, observando o
trecho de comandos em linguagem de máquina da
figura abaixo:
Linguagem de Máquina
27

000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000010000000000100000000
000000000000111000011111101110100000111000000000101101000000100
111001101001000011011100000000001010011001100110100100001010101
000110100001101001011100110010000001110000011100100110111101100
111011100100110000101101101001000000110001101100001011011100110
111001101111011101000010000001100010011001010010000001110010011
Trecho do programa Chrome em binário
Fluxograma
28

 Os fluxogramas são uma apresentação do algoritmo


em formato gráfico.
 Cada ação ou situação é representada por uma caixa.
Tomadas de decisões são indicadas por caixas
especiais, possibilitando ao fluxo de ações tomar
caminhos distintos.
Fluxograma
29
Fluxograma: Calculo da Média
30
Pseudocódigo ou Português Estruturado
31

 O pseudocódigo é uma maneira intermediária entre


a linguagem natural e uma linguagem de
programação de representar um algoritmo.
 Utiliza um conjunto restrito de palavras-chave, em
geral na língua nativa do programador, que tem
equivalentes nas linguagens de programação.
 Não requer todo a rigidez sintática necessária numa
linguagem de programação, permitindo que o
aprendiz se detenha na lógica do algoritmos e não no
formalismo da sua representação.
Linguagem de Programação
32

 Para facilitar a tarefa de programar um computador,


foram criadas várias linguagens de programação.
 Estas linguagens são um maneira de tentar escrever
as tarefas que o computador vai realizar de maneira
mais parecida com a linguagem natural.
 Embora ainda seja muitas vezes complexo em
comparação com a linguagem natural, um programa
escrito em uma linguagem de programação é muito
mais fácil de ser implementado, compreendido e
modificado.
Linguagem de Programação
33

 As linguagens de programação são um meio termo


entre a linguagem de máquina e a linguagem natural.
Deste modo são classificadas de acordo com o nível
entre a linguagem natural ou de máquina que
ocupam. As linguagens muito parecidas com
linguagem de máquina são chamadas de linguagens
de baixo nível e suas instruções parecem-se muito
com aquelas que serão executadas pelo processador.
As linguagens de alto-nível são as que guardam
mais semelhanças com a linguagem natural.
Linguagem de Programação
34

 Devido a complexidade, escrever um programa em


linguagem de máquina é inviável. Para tornar viável
o desenvolvimento de programas, existem as
linguagens de programação que tentam se aproximar
das linguagens humanas.
 Cada linguagem possui um conjunto único de
palavras-chave (palavras que ela reconhece) e uma
sintaxe (regras) específica para organizar as
instruções dos programas.
Linguagem de Programação
35

 É um conjunto de regras sintáticas e semânticas


usadas para definir um programa de computador.
 Objetivo: servir de um meio de comunicação entre
computadores e humanos

 Como o processador não pode executar o


código numa linguagem de programação,
esta deve ser traduzida em código de
máquina antes de ser executada.
Tradutor
36

 Existem dois tipos fundamentais de tradutores:


 Interpretadores

 Compiladores
Interpretadores
37

 Traduz um comando de um programa de cada vez e


então chama uma rotina para completar a execução
do comando.
Compilador
38

 Produz, a partir do programa de entrada, outro


programa que é equivalente ao original, porém numa
linguagem que é executável.
 O objetivo de um compilador é traduzir o código
fonte de um programa em um programa equivalente,
expresso em uma linguagem executável diretamente
pela máquina.
Dados
39
DADOS
40

 Para que seja possível armazenar e manipular dados no


computador é necessário representá-los internamente de
alguma forma.
 Nós seres humanos, representamos nossos números
usando um sistema que chamamos de sistema decimal
(ou sistema na base 10).
 Esse sistema, que se originou do fato de utilizarmos os 10
dedos das mãos para realizarmos nossas contas, possui
10 diferentes dígitos para representar as infinitas
quantidades e valores que desejamos (0 1 2 3 4 5 6 7 8 e
9).
DADOS
41

 Nos caso dos computadores digitais, a notação que é


utilizada possui apenas 2 algarismos ou dígitos para
representar uma quantidade desejada, o 0 e o 1. Esse
sistema de representação é chamado de sistema
binário (ou sistema na base 2)
 Sistema hexadecimal (ou sistema na base 16) que
utiliza 16 dígitos (0 1 2 3 4 5 6 7 8 9 A B C D E F)
 Sistema octal (ou sistema na base 8) que utiliza 8
dígitos (0 1 2 3 4 5 6 7 ).
Tipos Primitivos
42

 Os dados em um computador devem ser armazenados de


acordo com o tipo de informação que se deseja
representar e com o tipo de operação que será realizada
com eles.
 A representação correta e adequada de uma informação
permite otimizar os recursos computacionais disponíveis,
além de acelerar o processamento.
 Os tipos de dados mais comuns encontrados na maioria
das linguagens de programação e que constituem a base
de como qualquer informação será armazenada no
mesmo.
Tipos Primitivos
43

 Inteiro: são os números pertencentes ao conjunto dos Inteiros, isto


é, que não possuem parte fracionária. Podem ser positivos, nulos ou
negativos.
 Real: são os números pertencentes ao conjunto dos Reais, isto é,
que podem possuir parte fracionária. Também são chamados de
ponto flutuante devido à maneira como o computador os armazena.
 Caractere: são os valores pertencentes ao conjunto de todos os
caracteres numéricos (0...9), alfabéticos (a...z,A...Z) e especiais (! @
# $ % _ & *). Esse conjunto também é conhecido como conjunto de
caracteres alfanuméricos.
 Lógico: o tipo lógico é utilizado para representar informações que
só podem assumir dois valores, o valor verdadeiro (V) ou o valor
falso (F).
Constantes e Variáveis
44

 Dentro de um algoritmo podemos encontrar


basicamente duas classes diferentes de dados, os
dados constantes e os variáveis.
 Um dado é uma constante quando seu valor não se
altera ao longo do tempo em que o algoritmo é
executado, ou seja, permanece o mesmo desde o
início até o final da execução.
 Já um dado que pode ter seu valor alterado durante a
execução do programa é tido como uma variável.
Constantes e Variáveis - Definição
45

 Como dito anteriormente, ao longo do programa o dado será


manipulado através do nome do seu identificador, sendo assim, o
primeiro passo para utilizarmos os dados é a nomeação do seu
identificador e a definição do seu tipo (no caso de identificadores
variáveis), ou do seu valor (no caso de identificadores constantes).
 A definição dos dados em algoritmos também é conhecida como
declaração.
 Um identificador (sendo ele variável ou constante) declarado com
um determinado tipo de dados ficará restrito a armazenar valores
daquele tipo específico (inteiro, real, caractere, lógico).
 Na maioria dos casos, se houver uma tentativa de atribuir a um
identificador um tipo diferente daquele para o qual ele foi definido
irão ocorrer erros de compilação, de execução ou até mesmo perda
de dados.
Definição de Variáveis
46

Var:

<identificador> : <tipo>

<identificador1>, <identificador2> : <tipo>

A seguir são apresentados alguns exemplos de declarações de ambos os


tipos de identificadores:

idade : Inteiro

nota1, nota2, nota3, nota4 : Real


Atribuição ( <- )
47

 Após realizada a declaração de um identificador, é


possível iniciar a manipulação dos dados que esse
identificador irá representar a partir da atribuição de
valores ao mesmo.
 Esse processo de atribuir ou alterar o valor dos dados de
um identificador é chamado de atribuição.
 A atribuição de valores a uma variável é feita da seguinte
forma:
<identificador da variável> <- <valor do mesmo tipo da variável>;
<identificador da variável> <- <operações cujo resultado é do mesmo
tipo da variável>;
Atribuição ( <- )
48

 Como pode ser visto acima, no lado esquerdo do operador será colocado o
nome da variável que irá receber o valor, e do lado direito o valor que será
armazenado na mesma.
idade <- 20;
nota1 <- 8.5;
nota2 <- 10;
media <- (nota1 + nota2) / 2;
 Uma variável pode armazenar apenas um único valor por vez, sendo que
sempre que um novo valor é atribuído a variável o valor anterior que estava
armazenado na mesma é perdido.
int numero;
numero <- 222;
numero <- 1000;
numero <- 23;
Expressões Aritméticas
49

 As expressões aritméticas são aquelas em que os


operadores são aritméticos e os operandos são
valores do tipo numérico (inteiro ou real).
 Esses valores numéricos podem ser acessados por
meio de identificadores constantes ou por meio de
variáveis.
 As operações aritméticas fundamentais são: adição,
subtração, multiplicação, divisão e o resto.
Expressões Aritméticas
50

Operação Operador Exemplo


Adição 2+3 2+x
+
Subtração 5-2
-
b–a
Multiplicação 2*2
*
Divisão 10 / 5
/
Operações complexas com funções
51

Operação Operador Exemplo


Exponenciação a^b
^
Divisão Inteira
\ a\b retorna a parte inteira da
divisão
Módulo
% a%b Complementar: “resto da
divisão de a por b”
Inversão de Sinal
-
Operações complexas com funções
52

Operação Operador Explicação


Raiz Quadrada Raizq(x) Raiz quadrada
Exponenciação Exp(x,y) X elevado a Y
Cosseno Cos(x) Cosseno em radianos do ângulo x
Parte inteira do número Int(x) Retorna a parte inteira do número x.
Logaritmo Log(x) Retorna o logaritmo de x na base 10.
Quadrado Quad(x) Retorna o quadrado de x.
Valor aleatório Rand Randômico entre 0 e 1.
Valor Pi(π) Pi Retorna o valor 3.141592
Precedência dos Operadores Aritméticos
53

 Quando uma expressão aritmética precisa ser


avaliada num algoritmo, o analisador processa a
expressão dando prioridade para certos operadores.
1. Parênteses ( )
2. Multiplicação, Divisão, Resto * / %
3. Adição, Subtração +, -

 Exemplo:
5/2+3*5 = ???
15+10-12/2+3*2 = ????
Precedência dos Operadores Aritméticos
54

{ [ 2/3 - ( 5 - 3 )]+1} . 5 ((2/3 - (5-3)) +1)*5

Tradicional Computacional
Linearização de Funções
55
Linearização de Funções
56

X <- (- b - raizq(b^ 2 – (4 * a * c)))/ (2* a)


Comando de Entrada e Saída
57
Saída
58

 Em geral, um programa que faz seu processamento e


não tem como mostrar seus resultados é inútil
(imagine, por exemplo, uma calculadora que realiza
uma infinidade de operações matemáticas, mas não
tem um display para mostrar os resultados).
 Portanto, em algum ponto do algoritmo geralmente
deve ocorrer à exibição de valores, e todas as
linguagens de programação têm comandos para este
fim. Em Portugol utilizamos o comando escreva
para isto.
Saída
59

 Em Portugol utilizamos o comando escreva para isto.


 A sintaxe desse comando tem a seguinte forma:

Escreva (<expressão ou identificador ou constante>, ...,


<expressão ou identificador ou constante>)

Ex:
X <- 3.5
Y <- 4
Escreva ("O valor de X é", X)
Escreva (" E o valor de Y é ", Y)
Escreva (" A soma de X e Y é", X+Y)
Entrada
60

 Nem todos os dados que um algoritmo manipula são


gerados por ele.
 Um algoritmo (programa) de caixa automático, por
exemplo, tem que obter do usuário o número da
conta, a senha, a opção de serviço desejada, etc.
 Desta forma, deve haver um meio para que sejam
digitados (ou fornecidos de outra maneira) dados
para o algoritmo.
Entrada
61

 Mais uma vez, todas as linguagens de programação


permitem isto, e no nosso Português Estruturado
usamos o comando leia. A sintaxe deste comando é:
Leia (<identificador>)

Exemplo:
Escreva ("Digite a sua primeira nota: ")
Leia (nota1)
Escreva ("Digite sua segunda nota: ")
Leia (nota2)
Estrutura Sequencial
62
Forma Geral de um Algoritmo
63

Algoritmo "<nome do algoritmo>"


var
< declaração de variáveis>
inicio
< lista de comandos>
fimalgoritmo
Estrutura Sequencial
64

 De forma genérica, a construção de um algoritmo se


resume às seguintes etapas:
1. a) entendimento do problema;
2. b) elaboração da solução algorítmica; e
3. c) codificação da solução no Português Estruturado;

 Geralmente a etapa 2 é a mais complexa, pois depende


da engenhosidade e experiência do “construtor”.
Estrutura Sequencial
65

 Exemplo: Faça um programa que leia dois valores


numéricos, e calcule e exiba a sua média aritmética.
Estrutura Sequencial
66

 Exemplo: Faça um programa que leia dois valores


numéricos, e calcule e exiba a sua média aritmética.

 Etapa 1: Simples, hein? Dos tempos de escola lembramos


que a média aritmética de dois valores é calculada como
(a+b)/2, e sendo assim a primeira etapa já está pronta.
Estrutura Sequencial
67

 Exemplo: Faça um programa que leia dois valores


numéricos, e calcule e exiba a sua média aritmética.

 Etapa 2: Os dados necessários serão os dois valores, que


colocaremos em duas variáveis A e B, do tipo numérico, e
uma terceira variável, que chamaremos Média, que
armazenará a média aritmética calculada.
Estrutura Sequencial
68

 Exemplo: Faça um programa que leia dois valores


numéricos, e calcule e exiba a sua média aritmética.

 Etapa 3: A obtenção dos dados neste programa é simples e


direta. Basta pedir ao usuário que digite os valores.
Estrutura Sequencial
69

 Exemplo: Faça um programa que leia dois valores


numéricos, e calcule e exiba a sua média aritmética.

 Etapa 4: O processamento aqui é o cálculo da média,


usando o método citado acima, na etapa 1. O resultado do
cálculo será armazenado na variável Média.
Estrutura Sequencial
70

 Exemplo: Faça um programa que leia dois valores


numéricos, e calcule e exiba a sua média aritmética.

 Etapa 5: Basta exibir o conteúdo da variável Média.


Estrutura Sequencial
71

 Exemplo: Faça um programa que leia dois valores


numéricos, e calcule e exiba a sua média aritmética.
Algoritmo "Cálculo de Média Aritmética"
VAR
A,B,Media : REAL
Inicio
Escreva ("Digite um valor : ")
Leia (A)
Escreva ("Digite outro valor : ")
Leia (B)
Media <- (A+B)/2
Escreva("A média dos dois valores é : ", Media)
FimAlgoritmo
Estruturas de Condicionais
72
Expressões Lógicas
73

 As expressões lógicas são aquelas cujo valor só pode


ser verdadeiro ou falso. São compostas por
operadores relacionais, operadores lógicos, e por
identificadores variáveis ou constantes do tipo
lógico. As expressões lógicas também podem ser
compostas por resultados de expressões aritméticas.
Operadores Relacionais
74

 Os operadores relacionais são aqueles que


comparam dois valores do mesmo tipo. O retorno da
expressão relacional indica se o resultado da
comparação foi verdadeiro ou falso. Por exemplo, a
expressão 2 < 3 é uma expressão lógica válida cujo
valor é verdadeiro. Em contrapartida, a expressão 2
> 8 é uma expressão lógica também válida, mas cujo
valor é falso.
Operadores Relacionais
75

Operador Símbolo
Igual a =

Maior que >

Menor que <

Maior ou igual >=

Menor ou igual <=

Diferente de <>
Conectivos Lógicos
76

 Além dos operadores relacionais, existem os


chamados operadores lógicos ou "conectivos
lógicos". Estes servem para conectar duas expressões
relacionais.
 Podem ser operadores binários, que operam em duas
sentenças ou expressões, ou unário que opera numa
sentença só.
Conectivos Lógicos
77

 Além dos operadores relacionais, existem os


chamados operadores lógicos ou "conectivos
lógicos". Estes servem para conectar duas expressões
relacionais. Os operadores lógicos são apresentados
na tabela a seguir:

Ou Ou lógico
E E lógico
Não Negação
Xou Operador logico
exclusivo
Operador de Conjunção (e)
78

 O primeiro deles é o operador binário de conjunção


ou “e” lógico.
 Quando duas expressões são unidas por este
operador, a expressão resultante só é verdadeira se
ambas expressões constituintes também são.
 Por exemplo “chove e venta” só é verdadeiro se as
duas coisas forem verdadeiras, “chove” e também
“venta”. Se uma das sentenças não ocorrer, a
sentença como um todo é falsa.
Operador de Disjunção (ou)
79

 O segundo operador é o operador binário de


disjunção ou “ou” lógico, representado por ou.
 Neste caso, se qualquer uma das expressões
constituintes for verdadeira, a expressão completa
também será.
Operador de Negação (nao)
80

 O último dos operadores é o operador unário não


lógico.
 Sua função é simplesmente inverter valor lógico da
expressão a qual se aplica.
Operador Lógico Exclusivo (Xou)
81

 Operador que resulta VERDADEIRO se seus dois


operandos lógicos forem diferentes, e FALSO se
forem iguais.
Estruturas Condicionais
82

 Num processo geral de execução de um algoritmo


implementado em uma linguagem de programação, a
execução começa na primeira linha e vai avançando
sequencialmente executando o código linha após
linha até chegar no final. Entretanto,
frequentemente surge a necessidade de colocar
instruções dentro de um programa que só serão
executadas caso alguma condição específica
aconteça. Para esta finalidade a maioria das
linguagens possui estruturas de condição para
realizar esta tarefa.
Estruturas Condicionais
83

 As possibilidades de construção de algoritmos que


temos até o presente momento são bastante
limitadas, pois ainda não estamos aptos a tomar
decisões durante o tempo de execução do algoritmo,
ou até mesmo de classificar determinados valores de
variáveis.
Estruturas Condicionais
84

 Por exemplo, considere que precisamos desenvolver um


algoritmo que classifique uma determinada pessoa entre
maior de idade ou menor de idade. Para esse
problema sabemos que precisamos avaliar a idade da
pessoa, e que se essa idade for maior (ou igual) que 18
anos a pessoa é considerada maior de idade. Neste
caso, para um intervalo de valores da idade o algoritmos
executa um conjunto de ações e para outro intervalo
executa um outro conjunto de ações.
 Neste tipo de situação, onde um determinado valor é
avaliado para a partir do resultado dessa avaliação
executar alguma ação, utilizamos as estruturas de
condição.
Comando condicional simples – se
85

 O comando “se” é uma estrutura de decisão que


permite ou não que uma sequência de comandos seja
executada (ou não executada), dependendo do
resultado de uma condição pré-estabelecida. Sua
sintaxe é:
se (expressão lógica) entao
<sequência de comandos>
fimse
Comando condicional simples – se
86

se (expressão lógica) entao


<sequência de comandos>
fimse
 Ao encontrar este comando, o VisuAlg analisa a
<expressão-lógica>. Se o seu resultado for
VERDADEIRO, todos os comandos da
<sequência-de-comandos> (entre esta linha e a
linha com fimse) são executados. Se o resultado
for FALSO, estes comandos são desprezados e a
execução do algoritmo continua a partir da
primeira linha depois do fimse.
Comando condicional simples – se
87

 Atividade:
1. Solicitamos ao usuário que digite a sua idade, e
utilizamos o comando leia() para armazenar o valor
digitado na variável idade.
2. Depois de termos o valor da idade, avaliamos se
esse valor é maior ou igual a 18.
3. Se o resultado dessa avaliação for verdadeiro
escreveremos na tela a frase “você é maior de
idade”, como mostra o algoritmo 8.
Comando condicional composta – se-entao-
senao
88

se <expressão-lógica> entao
<seqüência-de-comandos-1>
senao
<seqüência-de-comandos-2>
fimse
 Se o resultado da avaliação de <expressão-lógica> for
VERDADEIRO, todos os comandos da <seqüência-de-
comandos-1> são executados, e a execução continua
depois a partir da primeira linha depois do fimse.
 Se o resultado for FALSO, estes comandos são
desprezados e o algoritmo continua a ser executado a
partir da primeira linha depois do senao, executando
todos os comandos da <sequência-de-comandos-2> .
89

 Como já vimos, é possível compor expressões lógicas


utilizando os operadores lógicos e (conjunção), ou
(disjunção) e nao (negação).
 Nesse sentido, a expressão lógica que será avaliada
na estrutura de condição se-entao também pode ser
formada por uma expressão lógica composta.
90

 Por exemplo, considere a situação de um


determinado aluno em uma disciplina.
 Sabe-se que para ser aprovado, é necessário que nota
>= 7.0 e que frequência > 75, ao mesmo tempo, isto
é, uma conjunção lógica representada pelo operador
e lógico (e).
Referências
91

 FABRICIO FERRARI, Fabricio. Introdução a


Algoritmos e Programação.
 Lógica de Programação. K19 (www.k19.com.br)
 DAURICIO, Juliana Schiavetto. Algoritmos e Lógica
de Programação. Londrina : Editora e Distribuidora
Educacional S.A., 2015.

Você também pode gostar