Académique Documents
Professionnel Documents
Culture Documents
~
Programacao
,
Faculdade Educacional da Lapa (org.)
Curitiba
2016
Livro _logica_programacao.indb 1
05/04/2016 08:59:29
fael
Direo de Produo
Coordenao Editorial
Reviso
Projeto Grfico
Capa
Imagem capa
Shutterstock
Diagramao
Reviso
Livro _logica_programacao.indb 2
05/04/2016 08:59:31
Sumrio
Livro _logica_programacao.indb 3
05/04/2016 08:59:32
Livro _logica_programacao.indb 4
05/04/2016 08:59:32
Apresentao
Prezado aluno,
A arte e cincia de programar computadores algo fascinante.
Podemos definir esta atividade como emprestar um pouco de nossa
inteligncia ao computador. Quando o computador trabalha
como se nossa inteligncia emprestada a ele estivesse trabalhando. E
para isto precisamos aprender como se comunicar com ele.
O conhecimento lgico essencial para qualquer pessoa que
deseja iniciar a carreira na rea de desenvolvimento de sistemas,
independente do paradigma da linguagem ou do sistema que iremos desenvolver. E este conceito bastante necessrio na lgica de
programao para obtermos retorno til destas mquinas maravilhosas que so os computadores.
Livro _logica_programacao.indb 5
05/04/2016 08:59:33
A lgica de programao aborda como se escreve um programa de computador, isto , como se escreve um algoritmo. Um algoritmo nada mais
do que um manual de instruo, uma receita, uma sequencia lgica de aes
que devem ser realizadas para se atingir um objetivo. Quando o algoritmo
aplicado na rea da computao ele faz parte da lgica de programao.
Nesta disciplina iremos aprender como se escreve um algoritmo, isto , como
organizar nosso pensamento para dizer ao computador o que fazer. Durante esta
disciplina iremos tambm aprimorar a forma de escrever os algoritmos, utilizando
a lgica de programao para entender o melhor jeito de escrev-los. Nosso objetivo final que o computador interprete corretamente nosso algoritmo e retorne
a resposta correta do problema a ser resolvido. Por isso as atividades prticas so
imprescindveis para aprimorarmos a lgica de programao.
Para isto veremos os conceitos bsicos de logica de programao e as
formas mais utilizadas para a representao de algoritmos. Abordaremos os
operadores lgico-matemticos e relacionais necessrios para a construo de
expresses. Iniciaremos a construo de algoritmos sequenciais, aprendendo
os comandos bsicos de entrada e sada de dados.
Os comandos de seleo sero apresentados a seguir, abordando os desvios condicionais simples, composto e encadeado. Conheceremos tambm os
diferentes comandos de repetio e suas aplicabilidades.
Iremos entender como criar e manipular estruturas de dados simples
como vetores e registros. E por fim vamos aprender a criar funes e como
melhor utiliz-las.
Em suma, vamos aprender um mtodo para nos comunicar com a
mquina da melhor forma buscando t-la cada vez mais como aliada na soluo
de problemas que auxiliem o ser humano tanto social como economicamente.
Bons estudos!
Patricia Rucker de Bassi
Coordenadora dos Cursos de Tecnologia em Anlise e Desenvolvimento de
Sistemas e Tecnologia em Gesto de TI
Livro _logica_programacao.indb 6
05/04/2016 08:59:33
1
Fundamentos da
Lgica para Programao
Introduo
Sem dvida, o computador uma das maiores invenes do
homem e tem se mostrado uma ferramenta verstil, rpida e segura
para a manipulao de informaes.
Para muitos essa inveno responsvel pela intensificao
da mecanizao e descobertas cientficas na vida moderna. Esta afirmao d um carter autnomo ao computador, como se o mesmo
fizesse tudo sozinho. Entretanto cabe esclarecer que o computador
uma grande ferramenta de trabalho, servindo de auxlio para as
mais diversas atividades. Porm esta mquina no criativa e nem
inteligente, na verdade, apenas reproduz o que lhe ordenado por
meio de seus programas de computador.
Os programas de computador so construdos para resolver
algum problema especfico e a soluo adotada sempre uma soluo
Livro _logica_programacao.indb 7
05/04/2016 08:59:34
Lgica de programao
22
Por isso, nesta aula, temos trs questes a serem respondidas: o que a
Lgica? Como a Lgica aplicada Programao de Computadores? O que
um Algoritmo? Vamos comear explicando os princpios bsicos do pensamento lgico.
Livro _logica_programacao.indb 8
05/04/2016 08:59:34
A Lgica foi criada por Aristteles, no sculo IV a.C., como uma cincia autnoma que se dedica ao estudo dos atos do pensamento conceito,
juzo, raciocnio, demonstrao do ponto de vista da sua estrutura ou forma
Lgica, sem ter em conta qualquer contedo material. por esta razo que
essa Lgica Aristotlica tambm conhecida por Lgica Formal.
Em contraposio a esse conceito de Lgica Formal, surgiu um outro o
de Lgica Material para designar o estudo do raciocnio no que ele depende
quanto ao seu contedo ou matria.
Essa distino entre Lgica Formal e Lgica Material nos permite perceber porque: tendo em conta a sua forma, o raciocnio correto ou incorreto
(vlido ou invlido). Mas se atendermos sua matria, a concluso pode ser
verdadeira ou falsa.
Para exemplificar, tomemos como exemplo as seguintes sentenas de
raciocnio lgico:
I. nenhum homem sabe danar;
II. este danarino homem;
III. logo, este danarino no sabe danar.
Este raciocnio formalmente correto, uma vez que a concluso est corretamente deduzida. Mas a concluso falsa, uma vez que falsa a primeira
proposio (Nenhum homem sabe danar). Estamos perante um raciocnio
que tem validade formal, mas no tem validade material. Logo temos que
concluir que falso.
Desde a sua criao o estudo da Lgica tem registrado enormes aperfeioamentos, sobretudo a partir de meados do sculo XIX. costume dividir-se a sua histria em trs perodos: Perodo Clssico, Perodo Moderno e Perodo Contemporneo.
A Lgica Matemtica (desenvolvida no Perodo Moderno) exerceu
uma influncia decisiva em muitos domnios, principalmente na Eletrnica,
Ciberntica, Informtica e Inteligncia Artificial.
Mesmo com essa multiplicidade de conceitos, a Lgica pode ser vista
como uma cincia que procura encontrar as leis em relao s quais o nosso
pensamento deve obedecer para que possa ser considerado vlido.
9
Livro _logica_programacao.indb 9
05/04/2016 08:59:34
Lgica de programao
a pele humana no suporta altas temperaturas (ou algo mais simples como queimei minha pele no ltimo contato com uma superfcie quente);
Livro _logica_programacao.indb 10
05/04/2016 08:59:34
1.3 Algoritmos
A construo de algoritmos o primeiro passo para a Programao de
Computadores. uma das tarefas mais complexas da programao de computadores, mas tambm uma das mais desafiadoras e empolgantes.
Um algoritmo pode ser definido como uma seqncia de passos que visa
a atingir um objetivo definido. Assim podemos dizer que um algoritmo a
organizao do pensamento para a soluo de um problema, portanto uma
representao da lgica.
Um algoritmo, na Linguagem da Programao de computadores, representa uma seqncia de instrues que o computador deve seguir a fim de
atingir um objetivo definido. Cada instruo , na verdade, uma informao
que indica ao computador o que deve ser feito. J o programa consiste na codificao precisa do algoritmo em uma linguagem de programao especfica.
importante lembrar que a ordem na qual as instrues sero executadas de fundamental importncia para a efetividade da soluo algortmica.
Para entendermos melhor, imaginemos como problema a ser resolvido o preparo de uma carne assada. bvio que a sua soluo envolve, entre outras
tarefas menores, limpar a carne, temper-la e lev-la ao forno. Mas tambm
obvio que se a ordem dessas instrues for alterada certamente no iremos
atingir a soluo para o problema. Imagine se levssemos a carne ao forno e a
temperssemos somente depois!
11
Livro _logica_programacao.indb 11
05/04/2016 08:59:34
Lgica de programao
O algoritmo no a soluo do problema, mas uma forma de solucion-lo. Assim, para um mesmo problema, podemos criar diferentes algoritmos
usando diferentes abordagens. Em outras palavras, podemos usar diferentes
seqncias de instrues para resolver o mesmo problema. Em alguns casos,
at mesmo diferentes instrues. Quase sempre existe mais do que uma
maneira de resolver um problema, e essa escolha nossa. Qual ser ento a
melhor das escolhas?
Dados dois ou mais algoritmos para resolver o mesmo problema, sensato escolher aquele que obtm uma soluo no menor tempo possvel e que
utiliza o menor espao para a representao dos dados do problema.
Apesar de sua nomenclatura pouco usual, usamos algoritmos em vrias
situaes cotidianas. Um exemplo comum so as receitas culinrias. Em uma
receita culinria descrevemos todos os ingredientes que faro parte do prato,
suas quantidades, a ordem em que sero usadas, suas transformaes (modo
de preparo) at o preparo completo do prato. Dessa forma possvel garantir
que a aplicao correta do algoritmo resulte no prato desejado.
importante esclarecer desde j que um algoritmo independe da linguagem de programao que ser utilizada. Na verdade, uma vez que o algoritmo
seja desenvolvido de forma correta, poder ser implementado em diferentes
linguagens de programao sem maiores alteraes.
A construo de um algoritmo deve observar todos os passos necessrios
execuo da atividade e evitar que passos desnecessrios sejam executados
ou que passos interdependentes sejam executados fora de ordem.
Durante sua construo, um algoritmo constantemente revisto a fim
de identificar novas situaes ou excees a serem tratadas.
Quando temos um problema e precisamos construir um algoritmo para
resolv-lo, devemos passar pelas seguintes etapas:
a.
definir o problema;
Livro _logica_programacao.indb 12
05/04/2016 08:59:34
Livro _logica_programacao.indb 13
05/04/2016 08:59:34
Lgica de programao
suba na escada;
Livro _logica_programacao.indb 14
05/04/2016 08:59:34
lmpada tambm no funcione, sendo necessrio repetir mais uma vez esta
seqncia de passos. Ento, quando deveremos parar de repetir?
Para toda repetio em um algoritmo devemos estabelecer uma condio de parada, ou seja, um limite para a quantidade de vezes em que os passos
devero ser repetidos. Caso no seja estabelecido esta condio de parada
ocorre o que chamamos de lao infinito mais conhecido por sua designao
em ingls loop infinito no qual os passos se repetem indefinidamente.
No caso do nosso algoritmo, uma condio de parada adequada seria repetir
enquanto a lmpada no acender. Assim o algoritmo ficaria da seguinte forma:
VIII. ligue o interruptor;
IX. se a lmpada no acender, ento:
a.
d. suba na escada;
e.
f.
15
Livro _logica_programacao.indb 15
05/04/2016 08:59:34
Lgica de programao
ENTRADAS
PROCESSAMENTO
SADA
Resultados do
Dados iniciais
Regras do
processamento ou
para a resoluo
problema
do problema
soluo para o problema
Exemplo: Multiplicao de dois nmeros inteiros
A = 25
RESULTADO = A*B
75
B=3
Livro _logica_programacao.indb 16
05/04/2016 08:59:35
Resumindo
Nesta aula, foram discutidos os princpios da programao para computadores. Foi apresentado o conceito de Lgica para Programao que , em
essncia, uma extenso da lgica matemtica.
Um dos conceitos mais importantes discutidos o conceito de algoritmo. por meio do algoritmo que informamos ao computador o que dever
ser feito. Vale lembrar que o encadeamento das instrues que compem o
algoritmo de fundamental importncia para seu correto funcionamento.
17
Livro _logica_programacao.indb 17
05/04/2016 08:59:35
Lgica de programao
Atividades
1. Leve em considerao os estudos que realizamos nesta aula e marque
com V (Verdadeiro) ou F (Falso) as alternativas a seguir.
() A lgica para programao torna o computador capaz de realizar
tarefas de forma autnoma e criativa, sem a necessidade da interferncia humana.
() Um algoritmo representa uma seqncia lgica de instrues.
() Cada instruo em um algoritmo faz com que o computador execute uma ou um conjunto de tarefas especficas.
() Para todo problema somente possvel criar um nico algoritmo
correto.
() Uma vez que um algoritmo criado, no deve mais ser modificado.
() Antes de iniciar a construo de um algoritmo, preciso definir a
linguagem de programao a ser usada.
2. Comente a importncia dos dados de entrada, do processamento e dos
dados de sada para a construo de algoritmos.
Livro _logica_programacao.indb 18
05/04/2016 08:59:35
Na prxima aula
Dando continuidade ao estudo da Lgica para Programao, estudaremos como a lgica de programao, em sua forma algortmica, pode ser
representada. Estudaremos os mtodos mais utilizados na prtica: Descrio
Narrativa, Fluxograma e Pseudocdigo.
19
Livro _logica_programacao.indb 19
05/04/2016 08:59:35
Lgica de programao
20
Livro _logica_programacao.indb 20
05/04/2016 08:59:35
2
Formas de
representao
de um algoritmo
Introduo
Com o passar do tempo e de estudos dos algoritmos, foram
desenvolvidas inmeras formas de se representar um algoritmo de
modo a facilitar o seu entendimento e, mais tarde, a sua traduo
para uma linguagem de programao especfica. Entre as formas
de representao de algoritmos mais conhecidas, podemos citar a
Descrio Narrativa, o Fluxograma Convencional e o Pseudocdigo
- tambm conhecido como Linguagem Estruturada ou Portugol.
Essas trs formas sero objeto de estudo desta aula.
Uma representao clara e fcil de ser seguida facilita o desenvolvimento, depurao (correo de erros) e subseqente transformao do algoritmo em um programa de computador.
Livro _logica_programacao.indb 21
05/04/2016 08:59:36
Lgica de programao
Uma vez que esta aula trata da representao de um algoritmo necessrio que voc tenha entendido o conceito de algoritmo apresentado na aula
anterior. Caso haja dvidas, recorra ao material e entre em contato com a
web-tutoria.
Esperamos que, ao final desta aula, voc seja capaz de:
22
22
22
Livro _logica_programacao.indb 22
05/04/2016 08:59:36
22
22
22
ser objetivo;
22
Um exemplo de representao de um algoritmo usando Descrio Narrativa para o problema de clculo da mdia de um aluno ficaria:
1. obter as notas da primeira, segunda e terceira provas;
2. calcular a mdia aritmtica entre as trs notas;
3. se a mdia for maior ou igual que 7,00, o aluno foi aprovado,
seno, foi reprovado.
No entanto, na prtica, essa representao pouco usada porque o uso
da linguagem natural d muitas vezes oportunidade a ms interpretaes,
ambigidades e imprecises. Por esse motivo, no daremos maior ateno a
este tipo de representao.
2.3 Fluxograma
Essa a forma grfica de representar um algoritmo mais conhecida e
utilizada. O fluxograma nos permite mostrar graficamente a lgica de um
algoritmo, enfatizando passos individuais e o fluxo de execuo.
23
Livro _logica_programacao.indb 23
05/04/2016 08:59:36
Lgica de programao
Terminador
Varivel
Entrada Manual
24
Livro _logica_programacao.indb 24
05/04/2016 08:59:36
Dados
Dados
Condio
SIM
NO
Deciso
Doc
Documento
Dados
Dados Armazenados
Varivel ou
mensagem
Exibio
Operaes
Preparao
Referncia
de Pgina
Referncia fora
da Pgina
Usado para indicar dados que esto ou devero ser armazenados pelo algoritmo.
utilizado quando se deseja que os dados sejam impressos. Representa um dispositivo de sada como o monitor ou a impressora.
Utilizado quando preciso particionar o diagrama. Quando ocorrer mais de uma partio, colocada uma letra ou nmero dentro
do smbolo de conexo para identificar os pares de ligao.
25
Livro _logica_programacao.indb 25
05/04/2016 08:59:36
Lgica de programao
Processamento
Permite indicar o sentido do fluxo de dados. Serve exclusivamente para conectar os smbolos ou blocos existentes.
Smbolo ou bloco que se utiliza para indicar clculos (algoritmos) a efetuar, atribuies de valores ou qualquer manipulao
de dados que tenha um bloco especfico para sua descrio.
Livro _logica_programacao.indb 26
05/04/2016 08:59:37
Pseudocdigo
Fluxograma
Inicio
Incio de Programa
Leia a
Leia a,b
Se a > 0 e b > 0 ento
Leia b
a>0 e b>0
SIM
NO
Mdia = (a+b)/2
Os valores
devem ser
positivos
mdia
Seno
Fim se
Fim do programa
Fim
2.4 Pseudocdigo
Esse nome uma aluso posterior implementao em uma Linguagem
de Programao, ou seja, quando formos programar em uma linguagem de
programao especfica.
27
Livro _logica_programacao.indb 27
05/04/2016 08:59:37
Lgica de programao
Sntese da aula
Nesta aula, foram discutidos conceitos sobre as formas mais comuns de
representao de um algoritmo computacional.
Esperamos que, a partir do que foi estudado nesta aula, voc seja
capaz de concluir que h diversas formas de representao de algoritmos
que diferem entre si pela quantidade de detalhes de implementao que
fornecem ou, inversamente, pelo grau de abstrao que possibilitam em
relao implementao do algoritmo em termos de uma linguagem de
programao especfica.
Das principais formas de representao de algoritmos, destacam-se: a
descrio narrativa, o fluxograma convencional e o pseudocdigo. Dessas
trs, a mais utilizada na prtica o pseudocdigo, principalmente por sua
proximidade com o produto final o programa codificado em uma Linguagem de Programao o que diminui o tempo de desenvolvimento e reduz
custos. Alm disso, o pseudocdigo permite adicionar detalhes especficos
da linguagem a ser utilizada.
28
Livro _logica_programacao.indb 28
05/04/2016 08:59:37
Atividades
Para as atividades 1, 2 e 3, considere a seguinte questo: elabore um
algoritmo para um programa que permita ler vrios nmeros inteiros a partir
do teclado e, aps a leitura de cada nmero individual, dever ser apresentada
uma mensagem indicando se o nmero informado positivo, negativo ou
nulo. O programa dever encerrar quando o valor nulo for informado.
1. Represente o algoritmo na forma de Descrio Narrativa.
2. Represente o algoritmo na forma de um Fluxograma.
3. Represente o algoritmo na forma de Pseudocdigo.
4. Sobre a Descrio Narrativa, incorreto afirmar que:
a.
d. p
ossui regras fixas que garantem que um mesmo algoritmo sempre ser representado da mesma forma, mesmo que por pessoas
diferentes;
e.
Livro _logica_programacao.indb 29
05/04/2016 08:59:37
Lgica de programao
SENAO
IMPRIMA (X*X);
FIM SE
ATE (X <= 0)
FIM
30
Livro _logica_programacao.indb 30
05/04/2016 08:59:37
imprimir Positivo
imprimir Negativo
imprimir Nulo
Encerrar o programa
imprimir Positivo
imprimir Negativo
Seno
imprimir Nulo
Encerrar o programa
31
Livro _logica_programacao.indb 31
05/04/2016 08:59:37
Lgica de programao
N>0
NO
SIM
Positivo
NO
N<0
NO
SIM
Positivo
Nulo
N=0
SIM
Fim
32
Livro _logica_programacao.indb 32
05/04/2016 08:59:37
IMPRIMA (Positivo)
SENAO
SE (N < 0) ENTAO
IMPRIMA (Negativo)
SENAO
IMPRIMA (Nulo)
FIM SE
FIM SE
ATE (N = 0)
FIM
Na atividade 4, de acordo com o que foi estudado sobre Descrio Narrativa, voc deve ter reconhecido como opo incorreta a opo (d), pois
nesse tipo de representao no existem regras fixas e, por usar a linguagem
natural, duas pessoas distintas podero usar termos diferentes para descrever um mesmo passo do algoritmo. A opo (a) correta, pois a Descrio
Narrativa utiliza a linguagem natural para descrever o conjunto de passos
do algoritmo. A opo (b), por sua vez, tambm correta, pois esse tipo de
representao pouco usado na prtica. A opo (c) correta e levanta um
dos principais problemas com esse tipo de representao, que a possibilidade de ambigidade, pois caso um passo seja ambguo, pode dar margem a
entendimentos distintos do algoritmo. Por ltimo, a opo (e) tambm est
correta, pois devemos utilizar frases curtas e simples a fim de manter a clareza
e facilitar a interpretao do algoritmo.
Considerando o que foi estudado nesta aula sobre fluxograma, voc deve
ter reconhecido como opo incorreta para a atividade 5 a opo (c), pois a
interpretao de um fluxograma deve ser sempre realizada de cima para baixo
e da esquerda para a direita. Voc deveria ter reconhecido ainda a opo (a)
como correta, pois o fluxograma exatamente uma representao grfica dos
33
Livro _logica_programacao.indb 33
05/04/2016 08:59:37
Lgica de programao
passos de um algoritmo. A opo (b) tambm est correta, pois a norma internacional ISO 5807/1985 define a simbologia a ser adotada na construo de
um fluxograma e, com isso, um mesmo fluxograma ser corretamente interpretado, no importa onde tenha sido criado. A opo (d) correta, uma vez
que o algoritmo representado s pode ter um incio e um fim no fluxograma.
E, por fim, a opo (e) tambm deveria ser considerada correta, pois o maior
problema com o uso de fluxograma ou de qualquer ferramenta de representao grfica que no so adequadas para situaes mais complexas que gerem
algoritmos com uma elevada quantidade de passos.
De acordo com o que voc estudou sobre Pseudocdigo, deve ter ficado
claro que a opo correta para a atividade 6 a opo (e), pois, seguindo o
fluxo do pseudocdigo, percebemos que a leitura e teste da varivel X encontram-se no bloco de instrues do comando REPITA. Assim esses passos
devero ser executados at que a condio (X <= 0) seja verdadeira. Deveria
ter ficado claro tambm que a opo (a) est incorreta, pois esse tipo de representao o mais usado na prtica, pois a forma que mais se aproxima da
codificao final em uma linguagem de programao. A opo (b) est incorreta e sua avaliao depende da ateno ao teste condicional para a instruo
REPITA... AT. Nela, caso o valor seja negativo ou nulo, o fluxo desviado
para o final do algoritmo. As opes (c) e (d) so obviamente incorretas, uma
vez que o algoritmo apresenta as instrues SE..ENTAO e REPITA..AT
que so estruturas de deciso e repetio, respectivamente.
As atividades lhe deram a oportunidade de representar um algoritmo
usando Descrio Narrativa, Fluxograma e Pseudocdigo, que foram os objetivos fixados para esta aula.
Na prxima aula
Estudaremos como os dados so armazenados e representados pelo computador. Esse conhecimento de fundamental importncia para a atividade
de Programao de Computadores.
34
Livro _logica_programacao.indb 34
05/04/2016 08:59:37
3
Tipos de dados:
variveis e constantes
Introduo
Para a execuo de qualquer tipo de programa, o computador necessita armazenar dados de natureza diversa. Esses dados so
armazenados na memria do computador.
Todas as informaes existentes no computador esto ou
na memria primria (memria RAM), ou na memria secundria
(discos, fitas, CD-ROM, etc). Ns iremos trabalhar, neste caderno,
somente com a memria primria, especificamente com as informaes armazenadas na RAM (memria de acesso aleatrio).
Para atingir os objetivos desta aula, desejvel que voc possua
conhecimento, ainda que bsico, sobre arquitetura de computadores
principalmente no que diz respeito memria RAM. Pesquise sobre
o assunto!
Livro _logica_programacao.indb 35
05/04/2016 08:59:38
Lgica de programao
22
22
22
Contedo
7000:A210
Paulo Srgio
3000:12BC
345
4100:0006
99.834
36
Livro _logica_programacao.indb 36
05/04/2016 08:59:38
O endereamento das posies de memria por meio de nmeros hexadecimais perfeitamente compreendido pela mquina, mas para ns humanos torna-se uma tarefa complicada.
Para resolver esse problema, as linguagens de computador facilitam
o manuseio, por parte dos programadores, das posies de memria da
mquina, permitindo que, ao invs de trabalhar diretamente com os nmeros hexadecimais, seja possvel atribuir nomes diferentes a cada posio de
memria. Alm disso, tais nomes so de livre escolha do programador. Com
esse recurso, os usurios ficaram livres dos endereos em hexadecimal e passam a trabalhar com endereos lgicos. Como o contedo de cada gaveta
(endereo lgico) pode variar, ou seja, mudar de valor ao longo da execuo
do programa, convencionou-se chamar de varivel a referncia a cada gaveta.
Assim, para o exemplo de endereos fsicos mostrados anteriormente,
poderamos rotular a posio de memria 7000:A210 como nome e, com
isso, sempre que precisssemos do valor dessa posio de memria, bastaria
referenciar a varivel nome. Assim ficaria o exemplo anterior:
End. Fsico
Contedo
7000:A210
nome
Paulo Srgio
3000:12BC
valor
345
4100:0006
total
99.834
Livro _logica_programacao.indb 37
05/04/2016 08:59:38
Lgica de programao
Livro _logica_programacao.indb 38
05/04/2016 08:59:38
22
Livro _logica_programacao.indb 39
05/04/2016 08:59:38
Lgica de programao
32 ?
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
128
129
130
131
132
133
134
135
136
137
138
139
160
161
162
163
164
165
166
167
168
169
170
171
192
193
194
195
196
197
198
199
200
201
202
203
224
225
226
227
228
229
230
231
232
233
234
235
40
Livro _logica_programacao.indb 40
05/04/2016 08:59:38
44 ,
45 46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
30
62 >
94 ^
126 ~
158
190
222
31
63 ?
95 _
127
159
191
223
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254+
255
Fonte: <http://www.abusar.org>.
Essa conveno foi padronizada para possibilitar a migrao de programas entre mquinas diferentes.
Cabe salientar que o comprimento de um dado do tipo literal dado
pelo nmero de caracteres nele contido. Logo, para armazenarmos um tipo
de dado literal precisamos reservar um espao contguo de memria igual ao
comprimento do mesmo, destinando um byte para cada caractere de informao. O literal Programao, por exemplo, possui comprimento igual a 11,
ou seja, possui 11 caracteres.
Livro _logica_programacao.indb 41
05/04/2016 08:59:38
Lgica de programao
De certa forma, se por um lado isso pode parecer como um desperdcio de memria, por outro simplifica bastante a arquitetura de memria dos
computadores. Alm disso isso no to relevante, uma vez que, na prtica,
o nmero de ocorrncias de dados do tipo lgico bastante inferior ao de
ocorrncias de dados do tipo literal ou numrico.
Sntese da aula
Nesta aula, discutimos como o computador armazena e manipula as
informaes na memria do computador.
A memria dos computadores composta por posies numeradas e
ordenadamente organizadas em bytes. Cada tipo de dado requer uma quantidade diferente de bytes para armazenar a sua informao na memria. Essa
quantidade pode tambm variar em funo do tipo de computador ou Linguagem de Programao considerada.
Uma varivel uma entidade dotada de um nome para diferenci-la das
demais e permitir encontrar a sua posio da memria, e um tipo de dado,
que define o tipo de informao que ela capaz de guardar.
Uma vez definidos, o nome e o tipo de uma varivel no podem ser
alterados no decorrer de um programa. Por outro lado, a informao til da
varivel passvel de modificao durante o decorrer do programa, de acordo
com o fluxo de execuo do mesmo.
J um dado constante no sofre alterao no seu valor durante a execuo do programa.
Atividades
1. Com base no que foi estudado nesta aula, escolha a alternativa que apresenta, respectivamente, os tipos de dados mais adequados para variveis que devero armazenar os seguintes contedos: idade, temperatura,
nome da cidade, nmero da carteira de identidade, notas de um aluno.
a) Inteiro, real, caractere, caractere, vetor de real.
b) Inteiro, inteiro, caractere, caractere, vetor de inteiro.
42
Livro _logica_programacao.indb 42
05/04/2016 08:59:38
Na prxima aula
Estudaremos os principais operadores e como podem ser usados na
composio de expresses. Sero estudados os operadores mais gerais e que
so implementados na maioria das Linguagens de Programao, nomeadamente: aritmticos, lgicos, de atribuio e de concatenao.
43
Livro _logica_programacao.indb 43
05/04/2016 08:59:38
Lgica de programao
44
Livro _logica_programacao.indb 44
05/04/2016 08:59:38
4
Operadores e
expresses
Introduo
Operadores so elementos funcionais que atuam sobre termos e produzem um determinado resultado.
Os operadores so, na prtica, instrues especiais pelas
quais incrementamos, decrementamos, comparamos e avaliamos
dados dentro de um programa de computador. Podemos classificar
os operadores em trs classes:
22
operadores aritmticos;
22
operadores relacionais;
22
operadores lgicos.
Livro _logica_programacao.indb 45
05/04/2016 08:59:39
Lgica de programao
binrios: quando atuam sobre dois termos. Os operadores aritmticos bsicos (adio, subtrao, diviso e multiplicao), por exemplo;
22
No h pr-requisitos formais para esta aula, uma vez que trata de operaes bsicas, pois pressupomos que voc possua conhecimentos sobre Teoria
de Conjuntos e Matemtica Fundamental.
Esperamos que, ao final desta aula, voc seja capaz de:
22
22
SMBOLO
Adio
Subtrao
Multiplicao
Diviso
Exponenciao
DIV
46
Livro _logica_programacao.indb 46
05/04/2016 08:59:39
Operadores e expresses
Esses operadores so comumente utilizados para a formao de expresses aritmticas. A avaliao da expresso o que resulta no clculo do seu
resultado depende da ordem na qual os operadores so processados. Para
garantir que sempre seja obedecida uma mesma ordem, definida uma hierarquia para a avaliao dos operadores. Essa hierarquia herdada da prpria
matemtica. Segundo esta hierarquia:
1. em primeiro lugar, devem ser processadas as expresses entre parnteses;
2. em seguida, a operao de exponenciao;
3. ento devem ser processadas as operaes de Multiplicao e Diviso (o que aparecer primeiro);
4. por ltimo, devem ser processadas as operaes de Adio e Subtrao (o que aparecer primeiro).
Essa hierarquia garante a correta interpretao de uma expresso aritmtica.
importante salientar que, na maioria das Linguagens de Programao, o tipo de dado resultante depende dos tipos de dados dos termos.
A seguir apresentada uma listagem com os tipos de dados resultantes
de cada operador.
OPERADOR
A+B
AB
A*B
Tipo de Dado de A
Inteiro
Real
Inteiro
Real
Inteiro
Real
Inteiro
Real
Inteiro
Real
Inteiro
Real
Tipo de Dado de B
Inteiro
Real
Real
Inteiro
Inteiro
Real
Real
Inteiro
Inteiro
Real
Real
Inteiro
Tipo Resultante
Inteiro
Real
Real
Real
Inteiro
Real
Real
Real
Inteiro
Real
Real
Real
47
Livro _logica_programacao.indb 47
05/04/2016 08:59:39
Lgica de programao
OPERADOR
A/B
A DIV B
A MOD B
Tipo de Dado de A
Inteiro
Real
Inteiro
Real
Inteiro
Inteiro
Inteiro
Inteiro
Tipo de Dado de B
Inteiro
Real
Real
Inteiro
Inteiro
Inteiro
Inteiro
Inteiro
Tipo Resultante
Real
Real
Real
Real
Inteiro
Inteiro
Inteiro
Inteiro
SMBOLO
Igual a
Diferente de
Maior que
>
Menor que
<
Maior ou igual a
>=
Menor ou igual a
<=
Livro _logica_programacao.indb 48
05/04/2016 08:59:39
Operadores e expresses
Vale ressaltar que no eficaz comparar valores do tipo real com os operadores de igualdade em virtude de a representao em ponto flutuante ser
inexata em alguns casos.
Apesar de algebricamente correta, a expresso (1.0 / 3.0) + (1.0 / 3.0) +
(1.0 / 3.0) = 1 avaliada como falsa devido ao fato de 1.0 / 3.0 ter como resultado um valor que contm nmero infinito de casas decimais (3.3333333...).
O computador apenas capaz de utilizar um nmero finito de casas decimais
e, portanto, feito um arredondamento do valor de 1/3 em cada ocorrncia.
Para evitar os erros causados pela representao inexata de valores reais,
deve-se evitar utilizar as comparaes de igualdade com nmeros reais.
Livro _logica_programacao.indb 49
05/04/2016 08:59:40
Lgica de programao
OPERADOR
Tipo de
Dado de A
Tipo de
Dado de B
Tipo Resultante
AeB
verdadeiro
verdadeiro
verdadeiro
AeB
verdadeiro
falso
falso
AeB
falso
verdadeiro
falso
AeB
falso
falso
falso
A ou B
verdadeiro
verdadeiro
verdadeiro
A ou B
verdadeiro
falso
verdadeiro
A ou B
falso
verdadeiro
verdadeiro
A ou B
falso
falso
falso
no A
verdadeiro
-----
falso
no A
falso
-----
verdadeiro
Livro _logica_programacao.indb 50
05/04/2016 08:59:40
Operadores e expresses
4.6 Expresses
O conceito de expresso, em termos computacionais, est intimamente
ligado ao conceito de expresso (ou frmula) usado na matemtica, na qual
um conjunto de variveis e constantes numricas relaciona-se por meio de
operadores aritmticos compondo uma frmula que, uma vez avaliada,
resulta em um valor final.
O conceito de expresso aplicado computao assume um sentido
mais amplo: uma expresso uma combinao de variveis, constantes e operadores (aritmticos, relacionais ou lgicos) e que, uma vez avaliada, resulta
em um valor.
Expresses aritmticas so aquelas cujo resultado da avaliao do tipo
numrico, seja ele inteiro ou real. Somente o uso de operadores aritmticos e
variveis numricas so permitidos em expresses desse tipo.
Expresses lgicas so aquelas cujo resultado da avaliao um valor
lgico (verdadeiro ou falso). Na formao de expresses lgicas, permitido
tanto o uso de operadores lgicos quanto relacionais.
Sntese da aula
Nesta aula, foram apresentados e discutidos os principais Operadores
Aritmticos, Relacionais e Lgicos usados na Programao para Computadores. Foi discutida ainda a construo e a avaliao de expresses que utilizam
esses operadores.
51
Livro _logica_programacao.indb 51
05/04/2016 08:59:40
Lgica de programao
Atividades
1. Das alternativas apresentadas a seguir, indique aquela que representa um
operador unrio.
a) Maior do que [ >]
b) Resto da diviso inteira [ % ]
c) Negao [NOT ]
d) Multiplicao [ * ]
e) OU lgico [ OU ]
2. Das alternativas apresentadas abaixo, indique aquela que no devolve um
valor lgico. Considere os seguintes valores para as variveis Media7,
PaisBrasil, Nota7.25, Valorverdadeiro e Opcao=a.
a) ((Nota >= Media) E (Opcao=b))
b) (((Nota + 1) > Media) OU (NAO Valor))
c) (((Media*2)-1) % 2)
d) (((Media DIV 7) = 1) OU (Nota >= Media))
e) (((Nota - Media) > 3) = Valor)
3. Considere a seguinte expresso ((((A % 5) > 5) OU (B/C >= 1)) E
((NAO ((A<50) E (B <> C))) OU (C=5))) e determine o valor para essa
expresso lgica, tendo os valores 23, 5 e 5 como valores das variveis A,
B e C, respectivamente.
Livro _logica_programacao.indb 52
05/04/2016 08:59:40
Operadores e expresses
inteira tambm um operador binrio. A opo (d) incorreta, pois apresenta a operao aritmtica de multiplicao que tambm binria. E, por
fim, a opo (e) tambm apresenta um operador binrio, pois o operador
lgico OU opera sobre dois termos lgicos.
Para voc responder a atividade 2, deve ter considerado a hierarquia
das operaes e os valores das variveis. Da bastou usar de substituio
para avaliar o resultado de cada expresso. Seguindo essa abordagem, voc
deve ter chegado concluso de que a nica alternativa que no devolve
um valor lgico a opo (c), pois, se substituirmos os valores das variveis e executarmos as operaes, teremos: (((Media*2)-1) MOD 2)
(((7*2)-1) MOD 2) ((14 1) MOD 2) (13 MOD 2) 1. Ou
seja, o resultado um valor inteiro. Se analisarmos as outras expresses
da mesma maneira, veremos que todas resultam em um valor lgico: a
opo (a) retorna ((Nota >= Media) E (Opcao=b)) ((7.25 >= 7) E
(a=b)) (verdadeiro E falso) falso; a opo (b) retorna (((Nota
+ 1) > Media) OU (NAO Valor)) (((7.25 + 1) > 7) OU (NAO verdadeiro)) ((8.25 > 7) OU falso) verdadeiro OU falso verdadeiro;
a opo (d) retorna (((Media DIV 7) = 1) OU (Nota >= Media)) (((7
DIV 7) = 1) OU (7.25 >= 7)) ((1 = 1) OU (verdadeiro)) (verdadeiro OU verdadeiro verdadeiro; e a opo (e) retorna (((Nota Media) > 3) = Valor) (((7.25 - 7) > 3) = verdadeiro) ((0.25 > 3) =
verdadeiro) falso = verdadeiro falso.
Na atividade 3, se voc utilizou a tcnica de substituio dos valores das
variveis e a resoluo de cada operao respeitando a hierarquia entre elas,
voc concluiu que ((((A MOD 5) > 5) OU (B/C >= 1)) E ((NAO ((A<50) E
(B <> C))) OU (C=5))) ((((23 MOD 5) > 5) OU (5/5 >= 1)) E ((NAO
((23<50) E (5 <> 5))) OU (5=5))) (((3 > 5) OU (1 >= 1)) E ((NAO (verdadeiro E falso)) OU verdadeiro)) ((falso OU verdadeiro) E ((NAO falso)
OU verdadeiro)) (verdadeiro E (verdadeiro OU verdadeiro)) (verdadeiro E verdadeiro) verdadeiro. Logo o valor para essa expresso lgica
verdadeiro.
Ao realizar as atividades propostas, checando-as com os comentrios e
obtendo sucesso, voc est apto a reconhecer os principais Operadores da
Lgica para Programao, utilizando-os, e construir corretamente expresses
aritmticas e lgicas, avaliando-as. Parabns!
53
Livro _logica_programacao.indb 53
05/04/2016 08:59:40
Lgica de programao
Na prxima aula
Estudaremos, na prxima aula, a Estrutura de Arquivo. Na prtica, esse
tipo de estrutura muito utilizado para o armazenamento e manipulao de
grandes conjuntos de dados.
54
Livro _logica_programacao.indb 54
05/04/2016 08:59:40
5
Estrutura de seleo
simples
e composta
Introduo
Aprendemos a desenvolver algoritmos seqenciais, ou seja,
pseudocdigos nos quais todas as instrues so executadas seqencialmente, sem interrupes, desvios ou retornos.
Como vimos, j possvel resolver alguns tipos de problemas
(poucos) com a estrutura puramente seqencial. Mas apenas com
comandos de leitura, escrita e atribuio ficamos bastante limitados para resolver problemas de maior complexidade. Isso porque,
no mundo real, deparamo-nos seguidamente com situaes em que
devemos tomar decises e, com base nessas decises, optar por diferentes caminhos para soluo de um problema.
Pelas caractersticas especficas da disciplina, o contedo
para o aprendizado de cada novo contedo cumulativo. Ou seja,
para a perfeita compreenso de cada nova aula, voc deve ter absorvido adequadamente o contedo visto nas aulas anteriores. Assim,
para compreenso de desvio condicional simples e composto, deve
estar bem assimilado o contedo das aulas anteriores.
Livro _logica_programacao.indb 55
05/04/2016 08:59:41
Lgica de programao
22
FLUXOGRAMA
Livro _logica_programacao.indb 56
05/04/2016 08:59:46
Executando esse algoritmo, poderemos verificar que a mensagem Parabns! Voc foi aprovado!!, s ser exibida se a mdia calculada atender a condio proposta no desvio condicional, ou seja, se a mdia obtida for maior ou
igual a seis. Caso a mdia seja inferior a seis, a seqncia de instrues contida
no desvio condicional no ser executada, prosseguindo a execuo do algoritmo aps o fimse.
Vejamos mais um exemplo. Suponhamos que voc precise desenvolver
um algoritmo que solicite a digitao do nome e idade de uma pessoa e, aps
isso, caso a idade seja maior ou igual 18 anos, exiba uma mensagem informando que a pessoa (citar o nome) j atingiu a maioridade.
Como resolveramos esse problema? Muito simples. Necessitaremos de
uma varivel do tipo texto para armazenar o nome, e uma do tipo inteiro
para armazenar a idade informada. O algoritmo deve ento solicitar esses
dados ao usurio e, aps armazenados nas respectivas variveis, deve realizar
um desvio condicional testando se a idade maior ou igual a 18. Se for, deve
escrever o nome contido na varivel do tipo texto, acompanhado de um texto
57
Livro _logica_programacao.indb 57
05/04/2016 08:59:46
Lgica de programao
Livro _logica_programacao.indb 58
05/04/2016 08:59:49
Quadro 2
SINTAXE EM
PSEUDOCDIGO
FLUXOGRAMA
Dessa forma, no desvio condicional composto, se a condio for verdadeira, ento ser executado somente o primeiro bloco de comandos da estrutura.
Seno, ser executado apenas o segundo bloco de comandos. Aps a execuo
de um dos blocos de comandos, o algoritmo prosseguir sua execuo normal a
partir da primeira linha de instrues logo aps o fimse. Simples, no ?
Vamos incrementar um pouco mais o nosso algoritmo para clculo da
mdia, convertendo o desvio condicional simples em composto, de forma que
o algoritmo informe a aprovao ou o no atingimento de mdia por parte do
aluno. Vejamos como ficaria o pseudocdigo na figura seguinte.
Figura 3 Exemplo de desvio condicional composto.
Se o contedo da varivel media
for maior ou igual a 6,ser
executada esta linha de comando.
Se o contedo da
varivel media
for menor do que 6,
ser executada esta
linha de comando.
Resultado da
execuo do
algoritmo.
59
Livro _logica_programacao.indb 59
05/04/2016 08:59:50
Lgica de programao
60
Livro _logica_programacao.indb 60
05/04/2016 08:59:50
22
22
o jogador humano vencer sempre que a soma dos nmeros informados por ele e pelo computador resultarem em um nmero mpar;
22
61
Livro _logica_programacao.indb 61
05/04/2016 08:59:50
Lgica de programao
Claro como a gua? No? Ento vamos explicar cada linha do bloco
principal para que no fique nenhuma dvida.
Iniciamos com a declarao de trs variveis. Uma para armazenar o
valor informado pelo jogador humano, outra para o nmero do computador,
e uma terceira para armazenar a soma dos dois primeiros.
inteiro humano , computador , total
As duas linhas seguintes apresentam uma mensagem na tela solicitando
que o jogador humano informe um nmero inteiro, armazenando-o na varivel humano.
escrever Digite um nmero inteiro:
ler humano
Aps isso, a vez de o computador escolher seu lanamento, que realizado de forma aleatria. Para isso, vamos utilizar duas funes predefinidas
no portugol:
22
22
Livro _logica_programacao.indb 62
05/04/2016 08:59:50
Utilizando essas duas funes existentes no Portugol IDE (tambm existentes na grande maioria das linguagens de programao), podemos atribuir
um valor inteiro de 0 a 5, escolhido ao acaso (aleatoriamente) pelo computador.
Figura 7 Instrues para gerar um valor aleatrio entre 0 e 5.
2
( ) * 5 )
1
3
1 Gera um valor aleatrio de 0.0 a 1.0
2 Converte o resultado da funo aleatria para valores de 0.0 a 5.0
3 Retorna apenas a parte inteira, obtendo valores inteiros de 0 a 5
Livro _logica_programacao.indb 63
05/04/2016 08:59:51
Lgica de programao
Sintese da Aula
Nesta aula, compreendemos a diferena bsica entre as estruturas de
seleo simples e compostas. A simples permite uma opo de desvio dentro
do pseudocdigo, caso a sua condio lgica seja verdadeira. J a composta
abre uma possibilidade adicional, permitindo dois caminhos diferentes, no
caso de validao ou no da sua condio lgica.
Atividades
1. Na seleo simples, uma instruo ou um conjunto de instrues
executado somente se o teste condicional especificado retornar o valor
verdadeiro. Por outro lado, na seleo composta, se o teste for verdadeiro, um trecho do algoritmo executado e, se falso, outro trecho ser
executado. Adicionalmente, uma instruo de seleo pode ser inserida
dentro da outra, formando uma estrutura de seleo encadeada. Nesse
contexto, analise o algoritmo a seguir e assinale a alternativa que indica
o que ser escrito como sada em tela.
inicio
inteiro x<-4,y<-2,z<- -3
real resultado
resultado <- (x%2)*z^3
se resultado < 0 entao
escrever CONDIO 1
senao
se resultado > 0 entao
64
Livro _logica_programacao.indb 64
05/04/2016 08:59:51
escrever CONDIO 2
senao
escrever CONDIO 3
fimSe
fim
fimSe
a) Condio 1
b) Condio 2
c) Condio 3
d) Nenhuma das alternativas anteriores
2. Quando algoritmos so criados, algumas vezes h necessidade de
controlar a ordem em que as instrues devero ser executadas pelo
computador de modo a solucionar um problema. Para permitir que
o fluxo de execuo seja controlado, devemos utilizar as estruturas de
controle. Sobre fluxo de execuo, leia as afirmativas a seguir e assinale a
alternativa correta.
I. Na estrutura seqencial, os comandos de um algoritmo so
executados em uma seqncia pr-estabelecida, ou seja, cada
comando executado somente aps o trmino do comando anterior.
II. Na estrutura de deciso (desvio condicional), so comuns situaes em que uma instruo, ou conjunto de instrues, devam ser
executados sempre para situaes verdadeiras e falsas.
III. Na estrutura de repetio, uma seqncia de comandos dever ser
executada obrigatoriamente uma ou vrias vezes de acordo com
uma condio.
a) Somente as afirmativas I e II so verdadeiras.
b) Somente a afirmativa II falsa.
65
Livro _logica_programacao.indb 65
05/04/2016 08:59:51
Lgica de programao
Livro _logica_programacao.indb 66
05/04/2016 08:59:51
Na prxima Aula
E ento? No est to difcil, no mesmo? Agora que voc j domina as
estruturas de seleo simples e compostas, poder verificar como aumenta seu
poder quando trabalharmos com essas estruturas encadeadas (ou aninhadas),
permitindo criar estruturas de deciso muito mais complexas e teis. No se
esquea de revisar esta aula e de dar uma boa olhada no material da prxima
para facilitar o aprendizado. At l!
67
Livro _logica_programacao.indb 67
05/04/2016 08:59:51
Lgica de programao
68
Livro _logica_programacao.indb 68
05/04/2016 08:59:51
6
Estrutura de seleo
encadeada
Introduo
Estamos quase concluindo as estruturas de seleo. S falta
conhecermos a estrutura de seleo encadeada e, por fim, dar uma
espiada na estrutura de seleo com mltipla escolha.
Aps esta aula, voc j ter conhecimento para desenvolver
algoritmos com um grau de complexidade maior, e poderemos
avanar para outro tipo de estruturas de grande importncia ao
desenvolvimento de sistemas.
Comecemos conversando um pouco sobre a tcnica de seleo encadeada.
Entendimento das estruturas de seleo simples e compostas essencial para a compreenso das estruturas de seleo encadeada e das estruturas de seleo com mltipla escolha. Se ainda tiver
dvidas, retome seu material e estude! No siga em frente sem esse
entendimento.
Livro _logica_programacao.indb 69
05/04/2016 08:59:52
Lgica de programao
22
70
Livro _logica_programacao.indb 70
05/04/2016 08:59:53
Se prestar ateno, notar que h claramente duas estruturas condicionas compostas. Uma mais externa (1) e a outra dentro do espao reservado s
instrues que sero executadas no bloco do seno (2).
Se voc comparou com algoritmo da aula anterior, j deve ter notado
uma diferena na execuo: enquanto no primeiro algoritmo, com trs
estruturas de se simples, mesmo que os valores fossem iguais, o que
seria verificado no primeiro teste, seriam realizados os outros dois testes.
Ou seja, independentemente da execuo do contedo de um dos desvios condicionais, os outros dois teriam seus testes executados, mesmo
sabendo que o resultado para eles seria falso, o que representa desperdcio
de recursos computacionais e conseqente aumento do tempo de execuo do algoritmo.
Em contrapartida, no exemplo que utiliza a estrutura encadeada, assim
que um dos trs testes seja validado, a estrutura condicional encadeada encerra
ignorando os demais. Assim, na melhor das hipteses, s ser realizado um
teste e, na pior, sero realizados dois testes; enquanto que, com o uso de trs
estruturas simples, teramos sempre a realizao dos trs testes.
Vejamos outro exemplo. Suponhamos que temos de desenvolver um
algoritmo para classificar um grupo de atletas para uma competio de natao. Assim os competidores teriam de ser classificados conforme sua faixa
etria, em diferentes categorias, conforme segue:
22
infantil I = de 5 a 7 anos
22
infantil II = de 8 a 10 anos
22
juvenil I = de 11 a 13 anos
22
juvenil II = de 14 a 17 anos
22
Livro _logica_programacao.indb 71
05/04/2016 08:59:53
Lgica de programao
Livro _logica_programacao.indb 72
05/04/2016 08:59:53
viajar, deve ser informada sua funo como assistente administrativo. Se for do sexo feminino e com disponibilidade para viajar,
o algoritmo deve informar a funo de gerente de divulgao. Se
no apresentar disponibilidade para viagens, atuar como assistente
administrativo. No caso dos homens, se forem casados, s podero
atuar como representantes comerciais regionalmente. Caso contrrio, podero atuar nacionalmente. Caso a idade seja inferior a 18
anos e superior ou igual a 14 anos, a pessoa s estar apta para
o programa de estgio em vendas (para o sexo masculino) ou em
divulgao (para o sexo feminino). No caso do estagirio de sexo
masculino, eventualmente poder realizar viagens regionais.
Muita informao junta? V se acostumando! Um dos requisitos para
um bom analista e desenvolvedor a boa capacidade de interpretao. Isso
fundamental para poder realizar a implementao de um sistema da forma
adequada.
Inicialmente, voc deve identificar os dados de entrada necessrios para o
funcionamento do algoritmo. Nesse caso so a idade, o sexo, a disponibilidade
para viajar e o estado civil. Ou seja, uma varivel do tipo inteiro que denominaremos de idade e trs variveis do tipo texto, que nomearemos como sexo, disp
e estCiv.
Agora basta seguir as instrues dadas no texto do problema, atentando
para cumprir todos os requisitos necessrios. No final, voc dever ter alguma
coisa semelhante com o pseudocdigo a seguir, o qual, como voc poder
observar, no apresenta um padro visual. Isso o caracteriza como uma estrutura de deciso encadeada heterognea.
Figura 3 Exemplo de desvio condicional encadeado heterogneo.
// Exemplo 12 Estrutura heterognea
inicio
inteiro idade
ler idade
73
Livro _logica_programacao.indb 73
05/04/2016 08:59:54
Lgica de programao
senao
fimse
senao
fimse
senao
senao
fimse
fimse
senao
74
Livro _logica_programacao.indb 74
05/04/2016 08:59:54
Para concluir esta aula, temos ainda mais uma estrutura bastante til em
determinadas situaes. Trata-se da estrutura de deciso de mltipla escolha.
Segundo Forbellone e Eberspcher (2005), quando temos um conjunto
de elementos discretos que necessita ser testado e aes diferentes so associadas
a esses valores, estamos diante de uma estrutura de deciso encadeada homognea do tipo se-senao-se. Como essa situao bastante comum no desenvolvimento de algoritmos que dependem de alternativas (desvios condicionais),
usa-se uma estrutura especfica para esses casos, a seleo de mltipla escolha.
A sintaxe dessa estrutura pode ser representada da seguinte forma:
escolhe <expresso_0>
caso <Expresso_1o>,. . .,<Expresso_1n>:
<instrues>
. . . . . . . . . . .
caso <Expresso_no>,. . .,<Expresso_nn>,:
<instrues>
defeito:
<instrues>
fimescolhe
75
Livro _logica_programacao.indb 75
05/04/2016 08:59:54
Lgica de programao
Nesse exemplo, voc pode verificar que, com base no contedo da varivel
sexo, a estrutura de seleo com mltiplas escolhas ir comparando o contedo
da varivel com o valor apresentado nas opes (caso). Se combinar com alguns
dos valores, ser executado o respectivo bloco de comandos. Se no houver
nenhuma equivalncia entre as opes apresentadas, ser executado o bloco de
comandos padro (default), no Portugol denominado defeito.
Saiba mais
76
Livro _logica_programacao.indb 76
05/04/2016 08:59:54
Vejamos mais um exemplo. J vimos uma estrutura condicional encadeada homognea, quando implementamos o pseudocdigo para distribuir
atletas em determinadas categorias, para uma competio de natao. Lembra? Pois bem... Implementemos, agora, a soluo para esse mesmo problema,
s que dessa vez utilizando a estrutura com mltiplas escolhas.
Figura 5 Exemplo de desvio condicional com seleo de mltipla escolha.
// Exemplo 14 Competio de Natao
inicio
inteiro idade
escrever Informe a idade:
ler idade
escolhe idade
caso 18 , 19 , 20 , 21 , 22:
escrever Adulto
caso 14 , 15 , 16 , 17:
escrever Juvenil II
caso 11 , 12 , 13:
escrever Juvenil I
caso 8 , 9 , 10:
escrever Infantil II
caso 5 , 6 , 7:
escrever Infantil I
defeito :
se idade > 22 entao
escrever Idade acima da permitida
senao
escrever idade abaixo da permitida
fimse
fimescolhe
fim
Analise esse pseudocdigo, comparando com o implementado utilizando a estrutura de deciso encadeada homognea vista anteriormente.
Repare que os dois pseudocdigos possuem a mesma funcionalidade, apesar
de ter estruturas to diferentes.
77
Livro _logica_programacao.indb 77
05/04/2016 08:59:54
Lgica de programao
Sntese da aula
Esta aula apresentou detalhadamente a estrutura de seleo encadeada
(ou aninhada), mostrando sua flexibilidade, a ponto de permitir a implementao de complexas estruturas de deciso.
Vimos que, a partir da conjugao de estruturas mais simples, como a
da seleo simples e da seleo composta, possvel incrementar o poderio
lgico de um algoritmo para a soluo de diversos tipos de problemas do
mundo real.
Aps a estrutura de deciso encadeada, foi apresentada a estrutura de
deciso com mltiplas escolhas, que permite substituir estruturas de deciso
encadeadas do tipo homogneo, possibilitando uma fcil implementao e
maior clareza para a compreenso do algoritmo.
Atividades
1. Durante a construo de algoritmos, so comuns situaes em que uma
instruo, ou conjunto de instrues, deva ser executada somente para
uma determinada situao. Em outros casos mais complexos, dependendo
de uma condio previamente estabelecida, caso essa seja verdadeira, um
conjunto de comandos dever ser executado e, caso seja falsa, outro conjunto
ser executado. Sobre desvio condicional, analise o algoritmo a seguir.
1 incio
2
texto nome
3
inteiro sexo, idade
4
escrever Entre com seus dados\n
5
escrever Nome: \n
6
ler nome
78
Livro _logica_programacao.indb 78
05/04/2016 08:59:54
11
12
13 senao
14
se idade>0 entao
15
16
escrever \Bem vindo,nome,\nVoc menor de idade
17 senao
18
se sexo =1 entao
19
escrever \Bem vindo,nome,\nVoc maior de idade
20 senao
21
se sexo = 2 e idade<18 entao
22
escrever \Bem vinda,nome,\nVoc menor de idade.
23 senao
24
escrever \Bem vinda,nome,\nVoc maior de idade.
25 fimSe
26 fimSe
27 fimSe
28 senao
29
escrever Voc deve entrar com idade maior que zero!
30 fimSe
31 fimSe
32 fim
Livro _logica_programacao.indb 79
05/04/2016 08:59:54
Lgica de programao
80
Livro _logica_programacao.indb 80
05/04/2016 08:59:54
caso esse nmero seja maior do que zero, deve ser avaliado se ele
par, em caso positivo, algoritmo deve informar isso e calcular e
exibir o quadrado do nmero. Se o nmero for mpar, essa situao
deve ser informada, e o algoritmo deve incrementar o contedo da
varivel em uma unidade, exibindo o resultado;
22
caso o nmero seja igual a zero, deve ser emitida uma mensagem
informando que o valor digitado nulo; e, se o valor for negativo,
isso deve ser informado ao usurio.
Livro _logica_programacao.indb 81
05/04/2016 08:59:54
Lgica de programao
Livro _logica_programacao.indb 82
05/04/2016 08:59:54
Livro _logica_programacao.indb 83
05/04/2016 08:59:54
Lgica de programao
Em resposta atividade quatro, pode-se concluir que a estrutura de seleo com mltiplas opes no vivel, em geral, para representao de estruturas encadeadas heterogneas por no apresentarem um padro lgico linear,
como o caso da atividade dois. Para representao mediante uma estrutura
de mltipla escolha (escolhe...caso), devemos ter um conjunto de elementos
discretos que necessita ser testado, para o qual aes diferentes devem ser
associadas a esses elementos.
Referncia
FORBELLONE, Andr Luiz Villar; EBERSPCHER, Henri Frederico.
Lgica de programao: a construo de algoritmos e estruturas de dados.
So Paulo: Pearson Prentice Hall, 2005.
84
Livro _logica_programacao.indb 84
05/04/2016 08:59:55
Na prxima aula
Na aula seguinte, conheceremos mais uma poderosa estrutura lgica de
programao que permitir executarmos diversas vezes um determinado trecho do pseudocdigo. a estrutura de repetio com teste no incio.
Como sempre, no custa lembrar, recomendamos que voc revise os
conceitos e tcnicas vistos at agora, e realize uma leitura prvia do contedo
da prxima aula.
85
Livro _logica_programacao.indb 85
05/04/2016 08:59:55
Lgica de programao
86
Livro _logica_programacao.indb 86
05/04/2016 08:59:55
7
Estrutura de repetio
com teste no incio
Introduo
Vamos agora conhecer mais um conjunto de estruturas de
extrema importncia para o desenvolvimento de sistemas realmente
teis. As estruturas de repetio.
Essas estruturas, tambm conhecidas como laos de repetio ou
loops, permitem que um bloco de instrues permanea sendo executado repetidamente, at que uma determinada situao seja alcanada,
momento no qual o lao interrompido, encerrando o algoritmo ou
continuando a execuo dos comandos existentes aps o lao.
Para que voc consiga acompanhar de forma satisfatria esta
aula, necessrio que domine as estruturas de programao seqencial e de desvio condicional estudadas at o presente momento.
Tambm a tranqilidade e a segurana na construo de expresses
lgico-matemticas para a correta compreenso e desenvolvimento
das estruturas que comearemos a estudar a partir desta aula sero
Livro _logica_programacao.indb 87
05/04/2016 08:59:56
Lgica de programao
22
Livro _logica_programacao.indb 88
05/04/2016 08:59:56
FLUXOGRAMA
Vejamos agora um pequeno exemplo do uso dessa estrutura. O algoritmo seguinte realiza a exibio em tela dos nmeros de 1 a 10 em ordem
crescente, utilizando o lao de repetio enquanto.
criada uma varivel i do tipo inteiro, a qual a cada execuo do lao
incrementada em 1. Ou seja, a cada execuo, a varivel recebe o seu valor atual
mais um (i i +1). Essa varivel costuma ser denominada de contador, haja
vista que sua funo justamente contar a quantidade de iteraes realizadas
ou a quantidade de vezes que uma determinada situao ocorre. A condio
imposta na primeira linha do enquanto garante a finitude do lao, pois no
momento em que a varivel i no satisfaa mais a condio, no ser mais
permitida a execuo das instrues contidas no loop, saindo da estrutura de
repetio e continuando a execuo dos comandos seguintes do pseudocdigo.
Figura 1 Exemplo de loop com teste no incio.
89
Livro _logica_programacao.indb 89
05/04/2016 08:59:56
Lgica de programao
Muito bem. Mas creio que, aps analisar o cdigo anterior, voc j deva
ter se perguntado:
Mas... e se eu no quiser as mdias dos 50 alunos? Se quiser parar antes dos cinqenta ou se
quiser calcular para um nmero maior?
Realmente o algoritmo proposto est bem rgido nesse aspecto. Ele s
serve para calcular a mdia de 50 alunos. Nem mais, nem menos (a no ser
que voc force o encerramento do programa). Mas basta uma pequena alterao para resolver esses problemas. Vejamos.
90
Livro _logica_programacao.indb 90
05/04/2016 08:59:56
Livro _logica_programacao.indb 91
05/04/2016 09:00:01
Lgica de programao
92
Livro _logica_programacao.indb 92
05/04/2016 09:00:01
fim
fimenquanto
cont <- cont 1
escrever \nA soma dos , cont , nmeros : , acum
escrever \nA mdia dos nmeros : , acum / cont
Livro _logica_programacao.indb 93
05/04/2016 09:00:01
Lgica de programao
mos. No se iluda em querer aprender apenas compreendendo o funcionamento de algoritmos prontos. Crie problemas e solucione-os com algoritmos
desenvolvidos por voc. Use a criatividade!
Sntese da aula
Nesta aula, vimos a estrutura de repetio com teste no incio enquanto...
faz, a qual nos permite repetir blocos de instrues nenhuma, uma ou diversas vezes. Ou seja, o bloco de comando permanecer sendo executado repetidamente, enquanto a condio lgica da estrutura estiver retornando um
valor verdadeiro. Esse tipo de estrutura extremamente til, pois, geralmente, para solucionarmos problemas por meio computadorizado, necessria a r epetio de determinados processos, o que no era tecnicamente vivel
com as estruturas seqenciais e de desvio condicional (estruturas de seleo
simples, composta e encadeada).
Atividades
1. Dado o algoritmo a seguir, que faz uso do lao de repetio enquanto,
qual ser o valor exibido na tela aps sua execuo?
inicio
inteiro x , resultado
resultado < 0
x < 5
resultado < x * 2
x < x 1
fim
fimenquanto
escrever resultado
94
Livro _logica_programacao.indb 94
05/04/2016 09:00:01
a) 2
c) 0
b) 2
d) 1
Livro _logica_programacao.indb 95
05/04/2016 09:00:01
Lgica de programao
inteiro valor , cont <- 0 , acum <- 0 , par <- 0 , imp <- 0
escrever \nDigite um valor:
ler valor
se valor % 2 = 0 entao
senao
imp <- imp + 1
fimse
96
Livro _logica_programacao.indb 96
05/04/2016 09:00:01
fim
Realize uma anlise desse cdigo comparando-o com o que voc desenvolveu e, para uma melhor compreenso, implemente-o no Portugol para
verificar sua funcionalidade.
Finalmente, na atividade quatro, um contador nada mais do que uma
varivel utilizada para contar a quantidade de execues de um lao, ou a
quantidade de vezes que uma determinada situao acontece. Pode ser utilizada de muitas formas, mas sempre procurando contar as ocorrncias de
algum evento dentro do lao. O acumulador, por outro lado, uma varivel
que armazena valores de forma cumulativa. O acumulador pode, por exemplo, realizar o somatrio de valores a cada execuo do lao.
Na prxima aula
Verificaremos duas variaes de lao de repetio. Dessa vez com o teste
sendo realizado no final, e no no incio, como o caso do enquanto...faz.
Vamos adiantar uma espiada nesse contedo para chegar no dia da aula j
com uma boa base de conhecimento? Ento, mos obra!
97
Livro _logica_programacao.indb 97
05/04/2016 09:00:02
Lgica de programao
98
Livro _logica_programacao.indb 98
05/04/2016 09:00:02
8
Estrutura de repetio
com teste no final
Introduo
J trabalhamos com estruturas de repetio com teste no incio. Nesse tipo de estrutura, o teste realizado antes de entrar no
bloco de instrues e, assim, as instrues podem ser executadas
nenhuma, uma ou diversas vezes. S executar os comandos se a
condio for satisfeita.
As estruturas que estudaremos agora tm, como peculiaridade, a execuo do teste aps o bloco de instrues. Ou seja, como
o teste realizado aps a execuo dos comandos contidos no lao,
isso garante que essas instrues sero realizadas ao menos uma vez
antes de encerrar o loop. Logo esse tipo de estrutura executa as suas
instrues internas uma ou diversas vezes.
vital a perfeita compreenso do funcionamento das estruturas de repetio estudadas na aula anterior, pois as que abordaremos
nesta aula so variaes dessas, com alteraes na sua estrutura lgica.
Dessa forma, revise as estruturas de repetio para no ter dificuldades
na compreenso de sua aplicabilidade com teste no final.
Livro _logica_programacao.indb 93
05/04/2016 09:00:03
Lgica de programao
22
FLUXOGRAMA
Livro _logica_programacao.indb 94
05/04/2016 09:00:03
Analise o pseudocdigo com ateno, realizando sua execuo mentalmente com diversos valores diferentes para a varivel mes, de forma que possa
compreender bem o seu funcionamento.
Figura 1 Exemplo de estrutura de repetio faz...enquanto.
95
Livro _logica_programacao.indb 95
05/04/2016 09:00:03
Lgica de programao
SINTAXE EM
PSEUDOCDIGO
FLUXOGRAMA
96
Livro _logica_programacao.indb 96
05/04/2016 09:00:03
Voc pde notar, nesse exemplo, que o lao s encerra sua execuo
quando a sua condio retorna um valor verdadeiro; nesse caso, quando a
varivel i igual a dez.
Vamos exercitar um pouco? Tente resolver o seguinte problema e s depois
de ter a sua verso do algoritmo funcionando confira com o pseudocdigo aqui
apresentado para poder comparar detalhes e diferenas das implementaes.
22
97
Livro _logica_programacao.indb 97
05/04/2016 09:00:04
Lgica de programao
98
Livro _logica_programacao.indb 98
05/04/2016 09:00:04
Sntese da aula
As estruturas de repetio com teste no final apresentam uma variante
estrutura de repetio com teste no incio, tendo como principal diferena o
fato de que a estrutura com teste no incio pode ser executada nenhuma, uma
ou diversas vezes. J as estruturas com teste no final tm seu bloco de instrues executadas ao menos uma vez, independentemente do valor do seu teste
lgico (condio). Assim esse tipo de estrutura executado uma ou diversas
vezes, mas nunca nenhuma vez.
Atividades
1. As estruturas de repetio possuem caractersticas particulares em
sua construo e forma de execuo. Considerando que h estruturas
que permitem a repetio nenhuma, uma ou vrias vezes, analise o
algoritmo a seguir sabendo que, sem modificar o tipo da estrutura de
repetio, desejo efetuar uma pequena alterao para que o lao repita
nenhuma vez. Assinale a alternativa mais adequada.
inicio
inteiro numero, contador
repete
escrever Introduza um numero:
ler numero
contador <- contador + 1
ate contador > 5
fim
Livro _logica_programacao.indb 99
05/04/2016 09:00:04
Lgica de programao
100
05/04/2016 09:00:04
Diante do algoritmo, se forem entrados os valores 2, 5, 3, 1, 0, respectivamente, teremos a sada final mostrada pelo Portugol da seguinte
forma:
a) total da compra: 275.0;
b) o algoritmo no executar devido inexistncia da clusula defeito
na sintaxe do algoritmo escolhe...caso;
c) total da compra: 175.0;
d) o algoritmo entrar em uma repetio infinita.
3. Quando algoritmos so criados, algumas vezes h necessidade de
controlar a ordem em que as instrues devero ser executadas pelo
computador de modo a solucionar um problema. Para permitir que
o fluxo de execuo seja controlado, devemos utilizar as estruturas de
controle. Sobre fluxo de execuo, leia as afirmativas a seguir e assinale a
alternativa correta.
I. Na estrutura seqencial, os comandos de um algoritmo so
executados em uma seqncia pr-estabelecida, ou seja, cada
comando executado somente aps o trmino do comando
anterior.
II. Na estrutura de deciso (desvio condicional), so comuns situaes em que uma instruo, ou conjunto de instrues, devam ser
executados sempre para situaes verdadeiras e falsas.
III. Em todas as estruturas de repetio, uma sequncia de comandos
dever ser executada obrigatoriamente uma ou vrias vezes, de
acordo com uma condio.
a) Somente as afirmativas I e II so verdadeiras.
b) Somente a afirmativa II falsa.
c) Somente a afirmativa III verdadeira.
d) Somente as afirmativas II e III so falsas.
4. Um algoritmo para selecionar o maior nmero entre N digitados, at o
usurio digitar zero, poderia ser definido como:
101
05/04/2016 09:00:04
Lgica de programao
inicio
inteiro maior <- 1
inteiro numeros
repete
escrever Digite um numero (zero para sair):
ler numeros
se numeros > maior entao
maior <- numeros
fimse
ate maior = 0
escrever O maior numero digitado foi: , maior
fim
Dado o algoritmo anterior, o que est errado em relao ao que foi proposto?
a) O Nmero maior no ser calculado de forma correta, pois o mesmo
sempre estar com o valor zero.
b) A varivel nmero no armazena o valor digitado pelo usurio.
c) O lao de repetio encerra aps a leitura do nmero 1, no do zero.
d) O lao de repetio ficar repetindo, pois nunca ser atendida a
condio de parada.
05/04/2016 09:00:04
05/04/2016 09:00:04
Lgica de programao
dicionais: seleo simples, composta e encadeada. Repare que nessa afirmativa no especificada qual o tipo de desvio condicional, ou seja, a afirmao
generaliza para todos os tipos. Contudo, na seleo simples, uma instruo ou
um conjunto de instrues executado somente se o teste condicional especificado retornar o valor verdadeiro. Adicionalmente, na seleo composta,
as instrues contidas nos desvios condicionais devem ser executadas sempre
para situaes verdadeiras ou falsas. Isso torna a afirmativa (II) incorreta. A
afirmativa (III) tambm falsa, pois uma seqncia de comandos pode ser
executada nenhuma, uma ou vrias vezes.
Para a atividade quatro, a alternativa a ser assinalada a (d), uma vez
que a varivel maior j inicia com um valor diferente de zero e, em nenhum
momento na execuo do algoritmo ela poder assumir o valor zero, pois o
desvio condicional dentro do bloco do lao de repetio no permite essa
atribuio. A varivel que deveria servir para encerrar o lao seria a nmeros,
pois ela que recebe o valor digitado pelo usurio, enquanto a maior sempre
ir armazenar o maior valor digitado.
Na prxima aula
Encerraremos a disciplina abordando mais uma estrutura de repetio:
estrutura de repetio com varivel de controle. Realize uma leitura prvia
desse contedo para uma melhor compreenso.
104
05/04/2016 09:00:04
9
Estrutura de repetio
com varivel de controle
Introduo
Nesta aula, iremos conhecer as estruturas de repetio com
varivel de controle. Como voc poder verificar, um tipo de estrutura muito utilizado na programao devido sua versatilidade.
fundamental o conhecimento e domnio de todas as estruturas lgicas abordadas nesta disciplina para voc poder entender
perfeitamente o funcionamento desse tipo de lao de repetio. Esse
conhecimento tambm ajudar voc a identificar a estrutura mais
adequada a ser utilizada em cada situao.
Esperamos que, ao final desta aula, voc seja capaz de:
22
22
05/04/2016 09:00:05
Lgica de programao
112
05/04/2016 09:00:05
FLUXOGRAMA
05/04/2016 09:00:06
Lgica de programao
114
05/04/2016 09:00:06
05/04/2016 09:00:07
Lgica de programao
exibindo aps o clculo, uma mensagem informando o valor obtido e, finalmente, o algoritmo deve permanecer solicitando novos valores para clculo
enquanto o usurio no optar por encerrar a execuo.
Implemente a sua verso para esse pseudocdigo e, depois disso, analise
o algoritmo apresentado aqui comparando as funcionalidades utilizadas.
Figura 5 Exemplo de estruturas de repetio.
05/04/2016 09:00:08
117
05/04/2016 09:00:09
Lgica de programao
Sntese da aula
A estrutura de repetio com varivel de controle ou para, como mais
conhecida.
Nas estruturas anteriores, enquanto e repete, frequentemente difcil
determinar o nmero de vezes que um bloco de instrues ir ser executado.
Esse tipo de lao de repetio (para) difere dos anteriores, pois possui um
nmero pr-determinado de execues do seu bloco de instrues.
Atividades
1. A seguir, exibido o fluxograma que representa um algoritmo para imprimir
na tela a tabuada de multiplicao dos inteiros de 1 at 10. Sabendo que
tambm possvel representar um algoritmo por meio de pseudocdigo,
assinale o algoritmo desenvolvido para o Portugol que melhor representa o
fluxograma.
118
05/04/2016 09:00:10
a) inicio
119
05/04/2016 09:00:10
Lgica de programao
b) inicio
inteiro contador1
inteiro contador2
contador1 <- 0
contador2 <- 0
escrever Tabuada de Somar
contador1 <- 1
repete
contador2 <- 1
enquanto contador2 <= 10 faz
escrever \n\t,contador1,*,contador2,=
,contador1*contador2
contador2 <- contador2 + 1
fimenquanto
escrever \n\n
contador1 <- contador1 + 1
ate contador1 >= 10
fim
c) inicio
inteiro contador1, contador2
escrever Tabuada de Somar
para contador1 de 1 ate 10 passo 1
para contador2 de 1 ate 10 passo 1
escrever \n\t,contador1,*,contador2,=,c
ontador1*contador2
120
05/04/2016 09:00:10
d) inicio
inteiro contador1
inteiro contador2
contador1 <- 0
contador2 <- 0
escrever Tabuada de Somar
contador1 <- 1
repete
contador2 <- 1
repete
escrever \n\t,contador1,*,contador2,=
,contador1*contador2
contador2 <- contador2 + 1
ate contador2 <= 10
escrever \n\n
contador1 <- contador1 + 1
ate contador1 >= 10
fim
2. Sabemos que as estruturas de repetio so utilizadas quando necessitamos repetir um bloco de instrues nenhuma, uma ou diversas vezes.
Considerando os trs modelos de estruturas: enquanto, para e repita...
at, assinale (V) ou (F) para as assertivas a seguir.
I. A estrutura enquanto a mais apropriada para utilizar quando h
a possibilidade de nenhuma vez ser executado o bloco interno do
lao.
II. Ao utilizar para, o bloco interno do lao executado N vezes,
onde N um valor numrico. Para isso o valor de N deve ser
121
05/04/2016 09:00:10
Lgica de programao
122
05/04/2016 09:00:10
05/04/2016 09:00:10
Lgica de programao
FIMSE
c) SE NOTA < 6 ENTAO
ESCREVER Reprovado
SENAO
ESCREVER APROVADO
FIMSE
d) ((3 % 2) * (2^4)) + (10 / 5)
e) PARA contador DE 0 ATE 9 PASSO 1
ESCREVER contador , \t
PROXIMO
f ) N <- 6
g) ENQUANTO contador < 10 FAZ
ESCREVER contador , \t
FIMENQUANTO
I. uma operao de atribuio.
II. Lao de repetio com teste condicional realizado no incio.
III. Desvio condicional composto.
IV. Expresso aritmtica.
V. Desvio condicional simples.
VI. Lao de repetio com iterao pr-definida.
VII.
Expresso lgica.
124
05/04/2016 09:00:10
A seqncia correta :
a) aV; bIV; cIII; dVII; eVI; fII; gI
b) aVII; bV; cIII; dIV; eVI; fI; gII
c) aVII; bVI; cIV; dV; eIII; fI; gII
d) aV; bIV; cVI; dIII; eI; fII; g VII
05/04/2016 09:00:10
Lgica de programao
pode ser uma varivel e ter seu valor modificado internamente no lao. Na
opo III, a afirmativa verdadeira pelo fato de o lao de repetio repita...at
somente executar o teste condicional no fim de sua estrutura. Assim sempre
ser executado pelo menos uma vez, como pode ser observado na pgina 117
em Algoritmo III. A opo IV afirma que o lao de repetio do tipo repita...
at no possui uma expresso relacional em sua estrutura. Essa afirmao
obviamente falsa, pois a condio de parada dessa estrutura definida por
uma expresso relacional. Na opo V, ocorre a afirmao de que enquanto
a estrutura utilizada sempre que se deseja executar as instrues internas ao
lao pelo menos uma vez. Essa afirmao no verdadeira, pois, como j afirmado anteriormente, a estrutura enquanto realiza o teste condicional antes
de executar suas instrues internas. Portanto no a estrutura indicada para
este tipo de situao, j que pode nem executar as instrues internas.
Para a atividade trs, a alternativa correta a (d). A atividade I exige
a anlise de trs algoritmos para verificar se possuem a mesma funcionalidade. Observe que os algoritmos possuem a mesma instruo interna, alm
da instruo necessria sua estrutura (incremento de varivel do teste condicional). Com isso, pode-se atentar apenas aos limites e passo de cada uma
das estruturas. Todas possuem o mesmo passo, 1. Note tambm que todos
possuem o mesmo ponto de partida, 1. Com isso necessrio verificar o
ponto de parada de cada um dos algoritmos. O Algoritmo I possui a condio
de sada quando a varivel cont for maior que num, que o valor do qual se
busca o fatorial. Portanto o Algoritmo I possui os limites 1 e num para seu
lao de repetio. O Algoritmo II utiliza a estrutura enquanto. Observe a
diferena dessa estrutura para a utilizada no Algoritmo I, para...faa. O lao
repetir as instrues internas enquanto a varivel cont, que parte de 1, no
for maior do que a varivel num. Portanto o lao de repetio do Algoritmo
II tambm possui seu trmino em num. Com isso, seus limites so 1 e num
para seu lao de repetio. O Algoritmo III utiliza a estrutura de repetio
repita...at. Note que tambm possui o ponto de sada em 1 e incrementa a
varivel do teste condicional cont at que seja maior que num. Observe que
esse tipo de lao possui seu teste condicional no fim de sua estrutura. Com
isso, a varivel cont obtm um valor maior que num e logo sai do lao sem
que seja repetida a instruo. Portanto sua ltima repetio dada at o valor
de num. Com isso, seus limites tambm so de 1 e num. Para comprovar essa
atividade, recomendvel que utilize o Portugol.
126
05/04/2016 09:00:10
Referncia
FORBELLONE, Andr Luiz Villar; EBERSPCHER, Henri Frederico.
Lgica de programao: a construo de algoritmos e estruturas de dados.
So Paulo: Pearson Prentice Hall, 2005.
127
05/04/2016 09:00:10
Lgica de programao
128
05/04/2016 09:00:10
10
Estruturas de Dados
05/04/2016 09:00:11
Lgica de programao
05/04/2016 09:00:11
Estruturas de Dados
De forma similar aos vetores, o acesso a cada elemento da matriz deve ser
realizado a partir do nome da varivel seguida de um valor inteiro para servir
de ndice para cada dimenso.
10.2 Registros
So estruturas heterogneas compostas de elementos de tipos diferentes.
Cada elemento que faz parte do registro chamado de campo. Inclusive,
cada campo pode ser do tipo registro tambm.
Esse tipo de estrutura permite organizar melhor os dados a serem manipulados, principalmente por permitir agregar dados de uma mesma natureza.
Para entendermos melhor isso, imaginemos um programa que manipule os
seguintes dados sobre os alunos de um curso: o nome do aluno, a idade e o
nmero do seu CPF. Sem o uso de registros, normalmente, cada um desses
dados sobre o aluno seria manipulado em variveis diferentes. Mesmo utilizando o conceito de vetor, ainda assim seria necessrio manipular trs vetores
diferentes. Isso torna a atividade de programao bastante complexa.
Com o uso de registro possvel agregar esses dados em uma estrutura
do tipo registro e declarar um nico vetor desse tipo. Para exemplificar, podemos examinar o seguinte trecho de cdigo na linguagem C:
struct TAluno {
char nome[80];
char cpf[11];
} ;
int idade;
nome: CARACTERE;
131
05/04/2016 09:00:11
Lgica de programao
idade: INTEIRO;
cpf: CARACTERE;
FIM REGISTRO
Nesse trecho de cdigo definida a estrutura do tipo registro chamada
TAluno. Essa estrutura agrega os campos char nome[80] usados para representar um literal com at 80 caracteres que armazena o nome do aluno, int
idade usado para armazenar a idade do aluno, e char cpf[11] usado para
representar um literal de at 11 caracteres que armazena o CPF do aluno. Em
seguida, declarado um vetor com 10 elementos do tipo TAluno.
A vantagem dessa abordagem que o acesso ao elemento alunos[0],
por exemplo, retorna um registro do tipo TAluno contendo todos os seus
campos de uma nica vez. Assim cada campo pode ser facilmente acessado
individualmente por sua descrio como alunos[0].nome, alunos[0].idade
ou alunos[0].cpf.
Um bom programador deve dominar o uso dessas estruturas a fim de
diminuir a complexidade na manipulao dos dados em um programa.
Sntese da aula
Nesta aula discutimos estruturas de dados compostas - vetores, matrizes
e registros. Estes conceitos sero de grande importncia para solucionar problemas mais complexos do dia-a-dia da programao de computadores.
Cada uma destas estruturas tem sua prpria forma de declarao e acesso
permitindo facilidades para o programador quando propem a soluo algortmica para o problema a ser resolvido usando o computador.
Atividades
1. Sobre o uso de variveis e constantes em um algoritmo incorreto
afirmar que:
a) toda informao manipulada diretamente pelo computador armazenada na memria principal (RAM) e as variveis representam
referncias a posies dessa memria;
132
05/04/2016 09:00:11
Estruturas de Dados
05/04/2016 09:00:11
Lgica de programao
dados homogneos por tratar de dados do mesmo tipo. Por fim, a opo (e)
tambm est correta ao trazer a definio de um dado constante.
Na atividade 2, aps analisar os contedos a serem armazenados voc
deve ter concludo que a opo correta a opo (a), pois ela apresenta para
o contedo idade o tipo inteiro (afinal costumamos utilizar valores inteiros
positivos para a contar a passagem dos anos no usamos 3,4 anos de
idade); para o contedo temperatura devemos usar casas decimais, logo o
tipo mais indicado o real; para o nome da cidade precisamos de um literal
ou caractere; para o nmero da carteira de identidade, na verdade, poderamos usar um tipo caractere (isso permitiria armazenar os caracteres de
formatao, como ponto e hfen) ou como inteiro (sem formatao); j para
as notas de um aluno, uma nota normalmente expressa como um valor
real e como ser mais de uma nota (notas), o tipo de dado mais adequado
a esse caso um vetor de real, o que permitiria manipular todas as notas de
um aluno a partir de uma mesma varivel. Tomando como base essas justificativas, voc deveria considerar as demais opes como incorretas, pelos
seguintes motivos: a opo (b) apresenta inadequao para o contedo temperatura e para as notas do aluno; a opo (c) apresenta inadequao para o
nome da cidade; a opo (d) apresenta inadequaes para o nome da cidade
e as notas do aluno; e a opo (e) apresenta inadequaes para o nmero da
carteira de identidade.
Para solucionar a atividade 3, voc j deve saber que o uso de variveis
permite ao programador manipular de forma mais fcil os dados que esto
armazenados na memria. Sem o auxlio de variveis, toda vez que fosse
necessrio algum dado da memria seria necessrio enderear a posio de
memria usando seu endereo fsico em notao hexadecimal. As variveis
levam esse nome em funo do seu comportamento, em que o valor de uma
varivel (na verdade, o contedo da posio de memria por ela referenciada) pode ser alterado vrias vezes ao longo da execuo de um programa.
J um dado do tipo constante no tem o seu valor alterado do incio ao fim
do programa.
Ao realizar as atividades propostas com sucesso, voc alcanou os objetivos desta aula de entender os conceitos de varivel e de constante e suas
utilizaes e de utilizar adequadamente cada tipo de dado disponvel.
134
05/04/2016 09:00:11
Estruturas de Dados
Na prxima aula
Estudaremos a Tcnica de Modularizao, que permite dividir um problema complexo em problemas menores e, com isso, diminuir o tempo de
criao do algoritmo e otimizar a sua soluo. Nessa aula, ser apresentado o
conceito de funo e procedimento e como essas instrues especiais devem
ser utilizadas.
135
05/04/2016 09:00:11
Lgica de programao
136
05/04/2016 09:00:11
11
Modularizao
Introduo
At aqui temos discutido a construo de algoritmos como
uma soluo linear que aborda um problema na sua forma geral e
define um conjunto de instrues a serem executadas para alcanar
uma soluo. Todavia, at o momento, no consideramos a complexidade do problema ou o tamanho (quantidade de instrues) que
um algoritmo pode ter.
Nos vrios exemplos mostrados nesse caderno, abordamos,
por motivos didticos, algoritmos e problemas simples. Porm, na
vida prtica, encontramos problemas de complexidade muito mais
elevada e que exigem solues algortmicas mais robustas e, conseqentemente, maiores.
No cotidiano de um programador, comum a construo de
algoritmos que envolvam centenas ou milhares de instrues. Fica
bvio, para esses casos, que a representao de um algoritmo nessa
05/04/2016 09:00:12
Lgica de programao
escala usando fluxograma fica invivel e, mesmo usando pseudocdigo, teremos dificuldade em gerenciar um conjunto to grande de instrues.
Nesta aula, fundamental que voc j domine a criao de algoritmos
e como represent-los na forma de pseudocdigo, pois nesta aula so apresentados e comentados exemplos nessa forma. Alm disso, necessrio que
voc tenha apreendido o conceito de variveis. Portanto retome o contedo
j estudado nas aulas anteriores se ainda houver dvidas!
Esperamos que, ao final desta aula, voc seja capaz de:
22
22
22
11.1 Modularizao
Uma soluo para problemas complexos a sua diviso sucessiva em
problemas menores a fim de obter uma soluo de custo mnimo. Essa idia
conhecida como Dividir para Conquistar o princpio bsico da tcnica de
anlise estruturada, chamada de Modularizao. Nessa tcnica, o problema
maior dividido em problemas menores, chamados de mdulos.
O segredo de uma boa modularizao est em identificarmos claramente
que mdulos devem existir no sistema. Devemos atribuir uma nica funo
bem definida a cada mdulo, minimizar as ligaes entre os mdulos e maximizar a coeso interna de cada mdulo.
Essa tcnica apresenta inmeras vantagens para a programao. Vejamos.
1. Facilita a verificao de erros: pois , em princpio, simples identificar o mdulo responsvel pelo erro, reduzindo-se assim o tempo
gasto na identificao de erros.
2. Permite testar os mdulos individualmente, em vez de se testar apenas o programa completo, o que reduz a complexidade do teste e
permite comear a testar antes de se ter completado o programa.
138
05/04/2016 09:00:12
Modularizao
05/04/2016 09:00:12
Lgica de programao
que receba um valor inteiro e retorne um literal contendo esse valor com um
nmero especfico de zeros esquerda. A partir de sua definio, poderamos
fazer uso dessa funo sempre que necessrio, sem ter de repetir o seu cdigo.
A seguir mostrado um algoritmo, representado em pseudocdigo, que
demonstra o uso de funes e procedimentos.
ALGORITMO Funcao_Procedimento;
FIM SE
FIM PROCEDIMENTO
INICIO
LEIA Valor1;
LEIA Valor2;
SE MAIOR(Valor1, Valor2) ENTAO
VERIFICA (Valor1);
SENAO
VERIFICA (Valor2);
140
05/04/2016 09:00:12
Modularizao
FIM SE
FIM
11.3 Parmetros
Parmetros so as variveis listadas entre parnteses no cabealho da
definio de uma funo ou procedimento. So variveis locais, sendo visveis
apenas dentro da funo ou rotina, embora com uma particularidade: so
automaticamente inicializadas com o valor dos argumentos respectivos em
cada chamada da funo ou procedimento.
As variveis locais (parmetros de funes includos) existem em memria
apenas enquanto o bloco de instrues em que esto inseridas estiver sendo
executado, sendo assim criadas e destrudas muitas vezes ao longo de um
programa a cada nova invocao da funo ou procedimento, por exemplo.
No exemplo mostrado anteriormente, temos as variveis A e B, do tipo
inteiro, como parmetros da funo MAIOR (A,B: inteiro). Essas variveis
so locais a essa funo e, por isso, s podem ser referenciadas dentro dela. Ao
trmino da funo, essas variveis so removidas da memria.
11.4 Argumentos
Argumentos so as expresses listadas entre parnteses em uma invocao ou chamada de uma funo ou procedimento. O seu valor utilizado
para inicializar os parmetros da funo ou procedimento invocado.
Na invocao da funo MAIOR, mostrada no exemplo discutido anteriormente, e descrita pela instruo MAIOR(Valor1, Valor2), as variveis
Valor1 e Valor2 representam argumentos que so passados para a funo. Na
141
05/04/2016 09:00:12
Lgica de programao
05/04/2016 09:00:13
Modularizao
Sntese da aula
Nesta aula, estudamos o conceito de Modularizao. Esse conceito
de fundamental importncia no desenvolvimento de programas de grande
escala. Foram apresentados e discutidos ainda os principais conceitos relacionados ao uso de funes e procedimentos.
Atividades
1. Sobre o uso da tcnica de modularizao, com o uso de funes e procedimentos, em um algoritmo, incorreto afirmar que:
a) facilita a verificao de erros;
b) dificulta os testes do programa, uma vez que cada mdulo foi programado por uma equipe diferente;
c) permite fazer a manuteno do programa (correo de erros, melhoramentos, etc.) mdulo a mdulo e no no programa todo;
d) permite o desenvolvimento independente dos mdulos;
e) permite a reutilizao do cdigo desenvolvido.
2. A partir da anlise do algoritmo mostrado a seguir, incorreto afirmar que:
ALGORITMO A2;
VAR numero: inteiro;
FUNCAO E_PAR (X: inteiro)
SE (X % 2 = 0) ENTAO
143
05/04/2016 09:00:13
Lgica de programao
RETORNE verdadeiro;
SENAO
RETORNE falso;
FIM SE
FIM FUNCAO
INICIO
LEIA (numero);
SE E_PAR(numero) ENTAO
SENAO
FIM
a) a funo E_PAR no possui parmetros;
b) a varivel nmero uma varivel global;
c) a varivel X local funo E_PAR;
d) a funo E_PAR possui um argumento inteiro;
e) a invocao de funo E_PAR (numero) ir devolver um valor lgico e
por isso diretamente usado como teste condicional para a instruo Se.
3. Com base no que foi estudado nesta aula, diferencie um argumento de
um parmetro.
4. Escreva um programa que determine o quadrado de um nmero inteiro
n. O nmero n deve ser pedido ao usurio por meio de uma funo
chamada LERINTEIRO; e o seu quadrado dever ser calculado por
meio de outra funo, chamada QUADRADO.
144
05/04/2016 09:00:13
Modularizao
numero: inteiro;
145
05/04/2016 09:00:13
Lgica de programao
RETORNE (X*X);
FIM FUNCAO
FUNCAO LERINTEIRO
VAR N: inteiro;
LEIA (N);
RETORNE (N);
FIM FUNCAO
INICIO
numero LERINTEIRO;
IMPRIMA (O quadrado do numero + numero
+ +
QUADRADO(numero));
FIM
Se realizou as atividades com sucesso, voc est apto a entender os principais conceitos relacionados ao uso de funes e procedimentos; criar de
forma correta funes em seus algoritmos, utilizando-as, e criar de forma
correta procedimentos em seus algoritmos, utilizando-os.
146
05/04/2016 09:00:13
Referncias
05/04/2016 09:00:14
Lgica de programao
148
05/04/2016 09:00:14