Академический Документы
Профессиональный Документы
Культура Документы
EXPEDIENTE
Professor Autor
Aldo de Moura Lima
Design Instrucional
Deyvid Souza Nascimento
Maria de Ftima Duarte Angeiras
Renata Marques de Otero
Terezinha Mnica Sincio Beltro
Reviso de Lngua Portuguesa
Letcia Garcia
Diagramao
Izabela Cavalcanti
Coordenao
Joo Ferreira
Coordenao Executiva
George Bento Catunda
Coordenao Geral
Paulo Fernando de Vasconcelos Dutra
L732l
Lima, Aldo de Moura.
Lgica de Programao: Curso Tcnico em Informtica:
Educao a distncia / Aldo de Moura Lima. Recife:
Secretaria Executiva de Educao Profissional de
Pernambuco, 2016.
71 p.: il.
Inclui referncias bibliogrficas.
1. Educao a distncia. 2. Lgica de Programao. 3.
Informtica. I. Lima, Aldo de Moura. II. Ttulo. III. Rede e-Tec
Brasil.
CDD 005.1
Sumrio
Introduo ........................................................................................................................................ 6
1.Competncia 01 | Conhecer os Princpios de Lgica de Programao Algortmica .......................... 7
1.1 Dado e Informao ............................................................................................................................... 7
1.1.1 Dado .................................................................................................................................................. 7
1.1.2 Informao ........................................................................................................................................ 7
1.2 Sistema Computacional ........................................................................................................................ 9
1.2.1 Elementos de um Sistema Computacional ......................................................................................... 9
1.2.1.1 Hardware.......................................................................................................................................10
1.2.1.2 Software ........................................................................................................................................10
1.3 Desenvolvimento de Software .............................................................................................................10
1.4 Codificao ..........................................................................................................................................12
1.4.1 Processamento de Dados ..................................................................................................................12
1.4.2 Processamento Eletrnico de Dados .................................................................................................14
1.4.3 Programa..........................................................................................................................................15
1.4.4 Programao ....................................................................................................................................15
1.4.5 Programador ....................................................................................................................................15
1.5 Lgica de Programao ........................................................................................................................15
1.5.1 Fluxograma.......................................................................................................................................16
1.5.2 Algoritmo .........................................................................................................................................17
1.6 Lgica de Programao Algortmica .....................................................................................................19
1.7 Representao e Armazenamento dos Dados ......................................................................................19
1.7.1 Varivel ............................................................................................................................................19
1.7.1.1 Tipo de Varivel .............................................................................................................................20
1.7.1.2 Declarao de Varivel...................................................................................................................21
1.7.2 Constante .........................................................................................................................................24
1.8 Estrutura de um Algoritmo ..................................................................................................................25
Concluso ........................................................................................................................................ 69
Referncias ..................................................................................................................................... 70
Minicurrculo do Professor .............................................................................................................. 71
Introduo
Gostaria de dar-lhe as boas vindas disciplina Lgica de Programao. Os assuntos que sero
tratados nesta disciplina fazem parte de uma rea da Informtica chamada de Desenvolvimento de
Software e envolvem a programao do computador.
A programao permite instruir o computador para que ele realize as tarefas que desejamos como,
por exemplo: controlar o estoque de uma empresa, simular os cenrios de um jogo, escrever e
enviar uma mensagem em uma rede social ou disponibilizar imagens em uma tela. Os
computadores precisam de programas para fazer com que seus componentes eletrnicos
processem os dados e realizem os resultados que desejamos.
A programao de computadores ocorre de forma diferente da que um ser humano utiliza para
instruir outro ser humano. Esta forma envolve a lgica de programao e poder ser expressa de
vrias maneiras. Utilizaremos a forma algortmica, onde as instrues que o computador deve
executar so codificadas em forma de texto, com comandos escritos na lngua portuguesa.
Nesta disciplina voc aprender os princpios e as principais estruturas que regem a programao.
Realizando os exerccios adequadamente, o seu raciocnio estar preparado para criar qualquer tipo
de programa, quando em disciplina posterior aprender uma linguagem de programao especfica
para computao.
Tenho certeza de que voc no vai querer ficar fora desta oportunidade. Como programao uma
rea muito abrangente, voc precisar complementar seus estudos atravs de outros materiais de
estudos que estaremos propondo neste caderno e em outros que voc, sem dvida, ir pesquisar.
Vamos nessa?
Aldo Moura
Competncia 01
1.1.1 Dado
Um dado representa um fato bsico que pode sofrer manipulao.
Pode ser de diversos tipos, como:
1.1.2 Informao
Temos uma informao quando, atravs de processamento ou interpretao, de acordo com um
contexto, um significado atribudo a um ou vrios dados.
Este significado d um valor adicional ao dado, alm do valor do fato representado.
Exemplos 1: nestes exemplos, para cada dado foi atribudo um significado, respectivamente: dias,
anos, smbolo monetrio do real e telefone.
53 dias
Competncia 01
53 anos
R$ 53,00
Telefone 99999-0101
Exemplos 2: nos exemplos abaixo temos trs listas que possivelmente sofreram processamento,
resultando em:
1 lista: relao dos nomes de pessoas em ordem alfabtica.
2 lista: relao dos nomes de pessoas do sexo feminino em ordem alfabtica.
3 lista: relao dos nomes de pessoas do sexo masculino em ordem alfabtica.
Afonso
Alusio
Beatriz
Afonso
Betnia
Alusio
Marta
Antonio
Mrcia
Cssio
Rute
Celso
Vnia
Ccero
Vernica
Paulo
Zlia
Pedro
Antonio
Beatriz
Betnia
Cssio
Celso
Ccero
Marta
Mrcia
Paulo
Pedro
Renato
Renato
Rute
Vnia
Vernica
Zlia
Competncia 01
Competncia 01
1.2.1.1 Hardware
Os hardwares so os equipamentos eletrnicos como: computador, impressora e pen drive.
1.2.1.2 Software
Os softwares so os programas que determinam o que os hardwares devem fazer como, por
exemplo: jogos, sites, editores de texto e controle de estoque.
Este mdulo trata essencialmente sobre o desenvolvimento de software.
10
Competncia 01
Processo de Software:
Conjunto de atividades relacionadas que levam produo de um software.
Para conhecer outros modelos, pesquise sobre Modelo de Processo de Software. Alm do
modelo cascata descrito acima, voc dever encontrar vrios outros modelos: incremental,
prototipagem e espiral.
11
Competncia 01
1.4 Codificao
Na etapa da codificao sero escritos os programas que permitiro ao computador realizar o
processamento eletrnico de dados.
Entrada
Processamento
Sada
12
Competncia 01
Entrada: notas
Processamento: clculo
Sada: mdia
Como os dados de sada so mais qualificados, esses dados so denominados de informaes.
Estas trs fases tambm esto presentes no mecanismo de um sistema, considerado como um
conjunto de elementos que interagem para atingir objetivos.
Exemplos de processamento de dados:
Sistema digestivo
Sistema sanguneo
Sistema de transporte
Sistema hidrulico
Sistema eltrico
Sistema de sade
13
Competncia 01
Cada um destes sistemas composto por diversos elementos que colaboram para que o objetivo
desejado seja atingido.
Exemplo 1: para encontramos o maior nmero entre dois nmeros iniciais, precisamos
basicamente de cinco instrues:
1.
2.
3.
4.
5.
Obter o 1 nmero;
Obter o 2 nmero;
Comparar o 1 nmero com o 2 nmero;
Memorizar o maior nmero comparado;
Exibir o nmero memorizado.
Exemplo 2: Para encontramos o maior nmero entre trs nmeros iniciais, precisamos
basicamente de oito instrues:
1.
2.
3.
4.
5.
6.
7.
8.
Obter o 1 nmero;
Obter o 2 nmero;
Obter o 3 nmero;
Comparar o 1 nmero com o 2 nmero;
Memorizar o maior nmero comparado;
Comparar o 3 nmero com o maior nmero memorizado;
Memorizar o maior nmero na nova comparao;
Exibir o nmero memorizado.
14
Competncia 01
1.4.3 Programa
Conjunto de instrues que um computador interpreta para executar uma tarefa especfica.
Sendo uma mquina eletrnica, o computador est submetido s regras da eletrnica digital. Com
isso, as diversas regras das linguagens naturais (portugus, ingls, japons, etc.) no so entendidas
pelo computador. Ento, foram criadas linguagens de programao com regras prprias, indicando
como as instrues devero ser codificadas.
1.4.4 Programao
a atividade de elaborar um programa para o computador.
1.4.5 Programador
O profissional responsvel pela elaborao do programa.
Linguagem de programao:
conjunto de comandos (texto e smbolos) com sentido predeterminado e regras de sintaxe
prprias que permitem a construo de instrues que um computador pode executar.
Codificao:
termo utilizado para substituir a programao, j que o ato de programar envolve escrever um
programa nos cdigos especficos de uma linguagem de programao.
15
Competncia 01
1.5.1 Fluxograma
uma forma de representao grfica da lgica de programao, que utiliza smbolos como
comandos para o computador. O programador deve conhecer os smbolos predefinidos que pode
utilizar e o que cada smbolo representa, como, por exemplo, os smbolos relacionados na figura 4.
A partir dos exemplos de smbolos da figura 4 j podemos representar a lgica de programao por
fluxograma para somar dois nmeros (veja Figura 5).
16
Competncia 01
E, ento, considerando o significado dos smbolos da figura 4, voc consegue descrever o que o
fluxograma da figura 5 faz?
Escreva em uma folha de papel e depois compare com a descrio abaixo.
Um nmero dar entrada no sistema, e, conforme o smbolo, a entrada ser manual (pode
ser um usurio digitando via teclado);
Haver um processamento onde os dois nmeros que deram entrada no sistema sero
somados e o resultado representando pela palavra Soma;
O resultado apresentado;
1.5.2 Algoritmo
uma forma de representao textual da lgica de programao, que utiliza palavras como
comandos para o computador. O programador deve conhecer as palavras predeterminadas da
17
Competncia 01
linguagem algortmica que pode utilizar e o que cada palavra representa. Dizemos que as palavras
da linguagem algortmica so palavras reservadas, como as palavras relacionadas na figura 6.
A maioria das palavras reservadas so palavras utilizadas na lngua portuguesa (inicio, fim, leia,
escreva). No entanto, por se tratar de algoritmo, as palavras no so acentuadas. Tambm h um
grupo de palavras (conjunto de caracteres) que no tem correspondente na lngua portuguesa (:=,
<-).
As palavras reservadas s devem ser utilizadas no algoritmo para o que foram determinadas. A
palavra leia, por exemplo, foi reservada para significar entrada de dados. Caso voc tenha algum
item do algoritmo que queira chamar de leia, utilize um sinnimo. No caso de leia pode ser estude.
A partir dos exemplos de palavras reservadas da figura 6 j podemos representar a lgica de
programao algortmica para somar dois nmeros (veja Figura 7).
18
Competncia 01
Creio que voc um bom observador e deve ter percebido alguns detalhes. Algumas palavras
reservadas esto sublinhadas, os dados a serem lidos nos comandos leia e o dado a ser exibido no
comando escreva esto entre parnteses. Estes e alguns outros detalhes de um algoritmo voc
aprender no decorrer da disciplina.
1.7.1 Varivel
Um programa pode ser executado diversas vezes, com a vantagem de que em cada execuo
forneamos dados de entrada diferentes. Na codificao do programa, o dado precisa ser
representado, mas o valor dele s ser fornecido quando o programa for executado. Como pode ser
fornecido qualquer valor, esta representao do dado chamada de varivel. No algoritmo da
figura 8 podemos observar em destaque as variveis numero1, numero2 e soma. Elas representam
qualquer valor. Se em uma execuo do programa forem fornecidos os valores 10 e 20
respectivamente para as variveis numero 1 e numero 2, o valor da varivel soma ser 30. Se em
outra execuo forem fornecidos os valores 5 e 7, o valor da varivel soma ser 12. No fcil?
19
Competncia 01
O programador deve ter o cuidado de declarar antecipadamente todas as variveis que vai utilizar
em seu algoritmo, de acordo com o tipo de dado que a varivel vai representar. Os dados ocupam
espao na memria do computador e a declarao de variveis a maneira de reservar os espaos
de que os dados necessitam.
Real ou numrico: armazena dado numrico com decimais. Exemplos: 2.5, 124.55
Lgico: armazena apenas os valores lgicos. Os dados lgicos so descritos sem aspas e
podem ser VERDADEIRO ou FALSO.
20
Competncia 01
21
Competncia 01
numero2: real
nome: literal
As variveis do mesmo tipo podem ser agrupadas em uma linha, separando-as por vrgula, com
apenas uma especificao do tipo, conforme o seguinte exemplo:
var
numero1, numero2: real
nome: literal
Veja como fica o algoritmo da figura 7 com o comando de declarao das variveis na figura 9 a
seguir:
Voc tambm deve ter observado que as variveis foram colocadas na linha seguinte ao comando
var e no se encontram alinhadas na mesma margem esquerda que o comando. Isso para permitir
uma melhor organizao do cdigo. Nada impede que todas as variveis estejam na mesma
margem esquerda do comando var, ou mesmo que a primeira varivel esteja na mesma linha do
comando var, como no exemplo da figura 10.
22
Competncia 01
23
Competncia 01
1.7.2 Constante
Quando em um algoritmo temos a necessidade de representar um dado que no sofrer alterao,
ao invs de variveis temos uma constante. Por exemplo, se o problema obter a mdia aritmtica
entre duas notas, teremos que somar as duas notas e dividir a soma por 2. Logo, o divisor sempre
ser 2. No precisa declarar uma varivel para que o valor 2 seja fornecido na execuo do
programa. J durante a programao podemos definir o valor do divisor como 2. Em nossa
linguagem algortmica as constantes no so declaradas, basta escrev-las no algoritmo. Observe no
exemplo da figura 12 o uso de uma constante. No se preocupe agora com a forma que a expresso
matemtica foi codificada, pois este ser assunto da nossa prxima competncia. Observe apenas
que na linha com a expresso que calcula a mdia aritmtica, o nmero 2 sempre ter o mesmo
valor. Logo, um dado constante.
24
Competncia 01
Os tipos de constantes tambm seguem os mesmos tipos de variveis: literal ou texto; inteiro; real
ou numrico e lgico.
25
Competncia 01
soma
media
calcular mdia de 2 notas
## calcular rea ##
O nome de algoritmo pode conter espao, nmero ou caracteres especiais. O ideal colocar um
nome sugestivo, de acordo com o problema que o algoritmo resolve.
A sintaxe do comando fimalgoritmo simplesmente s o nome do comando, sem nenhum
parmetro adicional.
Um algoritmo tem duas sees:
A primeira a seo de declarao, onde deve ser colocado o comando var, j estudado nesta
competncia.
A segunda a seo de comando, que inicia com o comando inicio. onde as instrues que
orientam o computador so codificadas.
Com base nesta estrutura vamos codificar totalmente um algoritmo que soma dois nmeros (veja a
figura 13).
26
Competncia 01
As linhas que descrevem as sees no precisam ser codificadas. Linhas iniciadas com os caracteres
// (barras duplas) indicam comentrios para melhor entendimento e podem ser acrescentadas
livremente pelo programador, de acordo com a necessidade. No exemplo da figura 14 foram
suprimidos os comentrios que descrevem as sees e foram acrescentados outros comentrios.
27
Competncia 01
28
Competncia 01
Onde:
texto = texto opcional, pois se encontra entre colchetes. Pode ser um texto para descrever a
informao que ser exibida. Caso tenha optado em colocar esse texto, deve-se colocar uma vrgula
para separar do nome da varivel.
nome_varivel = varivel que contm o dado que se deseja exibir.
Exemplos:
escreva (numero)
escreva (Nome do aluno:, nome)
29
Competncia 01
Exemplos:
numero := 124
nome := jose
resposta := numero1 + numero2
No primeiro exemplo o programador determinou que a varivel numero receba por atribuio a
constante inteira 124.
No segundo exemplo o programador determinou que a varivel nome recebesse por atribuio a
constante literal jose.
No terceiro exemplo o programador determinou que a varivel resposta recebesse por atribuio o
resultado da operao aritmtica de adio dos valores armazenados nas variveis numero1 e
numero2.
30
Competncia 01
Para uma melhor compreenso do contedo deste item a partir deste ponto, sugerimos que voc
assista primeiro ao vdeo postado no link http://youtu.be/6N-EUkZxJIM.
Na parte superior temos a barra de menu que d acesso a todas as funcionalidades disponveis. As
funcionalidades so agrupadas por assunto: Arquivo, Editar, Exibir, Algoritmo, Cdigo, Ferramentas
e Ajuda, conforme a figura 16.
Abaixo da barra de menu temos as barras de ferramentas (figura 17). Nesta barra cada cone
representa uma funcionalidade que tambm pode ser acessada pela barra de menu, mas so
funcionalidades que so muito utilizadas, ento so colocadas nesta barra para fornecer um acesso
31
Competncia 01
mais rpido. Dependendo da forma como a sua tela esteja configurada, esta barra poder ser
exibida em uma ou em mais linhas.
Na parte central do Visualg, encontramos a janela de edio onde devemos digitar o algoritmo
(figura 18). A estrutura bsica de um algoritmo j vem codificada.
Na parte inferior esquerda temos a janela de variveis para exibir as variveis com seus
respectivos tipos e valores (figura 19).
32
Competncia 01
Na parte inferior direita temos a janela em branco, que a janela de simulao, onde simulada a
execuo do algoritmo.
Finalmente temos a barra de status com informaes sobre o nmero da linha e da coluna em que
o cursor est posicionado, o estado do algoritmo (em branco ou modificado, se houve alguma
modificao no cdigo do algoritmo depois da ltima vez em que ele foi salvo) e informao para
acessar os comandos predefinidos do visualg (figura 20).
Para dominar melhor as funcionalidades do Visualg, recomendamos que voc leia a apostila
encontrada no endereo: www.slideshare.net/regispires/apostila-sobre-o-visualg-presentation.
Assista ao vdeo postado no link http://youtu.be/zQtTpt76IqI para que voc possa compreender
e praticar o que est sendo ensinado no item a seguir.
33
Competncia 01
// Seo de Declaraes
var
numero1, numero2, soma: inteiro
// seo de comandos
inicio
leia (numero1)
leia (numero2)
soma := numero1 + numero2
escreva (soma)
fimalgoritmo
Revise com ateno para ter certeza de ter digitado tudo certinho, pois agora iremos mostrar como
testar o algoritmo.
Na barra de ferramenta clique no cone executar, em destaque na figura 21.
A execuo inicia e, como voc pode conferir na figura 22, uma janela com fundo preto aparecer
sobre a janela do Visualg. Para entender melhor a execuo do algoritmo, arraste esta janela de
modo que voc possa enxergar a janela de variveis e a janela de simulao.
34
Competncia 01
Observe que a janela de variveis exibe as trs variveis declaradas, seu tipo (I indicando inteiro) e
seus respectivos valores, que at o presente momento 0 (zero).
A janela de simulao informa que houve o incio da execuo do algoritmo.
Neste momento a execuo est parada aguardando a digitao do primeiro nmero para ser
armazenado na varivel 1, j que a primeira instruo da seo de comandos possui a funo de ler
um dado de entrada. O computador est aguardando este dado de entrada. Digite um nmero, por
exemplo: 2, e tecle ENTER. Observe que na janela de variveis o valor da varivel nmero1 mudou
35
Competncia 01
36
Competncia 01
fimalgoritmo
Execute novamente o algoritmo e veja como ficou mais profissional. A partir de agora, s voc
exercer sua criatividade nos exerccios.
ATIVIDADE
As atividades a seguir so para que voc possa praticar e aprofundar sua aprendizagem.
1. Escreva um algoritmo para ler quatro nmeros inteiros e mostrar a soma deles.
2. Escreva um algoritmo para ler quatro nmeros reais e mostrar a soma deles.
Escreva um algoritmo para ler quatro nmeros, sendo dois inteiros e dois reais e mostrar:
a. A soma do nmeros inteiros;
b. A soma do nmeros reais;
c. A soma do resultado do item a com resultado do item b.
4. Escreva um algoritmo para ler dois nmeros para as variveis primeiro e segundo, inverter os
valores das variveis e mostr-los na tela. Exemplo: se o valor digitado para a varivel primeiro
for 100 e o valor digitado para a varivel segundo for 200, o processamento do algoritmo dever
fazer com que a varivel primeiro fique com o valor 200 e a varivel segundo fique com 100.
37
Competncia 02
Adio
Subtrao
Multiplicao
Diviso
Nos algoritmos, as expresses matemticas so escritas de forma linear, como nos exemplos a
seguir:
10+20/2
4*2+10/2
Observe no prximo algoritmo como realizar as operaes matemticas bsicas, utilizando os
operadores aritmticos sobre os valores armazenados nas variveis numero1 e numero2.
algoritmo "Operaes Matemticas"
var
numero1: inteiro
numero2: inteiro
somar: inteiro
subtrair: inteiro
multiplicar: inteiro
dividir: real
// como uma diviso pode ocasionar um
// valor que no inteiro, a varivel
// dividir foi declarada como real.
inicio
escreva (Digite um nmero inteiro: )
leia (numero1)
38
Competncia 02
O exemplo anterior apresenta quatro sadas (quatro comandos escreva). Os resultados sero
exibidos na mesma linha. Para uma melhor apresentao podemos utilizar o comando ESCREVAL.
Com este comando, cada resultado apresentado em uma linha.
Sempre que houver um operador de diviso, pode ocorrer um resultado com nmeros decimais,
portanto a varivel que armazena o resultado da diviso dever ser do tipo real. Caso a varivel seja
declarada do tipo inteiro, ocorrer um erro durante a simulao do algoritmo.
39
Competncia 02
Para fixar esta regra de forma prtica, vamos analisar um algoritmo para calcular a mdia aritmtica
de duas notas.
1
2
3
4
5
6
7
8
9
10
11
12
13
Primeiro ponto a ser observado que as variveis foram declaradas do tipo real, pois tanto as notas
quanto a mdia podem ter valores decimais.
Observe que a expresso aritmtica que calcula a mdia na linha 11 d prioridade para a adio das
notas, como realmente deve ser. S aps a adio das notas que deve ocorrer a diviso por 2.
OPERAO
Quociente de uma diviso inteira
Resto de uma diviso inteira
40
Competncia 02
Figura 23- Demonstrao de uma diviso inteira entre nmeros inteiros, onde so identificados os elementos envolvidos na diviso: dividendo, divisor, quociente e resto.
Fonte: o autor (2013)
Descrio: A imagem mostra uma diviso inteira entre nmeros inteiros. Os nmeros envolvidos na diviso so 16, colocado no lado esquerdo a imagem, e 5, colocado no lado direito da imagem. Um texto
aponta para o nmero 16 indicando que ele o dividendo e outro texto aponta para o nmero 5 indicando que ele o divisor. Abaixo do nmero 5 foi colocado o nmero 3 como resultado da diviso inteira, onde um texto aponta este resultado como o quociente. Abaixo do nmero 16 foi colocado o nmero 1 como o nmero que sobrou da diviso inteira e um texto aponta para ele indicando que ele o
resto.
Considerando-se que na diviso do exemplo mostrado na figura 23 foi utilizado o operador MOD,
que pega apenas a parte inteira do quociente, o resultado 3.
As variveis que armazenaro os valores de uma operao DIV ou MOD devero ser do tipo
inteiro.
41
Competncia 02
O smbolo % tambm pode ser utilizado em substituio ao operador MOD, como no exemplo:
resto := (numero1 % numero2).
Lista de argumento = um ou mais dados necessrios para que a funo possa processar o
seu objetivo.
Tipo = tipo do resultado que a funo retorna aps o processamento. Toda funo retorna
(resulta) em um valor que pode ser usado como parte de uma expresso matemtica, armazenado
ou exibido. O tipo no escrito no algoritmo, ele apenas representa o tipo do resultado esperado.
Tomemos por exemplo a funo EXP que executa a operao de exponenciao, operao escrita
como an (a elevado a n, onde a a base e n o expoente). Sua sintaxe especfica :
EXP (<base>,<expoente>): real
Neste caso, a lista de argumentos composta de dois elementos, o primeiro a base e o segundo o
expoente. O resultado do processamento desta funo em um valor do tipo real:
Exemplos:
numero1 := 10
numero2 := 2
resultado:= EXP(numero1, numero2)
// resultado da exponenciao sendo
// armazenada em uma varivel
resultado:= 2 * EXP(numero1, numero2) + 10
42
Competncia 02
OPERAO
Converte um valor real em valor inteiro
Raiz quadrada
Quadrado
SINTAXE
INT(valor:real): inteiro
RAIZQ(valor:real): real
QUAD(valor:real): real
OPERADOR / FUNO
()
Funes
* / DIV MOD
+ -
43
Competncia 02
ATIVIDADE
1. Escreva um algoritmo para ler um nmero e mostrar:
a. A raiz quadrada deste nmero
b. O nmero recebido elevado a quarta (n4)
c. O nmero recebido vezes o quociente do nmero dividido por 2.
2. Escreva um algoritmo para ler o valor do raio de um crculo, calcular e mostrar o valor da
sua rea.
Obs.: Frmula para calcular a rea de um crculo : x raio2 . Considere o valor de 3,14.
44
Competncia 03
OBJETIVO
Igual
<>
Diferente
>
Maior que
<
Menor que
>=
Maior ou igual
<=
Menor ou igual
A partir dos operadores da tabela 5, podemos elaborar operaes condicionais, desde que sigamos
a seguinte sintaxe:
<elemento_1> <operador_relacional> <elemento_2>
45
Competncia 03
Onde:
operador_relacional um dos operadores relacionais da tabela 5.
elemento_1 e elemento_2 so os elementos que queremos comparar.
Qualquer um destes elementos pode ser uma varivel, uma constante ou uma expresso
matemtica.
Exemplos de operaes condicionais:
OPERAO
COMENTRIO
RESULTADO
OPERAO
COMENTRIO
RESULTADO
OPERAO
COMENTRIO
RESULTADO
num1 = num2
Est sendo comparado se os dados armazenados nas variveis num1
e num2 so iguais.
Depende dos valores armazenados em num1 e num2.
Supondo que as variveis armazenem os valores 10 cada uma, o
resultado da comparao VERDADEIRO.
Se a varivel num1 armazena o valor 10 e a varivel num2 armazena
o valor 5, o resultado da comparao FALSO.
4>6
Est sendo comparado se a constante numrica 4 maior que outra
constante numrica 6.
O resultado da comparao FALSO, pois o nmero 4 no maior
que o nmero 6.
A <> B
Como A e B esto entre aspas, no se tratam de variveis, mas
de constantes literais (texto). Est sendo comparado se a letra A
maiscula diferente da letra B maiscula.
O resultado da comparao VERDADEIRO.
46
Competncia 03
OPERAO
COMENTRIO
RESULTADO
OBSERVAO
OPERAO
COMENTRIO
RESULTADO
OPERAO
COMENTRIO
RESULTADO
OBSERVAO
num1 <> 6
Est sendo comparado se o dado armazenado na varivel num1
diferente da constante numrica 6.
Depende do tipo da varivel num1 e do valor armazenado nela.
Considerando que a varivel num1 seja numrica (inteiro ou real):
se a varivel num1 armazena o valor 6, o resultado da comparao
FALSO.
Se a varivel num1 armazena qualquer outro valor numrico, o
resultado da comparao VERDADEIRO.
Considerando que a varivel num2 no seja numrica: o resultado
FALSO, pois esto sendo comparados elementos de tipos diferentes.
Varivel literal ou lgica sendo comparado com uma constante
numrica.
O correto comparamos elementos numerais com numerais, lgico
com lgico ou literal com literal.
Este exemplo apenas ilustrativo, pois a maioria das linguagens de
programao entende como erro a comparao entre tipos
diferentes.
O Visualg no est preparado para este tipo de comparao,
resultando sempre em FALSO.
1 = 1
O primeiro elemento da comparao o nmero 1 e o segundo
elemento o literal 1 (observe que est entre aspas, o que
caracteriza ser um literal).
O resultado da comparao FALSO, pois esto sendo comparados
elementos de tipos diferentes. Veja a observao do exemplo
anterior.
A < a
Como A e a esto entre aspas, no se tratam de variveis, mas
de constantes literais (texto). Est sendo comparado se a letra A
maiscula menor que a letra a minscula.
O resultado da comparao VERDADEIRO.
Aqui voc pode ter achado essa comparao estranha, pode ter
pensado: -mas como eu posso afirmar que uma letra menor ou
maior que a outra?. A explicao pra isso segue logo abaixo, no
deixem de ler o texto do link.
47
Competncia 03
Cada caractere (letra, nmero ou smbolo) do computador corresponde a um cdigo que est
relacionado a uma tabela do computador, denominada Tabela ASCII, que voc poder consultar no
link http://pt.wikipedia.org /wiki/ASCII, acessado em 21/06/2014. No tpico Caracteres
imprimveis da pgina deste link, as tabelas apresentam na segunda coluna os cdigos em nmeros
decimais e na quarta coluna a que caractere corresponde. Em uma operao condicional, o
computador compara os cdigos correspondentes aos caracteres comparados. Por isso, no exemplo
acima a constante A (cdigo 65) menor que a constante a (cdigo 97).
Como cada condio resulta em um valor lgico (VERDADEIRO ou FALSO), aplicam-se as tabelas 7 e
8, denominadas Tabela Verdade, para definir o resultado final da expresso.
48
Competncia 03
RESULTADO DA 1
CONDIO
V
V
F
F
E
RESULTADO DA 2
CONDIO
V
F
V
F
RESULTADO DA
EXPRESSO
V
F
F
F
OU
RESULTADO DA 2
CONDIO
V
F
V
F
RESULTADO DA
EXPRESSO
V
V
V
F
RESULTADO DA 1
CONDIO
V
V
F
F
Tabela 08 - Tabela Verdade OU
Fonte: o autor (2013)
49
Competncia 03
Para exemplificarmos seu uso vamos considerar uma situao onde teremos como entrada o tipo
de ligao telefnica, que pode ser: L (local fixo), C (celular local), E (estadual) ou I (internacional).
Sempre que a ligao for do tipo C, E ou I dever ser solicitada uma senha. A expresso condicional
para atender a este critrio pode ser assim escrita:
(Tipo=C) OU (Tipo=E) OU (Tipo=I)
O uso do operador NAO pode simplificar a expresso da seguinte forma:
NAO(Tipo=L)
A expresso lgica fica mais simples utilizando o operador de negao e comparando apenas o
nico tipo que no exige senha.
RESULTADO DA 1
CONDIO
V
V
F
F
OU
RESULTADO DA 2
CONDIO
V
F
V
F
RESULTADO DA
EXPRESSO
V
V
V
F
50
Competncia 03
verdadeiro OU falso
Por fim resolvemos o ltimo operador OU, e temos o resultado final: verdadeiro
Podem-se utilizar parnteses para alterar a prioridade. No exemplo abaixo, o segundo operador OU
dever ser resolvido primeiro, por conta dos parnteses que agrupam os elementos da parte da
expresso.
(6=3) OU (5<8) E ((3=3) OU (5<=4)) E (3=2)
Para resolver esta expresso, primeiro resolve-se cada relacionamento da expresso condicional,
que resulta na seguinte expresso:
falso OU verdadeiro E (verdadeiro OU falso) E falso
Agora, vamos resolver primeiro a parte da expresso que est dentro de parnteses, conforme a
tabela verdade, o que resulta na seguinte expresso:
falso OU verdadeiro E verdadeiro E falso
Em seguida resolvemos o primeiro operador E, resultando na expresso:
falso OU verdadeiro E falso
Vamos resolver agora o segundo E, que resulta na expresso:
falso OU falso
E finalmente, resolvendo o operador OU que resta, chegamos ao resultado final: falso
Para melhor fixao deste assunto, vamos observar alguns exemplos:
Exemplo 1: Considere a situao das pessoas que no so obrigadas a votar. De acordo com a
legislao eleitoral, existem dois casos onde o voto opcional:
Caso 1: Para quem tem mais de 15 anos e menos de 18 anos, que podemos representar com a
seguinte expresso lgica:
(idade>15) E (idade<=17)
Caso 2: Para quem tem mais de 65 anos, que podemos representar com a seguinte expresso
lgica:
idade>65
51
Competncia 03
Como no caso 1 OU no caso 2 o voto opcional, podemos juntar as duas expresses atravs do
operador lgico OU e quaisquer uma das seguintes expresses podem ser escritas:
Expresso 1: idade>15 E idade<=17 OU idade>65
Expresso 2: idade>65 OU idade>15 E idade<=17
Voc deve lembrar-se de que pela tabela 7 de prioridade dos operadores lgicos, independente da
ordem em que os operadores lgicos esto colocados na expresso, primeiro deve ser resolvido o
operador E (verificando se a idade est na faixa de 16 a 17 anos) para s depois verificar o operador
OU.
Se o valor armazenado na varivel idade for 7 anos, teremos pela primeira expresso:
(7>15) E (7<=17) OU (7>65)
Resolvendo as condies teremos:
falso E verdadeiro OU falso
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E verdadeiro resulta em falso,
ficando assim a expresso:
falso OU falso
Por fim, resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU falso resulta em
falso, ou seja, falso para uma pessoa de 7 anos que o voto opcional.
Agora faa o teste acima com as idades 16, 30 e 70 anos e verifique como o resultado corresponde
realidade em relao ao que a lei eleitoral estabelece quanto idade para o voto opcional.
Tambm resolva a expresso 2 abaixo, com as idades 7, 16, 30 e 70 e comprove que o resultado o
mesmo da expresso 1.
Expresso 2: (idade>65) OU (idade>15) E (idade<=17)
Exemplo 2: Agora consideremos a situao onde para ser aprovado o aluno tem que:
Caso 1: ter frequentado pelo menos 75% das aulas, que podemos representar com a seguinte
expresso lgica:
perc_freq>=75
Caso 2: ter obtido o conceito A ou B, que podemos representar com a seguinte expresso
52
Competncia 03
lgica:
(conc=A) OU (conc=B)
No exemplo 1, um dos dois casos deveria ser verdadeiro para que a pessoa pudesse votar de forma
opcional, por isso, conectamos as expresses lgicas com o conector E. Na situao deste exemplo,
os dois casos devem ser atendidos para que o aluno seja aprovado. Logo, iremos conectar as
expresses com o conector E, que pode resultar em uma das expresses:
Expresso 1: (perc_freq>=75) E (conc=A) OU (conc=B)
Expresso 2: (conc=A) OU (conc=B) E (perc_freq>=75)
A princpio voc pode achar que as expresses esto corretas, mas h um erro lgico, considerandose as tabelas verdades 8 e 9.
Vamos resolver as sentenas para entendermos o erro lgico da expresso:
Se o valor armazenado na varivel perc_freq for 60 e o valor armazenado na varivel conceito for
A, teremos pela primeira expresso:
(60>=75) E (A=A) OU (A=B)
Resolvendo as condies teremos:
falso E verdadeiro OU falso
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E verdadeiro resulta em falso,
ficando assim a expresso:
falso OU falso
Por fim, resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU falso resulta em
falso, ou seja, falso para uma pessoa com 60% de frequncia e conceito A que esteja aprovado.
Tambm resolva a expresso 2 com os mesmos valores e comprove que o resultado o mesmo da
expresso 1.
Expresso 2: (conc=A) OU (conc=B) E (perc_freq>=75)
Bem, a voc pergunta: No vi erro nenhum, cad o erro lgico de que voc falou?. Realmente,
para os dados colocados o erro no aparece. Mas ai que est o segredo do que estamos
estudando a lgica de programao utilizando algoritmos. Para que um algoritmo esteja correto,
ele tem que atender corretamente a situao de todos os alunos que possamos imaginar. Vamos
colocar agora um aluno tambm com 60% de frequncia e com o conceito B, ficando assim, pela
53
Competncia 03
primeira expresso:
(60>=75) E (B=A) OU (B=B)
Resolvendo as condies teremos:
falso E falso OU verdadeiro
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E falso resulta em falso, ficando
assim a expresso:
falso OU verdadeiro
Resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU verdadeiro resulta em
verdadeiro, ou seja, verdadeiro para uma pessoa com 60% de frequncia e conceito B que
esteja aprovado, o que no faz o menor sentido, porque ele tem apenas 60% de frequncia. Mesmo
se utilizarmos a expresso 2, o resultado tambm estaria errado.
Esse tipo de erro o que chamamos de erro lgico, uma vez que a sintaxe da expresso est
correta, mas a lgica em relao ao problema que desejamos resolver no est.
Vamos pensar mais sobre o problema?
Para ser aprovado um aluno deve atender aos dois casos seguintes:
Caso 1: perc_freq>=75
Caso 2: (conc=A) OU (conc=B)
Como temos dois casos, mas trs condies, o computador no sabe se so trs casos ou dois casos,
combinando a 1 condio com a 2 condio ou combinando a 2 condio com a 3 condio.
Nessa situao, ele obedece regra de prioridade dos conectores lgicos. Analisando novamente as
duas condies vistas anteriormente, o computador estar resolvendo primeiro o conector lgico E,
que tem mais prioridade que o conector lgico OU, conforme destacado nas expresses abaixo:
Expresso 1: (perc_freq>=75) E (conc=A) OU (conc=B)
Expresso 2: (conc=A) OU (conc=B) E (perc_freq>=75)
Para fazer o Caso 2 ser resolvido prioritariamente e s depois ser conectado ao Caso 1, voc deve
recorrer ao uso dos parnteses, pois ele faz com que a expresso que est dentro dos parnteses
seja resolvida primeiro, conforme as expresses a seguir:
Expresso 1: (perc_freq>=75) E ((conc=A) OU (conc=B))
Expresso 2: ((conc=A) OU (conc=B)) E (perc_freq>=75)
54
Competncia 03
Vamos resolver agora expresso 1 com os mesmos valores que serviram para identificarmos o erro
lgico: 60% de frequncia e conceito B, ficando assim, a soluo:
(60>=75) E ((B=A) OU (B=B))
Resolvendo as condies teremos:
falso E (falso OU verdadeiro)
Resolvendo primeiro o operador OU por causa dos parnteses (pela tabela 8 - tabela verdade OU),
falso OU verdadeiro resulta em verdadeiro, ficando assim a expresso:
falso E verdadeiro
Resolvendo o operador E (pela tabela 7 tabela verdade E), falso E verdadeiro resulta em falso, ou
seja, falso para uma pessoa com 60% de frequncia e conceito B que esteja aprovado.
Dominar a elaborao e a resoluo de expresses lgicas uma habilidade fundamental para a
competncia que estamos estudando e para poder desenvolver algoritmos com a estrutura de
deciso que estudaremos no prximo item.
55
Competncia 03
56
Competncia 03
57
Competncia 03
58
Competncia 03
59
Competncia 03
Esta estrutura utilizada em situaes onde mais de duas mudanas de sequncia so previstas.
Uma mudana de sequncia executada se o resultado da condio avaliada for um valor lgico
VERDADEIRO e a outra mudana de sequncia ser executada se o resultado da condio avaliada
for um valor lgico FALSO, mas dentro de cada uma das duas sequncias pode haver outras
mudanas.
Para exemplificar esta estrutura, consideremos uma situao onde o aluno pode estar aprovado,
em recuperao ou reprovado, conforme as condies a seguir:
Condio para aprovao: mdia igual ou superior a 6.
Condio para recuperao: mdia inferior a 6 at 3.
Condio para reprovao: mdia menor que 3.
algoritmo "Calcula Media"
var
nota1, nota2, media: real
inicio
escreva ("Digite a 1 nota: ")
leia (nota1)
escreva ("Digite a 2 nota: ")
leia (nota2)
media := (nota1 + nota2) / 2
escreval ("A mdia : ", media)
se (media < 3) entao
escreval ("Reprovado")
senao
se (media < 6) entao
escreval ("Recuperao")
senao
escreval ("Aprovado")
fimse
fimse
fimalgoritmo
60
Competncia 03
ATIVIDADE
As atividades a seguir so para que voc possa praticar e aprofundar sua aprendizagem.
1. Escreva um algoritmo para ler o salrio de dois funcionrios. Os valores dos salrios devero
ser diferentes e podero ser informados em qualquer ordem: primeiro o menor salrio depois o
maior salrio ou vice-versa. O algoritmo dever executar um processamento para que o maior
salrio fique armazenado na 1 varivel declarada e o menor salrio fique armazenado na 2
varivel declarada. O algoritmo dever mostrar os salrios em ordem do menor para o maior.
2. O ingresso para um show promovido pelo clube social da cidade tem o valor padro de R$
70,00. Escreva um algoritmo para ler o tipo de expectador que assistir ao show (S para scio e
N para no scio). Dever ser exibido o valor que dever ser pago pelo ingresso.
Obs.: Scio paga 50% do valor padro do ingresso.
3. Escreva um algoritmo para ler:
a. O preo normal do ingresso de um show
b. A quantidade total de ingressos vendidos
c. A quantidade de ingressos meia-entrada vendidos.
Calcule e mostre o valor total arrecadado, considerando que o ingresso de meia-entrada custa
metade do preo normal do ingresso.
4. Escreva um algoritmo para ler dois nmeros e mostrar de acordo com os valores dos nmeros:
a. O primeiro nmero menor que o segundo
b. O primeiro nmero maior que o segundo
c. Os nmeros so iguais
5. Escreva um algoritmo para ler o valor da uma conta de restaurante, a quantidade de homens,
a quantidade de mulheres e a quantidade de crianas que participaram da refeio. Calcule e
mostre o valor que cada grupo deve pagar, considerando que mulheres e crianas pagam a
metade do valor que os homens pagam.
61
Competncia 04
62
Competncia 04
As instrues 4 e 5, que fazem parte de um bloco de repetio, sero executadas uma vez. Como a
repetio definida pelo comando REPITA, cuja condio de repetio codificada no final do
bloco, no comando ATE, a possibilidade de repetio depende da avaliao desta condio. Se o
resultado for FALSO, as instrues 4 e 5 sero executadas novamente, ou seja, ocorrer nova
repetio destes comandos. Quando o resultado da condio for VERDADEIRO, a repetio termina
e sero executados os comandos 6 e 7.
Vamos considerar o algoritmo que calcula a mdia aritmtica entre duas notas. O valor mximo de
cada nota s pode ser 10. Caso o usurio digite um valor maior que 10, o valor no deve ser aceito e
a instruo de entrada deve se repetir at que um valor menor ou igual a 10 seja digitado. Nosso
algoritmo deve ficar da seguinte forma:
algoritmo "Calcula Media"
var
nota1, nota2, media: real
inicio
repita
escreva ("Digite a 1 nota: ")
leia (nota1)
ate (nota1<=10)
repita
escreva ("Digite a 2 nota: ")
leia (nota2)
ate (nota2<=10)
media := (nota1 + nota2) / 2
escreva ("A mdia : ", media)
fimalgoritmo
Assista ao vdeo postado no link http://youtu.be/9xCtVeIJWXk e veja como melhorar ainda mais
a interao do algoritmo com o usurio.
4.2 Contador
Com o uso de estrutura de repetio surge a necessidade de realizarmos algumas contagens como,
por exemplo:
Se no bloco de repetio foi solicitado o sexo de uma pessoa, quantas so do sexo masculino
e quantas so do sexo feminino.
Um contador uma varivel que, a partir de um valor inicial, a cada repetio pode ter o seu valor
aumentado ou diminudo de um valor constante.
63
Competncia 04
A sintaxe de um contador :
<contador> := <contador> + / - <constante_numerica>
Vamos desenvolver um algoritmo para receber o sexo de vrias pessoas. Dever ser digitado M
para masculino e F para feminino. Para finalizar o algoritmo dever ser digitado o sexo X. Ao final da
execuo o algoritmo dever exibir a quantidade de pessoas do sexo masculino e a quantidade de
pessoas do sexo feminino.
algoritmo "Contador"
var
sexo: literal
masculino, feminino: inteiro
inicio
// Iniciando o valor dos contadores com zero
masculino := 0
feminino := 0
repita
escreva ("Digite o sexo (M/F): ")
leia (sexo)
se sexo=M entao
masculino := masculino + 1
senao
se sexo=F entao
feminino := feminino + 1
fimse
fimse
ate (sexo=X)
escreval ("Masculino(s): ", masculino)
escreval ("Feminino(s): ", feminino)
fimalgoritmo
Como a contagem realizada a partir de um valor inicial, inicializamos as variveis contadoras
masculino e feminino com o valor zero no incio da seo de comandos.
Nesse algoritmo, toda vez em que digitado a letra M para uma leitura de um sexo, adicionado
no valor da constante numrica 1 a varivel contadora masculino. E toda vez em que digitada a
letra F para uma leitura de um sexo, adicionado o valor da constante numrica 1 a varivel
contadora feminino.
Observe a condio colocada no comando ATE. Esta condio (sexo = X) que determina at
quando a repetio ocorrer.
64
Competncia 04
4.3 Acumulador
O conceito de acumulador muito parecido com o conceito de contador, sendo que o acumulador,
a partir de um valor inicial, pode aumentar ou diminuir um valor varivel a cada repetio, cuja
sintaxe a seguinte:
<acumulador> := <acumulador> + / - <varivel_numerica>
Vamos desenvolver um algoritmo para receber o preo de vrios produtos. Para finalizar o
algoritmo dever ser digitado o preo 0 (zero). No final ser exibido o valor total dos produtos.
algoritmo "Acumulador"
var
preco, total: real
inicio
// Iniciando o valor do acumulador com zero
total := 0
repita
escreva ("Digite o preo: ")
leia (preco)
total := total + preco
ate (preco=0)
escreval ("Valor total: ", total)
fimalgoritmo
Neste algoritmo, o valor do preo digitado a cada repetio adicionado ao acumulador total, at
que seja digitado um preo 0.
Como o acumulo realizado a partir de um valor inicial, inicializamos a varivel acumuladora total
com o valor zero no incio da seo de comandos.
65
Competncia 04
66
Competncia 04
media:=0
se quant_filhos <> 0 entao
media:= acumulador / quant_filhos
fimse
escreva (Mdia das idades: , media)
fimalgoritmo
67
Competncia 04
ATIVIDADE
As atividades a seguir so para que voc possa praticar e aprofundar sua aprendizagem da
competncia 4.
1. Escreva um algoritmo para ler as duas notas de 10 alunos, calcular a mdia aritmtica de
cada aluno e mostrar a quantidade de alunos aprovados e a quantidade de alunos
reprovados.
Considere que a mdia para aprovao 6.
68
Concluso
Prezado aluno, finalmente conclumos as quatro competncias previstas para esta disciplina, onde
tivemos a oportunidade de aprender como programar um computador.
Iniciamos pelos princpios da lgica de programao algortmica, conhecendo sobre dados e
informaes e linguagem de programao. Tambm vimos como ocorre a entrada dos dados, como
os dados processados so atribudos a variveis e como as informaes geradas so exibidas aos
usurios. Foi nesta primeira etapa que tivemos contato com o Visualg ferramenta para edio e
execuo de algoritmo.
Consolidados os princpios da lgica de programao algortmica, partimos para uma etapa onde
tivemos conhecimento sobre vrios operadores e funes que muito nos ajudam a desenvolver
algoritmos para realizao de operaes matemtica.
Etapa a etapa, formos aprimorando nosso conhecimento e tivemos contato com as estruturas de
deciso, lembram-se? Estrutura de deciso simples, composta e encadeada? Agora sim, nossos
algoritmos podem fazer comparaes e decidir por qual caminho seguir.
Finalizamos esta disciplina estudando as estruturas de repetio, onde foi possvel desenvolver
algoritmos mais elaborados utilizando contadores e acumuladores.
Espero que voc tenha aprendido bem todas as etapas, pois so fundamentais para as disciplinas
Linguagem de Programao para Web, Orientao a Objetos e Projeto de Desenvolvimento de
Software. importante que voc busque aprofundar e complementar seus conhecimentos, para
que possa se tornar um profissional bem qualificado e consequentemente bem sucedido.
69
Referncias
FARRER, Harry. et al. Algoritmos Estruturados. 3 ed.: LTC, 2011
MANZANO, Jos Augusto; OLIVEIRA, Jayr Figueiredo de. Estudo Dirigido de Algoritmos. 1 ed.:
ERICA, 1997
70
Minicurrculo do Professor
71