Académique Documents
Professionnel Documents
Culture Documents
Cuiab-MT
2014
Campus Porto Velho Zona Norte
Coordenao Institucional
Carlos Rinaldi
Direo-Geral
Miguel Fabrcio Zamberlan
Designer Educacional
Neusa Blasques
Ilustrao
Tatiane Hirata
Diagramao
Tatiane Hirata
Projeto Grfico
Rede e-Tec Brasil / UFMT
Lgica de Programao - Informtica para Internet
L131l
CDU 004.42
Indicao de cones
Os cones so elementos grficos utilizados para ampliar as formas de
linguagem e facilitar a organizao e a leitura hipertextual.
Ateno: indica pontos de maior relevncia no texto.
Contents
Indicao de cones
Apresentao da Disciplina
11
Sumrio
13
Aula 1. Lgica
15
15
16
17
Aula 2. Algoritmos
21
21
22
27
28
33
34
43
5.1 Introduo
43
5.2 Variveis
43
45
46
Apresentao da Disciplina
A disciplina de Lgica de Programao compreende o fundamento terico e
prtico necessrio para desenvolver programas, apresentando as principais
estruturas de dados e de linguagem necessrias para a resoluo de problemas computacionais.
As aulas esto estruturadas de forma a capacit-lo(a) na construo de algoritmos e programas a partir do entendimento da lgica para resoluo de
problemas de complexidade limitada.
O objetivo da disciplina faz-lo(a) compreender os mecanismos lgicos e
matemticos da programao, relacionando problemas e elaborando solues atravs do uso de metodologias e ferramentas que envolvam os elementos bsicos da construo de algoritmos e programas de computador.
Para alcanar esse objetivo, a disciplina foi estrutura em dez aulas. A primeira aborda a lgica no dia a dia e na informtica. Na segunda, trataremos dos
algoritmos e as formas de represent-lo. Na terceira aula, mostraremos as
ferramentas usadas para a criao dos algoritmos. J na quarta aula, discorreremos sobre a estrutura bsica de um algoritmo, em pseudocdigo com
VisualG, e em Java com Eclipse. Na sequncia, veremos o conceito de variveis, sua nomenclatura e os tipos primitivos de dados. Na sexta aula, estudaremos os conceitos de operadores e expresses, como empregar operadores
aritmticos, relacionais e lgicos para criar expresses complexas e, finalmente, nas quatro ltimas aulas, trataremos das estruturas de sequncia,
deciso, seleo e repetio.
Por fim, podemos dizer que um programa nada mais do que instrues para
armazenar, processar e recuperar dados em computador, e as tcnicas usadas
para escrever essas instrues influi diretamente na qualidade do programa.
essencial que voc dedique uma parcela significativa de seu tempo para
assimilar todo o contedo abordado, pois esta disciplina a base para as
prximas disciplinas relacionadas a programao, e mais ainda, a porta de
entrada do mundo das Tecnologias de Informao e Comunicao.
Bons estudos!
11
12
Lgica de Programao
Sumrio
Aula 1. Lgica
15
15
16
17
Aula 2. Algoritmos
21
21
22
27
3.1 Introduo
27
28
33
4.1 Introduo
33
34
43
5.1 Introduo
43
5.2 Variveis
43
45
46
51
6.1 Introduo
51
52
55
61
7.1 Introduo
61
62
67
13
71
71
71
83
9.1 Introduo
83
83
89
10.1 Introduo
89
90
99
Palavras Finais
101
Guia de Solues
102
Referncias
120
Obras Consultadas
120
Bibliografia Bsica
121
122
14
Aula 1. Lgica
Objetivos:
conceituar raciocnio lgico;
diferenciar argumentos indutivos de argumentos dedutivos; e
utilizar lgica no desenvolvimento de programas.
Caro(a)estudante,
Usamos a razo e o senso comum, mesmo que intuitivamente, na execuo
das tarefas do dia a dia, seja nas tomadas de deciso ou na resoluo de problemas. No decorrer da aula, iremos apresentar os conceitos fundamentais
por trs dessa razo, que a partir de agora chamaremos de lgica. Veremos
tambm como aplic-la na resoluo de problemas computacionais.
Aula 1 - Lgica
15
Fonte: www.ahistoria.com.br
16
Lgica de Programao
Aula 1 -Lgica
17
Ou,
Para X = Pedro e Y = sortudo, temos:
Pedro passou no vestibular.
Todos que passam no vestibular so sortudos.
Logo, Pedro sortudo.
Resumo
Voc teve o primeiro contato com os conceitos de lgica e constatou que ela
a base para a resoluo de problemas computacionais. Vimos, tambm,
que, para realizarmos uma atividade com sucesso (resoluo de um problema), executamos vrios passos de acordo com uma ordem, seguindo um
raciocnio lgico, raciocnio esse que pode ser representado formalmente
para resolver outros problemas semelhantes.
Atividades de aprendizagem
1. A partir do que leu nesta aula, explique com suas palavras a importncia
da lgica para a Informtica.
2. D um exemplo de um argumento indutivo cujo resultado verdadeiro e
de outro que seja falso.
3. D um exemplo de um argumento dedutivo diferente do que foi mostrado nesta aula.
4. De acordo com os silogismos a seguir, assinale a afirmao que apresente
uma concluso vlida:
I Gatos so mamferos. Mamferos no botam ovo. Logo:
a) Todos os mamferos so gatos.
18
Lgica de Programao
Aula 1 -Lgica
19
Estado inicial
Estado final
Fonte: autores
Caro(a) estudante,
Finalizamos a nossa primeira aula. Nela, trabalhamos conceitos importantes
para o entendimento das prximas. Esperamos que esteja motivado(a) para
seguir em frente. Dando continuidade aos estudos, na prxima aula trataremos de um assunto muito importante para a lgica de programao: os
algoritmos. Vamos l!
20
Lgica de Programao
Aula 2. Algoritmos
Objetivos:
conceituar algoritmos;
identificar os trs tipos de algoritmos estudados, suas vantagens e desvantagens; e
escrever algoritmo nas formas de descrio narrativa, fluxograma e pseudocdigo.
Caro(a) estudante,
A base do desenvolvimento dos programas modernos o algoritmo. Nesta
aula, voc ir conhecer os principais conceitos relacionados a ele e ter a
oportunidade de aprender a resolver os mais diversos problemas computacionais. Para tanto, dever aprender a pensar de forma algortmica, isto ,
pensar em ordem, da maneira que vimos na aula anterior.
Aula 2 - Algoritmos
21
22
Lgica de Programao
2.2.2 Fluxograma
O fluxograma uma representao grfica de um algoritmo. Utiliza alguns
smbolos pr-definidos, mostrados na Tabela 2.1, para identificar os passos a
serem seguidos para chegar ao resultado.
TABELA 2.1 - Conjunto de smbolos utilizados no fluxograma
Indica o incio e o fim do algoritmo.
Aula 2 - Algoritmos
23
Vantagens:
A lgica usada mais precisa no dando margem a mltiplas interpretaes,
e consequentemente, fica mais fcil a migrao do algoritmo para uma linguagem de programao real.
Desvantagens:
muito mais trabalhoso fazer um desenho do que simplesmente escrever,
mesmo considerando o auxlio de programas especializados. Alm disso, a
representao grfica dos algoritmos tende a ficar muito extensa e, consequentemente, mais difcil de ser analisada e modificada (imagine refazer
todo o desenho por causa de uma mudana na lgica).
Exemplo:
Vamos descrever o algoritmo que some dois
nmeros na forma de fluxograma:
Fonte: Autores.
24
Lgica de Programao
2.2.3 Pseudocdigo
O pseudocdigo descreve a soluo de um problema algortmico de maneira
textual e por meio de regras predefinidas. Ele utiliza uma linguagem estruturada que lembra o Pascal, uma linguagem de programao que j foi muito
usada.
A palavra pseudocdigo significa falso cdigo. Alguns autores chamam
o pseudocdigo de portugus estruturado ou portugol, bem sugestivo,
j que podemos consider-lo como uma linguagem intermediria entre a
linguagem natural e a de programao.
Vantagens:
Alm de a sintaxe ser bem prxima da linguagem natural, a migrao de
um pseudocdigo para uma linguagem de programao quase que imediata.
Desvantagens:
Pseudocdigos, assim como linguagens de programao, possuem algumas
regras (mesmo que sejam bem mais simples do que a de uma linguagem de
programao completa). necessrio aprend-las e aplic-las corretamente.
Exemplo:
Vamos descrever um pseudocdigo que some dois nmeros:
ALGORITMO
DECLARE N1, N2, SOMA: NUMRICO;
ESCREVA Digite dois nmeros;
LEIA N1, N2;
SOMA N1 + N2;
ESCREVA O resultado da soma igual a: , SOMA;
FIM_ALGORITMO.
Resumo
No desenvolvimento desta aula, voc teve a oportunidade de aprender o
que um algoritmo. Discorremos sobre os tipos de algoritmo. Os trs mais
utilizados so a descrio narrativa, o fluxograma e o pseudocdigo. Mostramos tambm as vantagens e as desvantagens de cada um desses algoritmos.
Esperamos que voc esteja apto a escrev-los ou desenh-los, mesmo sem
Aula 2 - Algoritmos
25
Atividades de aprendizagem
1. Descreva qual a principal funo dos algoritmos.
2. Faa um algoritmo na forma de descrio narrativa que descreva os
passos de uma pessoa para abrir um documento do Word armazenado no
seu e-mail.
3. Faa um algoritmo na forma de fluxograma que mostre o salrio total de
um funcionrio, dado o salrio que ele recebe, o nmero de filhos que possui
e sabendo que, para cada filho, ele recebe uma ajuda de custo de R$ 32.
4. Faa um algoritmo na forma de pseudocdigo que calcule o cubo de
um determinado nmero informado.
Caro(a) estudante,
Esperamos que tenha achado interessante o estudo dos algoritmos, pois
eles facilitam muito a soluo de alguns problemas. Vamos continuar? Ainda
temos muito assunto legal para estudar. Na prxima aula, abordaremos as
ferramentas de criao de algoritmos.
26
Lgica de Programao
Caro(a) estudante,
Atualmente existem centenas, seno milhares de programas especializados
em criar outros programas. Eles so chamados de ambiente integrados de
desenvolvimento (do ingls: Integrated Development Environment IDE).
Iremos utilizar em nossas aulas uma ferramenta bem simples, o VisualG,
que no chega a ser uma IDE completa, mas o suficiente para aprender e
exercitar a criao de algoritmos.
Veremos que, para cada exemplo dado em VisualG, teremos o equivalente
em Java, que uma linguagem de programao completa e tem vrias IDEs
profissionais que do suporte a essa linguagem.
3.1 Introduo
Qualquer dispositivo eletrnico que manipula informaes, seja de pequeno
porte, como um celular; de mdio porte, como um computador desktop; ou
de grande porte, como os servidores de datacenters, todos eles executam
basicamente trs aes:
entrada de dados;
processamento de dados;
sada de dados.
27
Como esses dispositivos so controlados essencialmente por algoritmos especficos para cada cenrio ou funo, podemos dizer que um algoritmo
composto por comandos de entrada de dados, comandos de processamento
de dados e comandos de sada de dados.
Mas o que seria, na prtica, entrada, processamento e sada de dados?
Entrada de dados quando o computador recebe dados do mundo
externo, como, por exemplo, do teclado, do microfone, da webcam ou
de muitos outros. O algoritmo armazena essas informaes na memria
para posterior processamento.
Processamento de dados o momento em que o algoritmo que est
rodando em um computador recebe os dados e os transforma de acordo
com uma lgica predefinida, gerando, assim, algum tipo de informao que pode ser utilizado posteriormente, tanto pelo prprio algoritmo
quanto pelo mundo externo.
Sada de dados quando o computador envia os dados resultantes do
processamento de dados para o mundo externo. O computador pode
enviar essa informao de diversas maneiras, tais como mostrar no monitor, imprimir no papel, enviar o udio pela caixa de som, gravar no disco
rgido, entre muitos outros.
Em resumo, o algoritmo uma sequncia de passos para se chegar a um
objetivo, sendo que esses passos, quando executados em um computador,
podem ser chamados de comandos ou instrues, os quais podem ser de
entrada, processamento ou sada de dados.
Agora que sabemos o suficiente acerca de algoritmos, vem a pergunta:
como cri-los de maneira eficiente?
28
Lgica de Programao
29
30
Lgica de Programao
Perceba que a interface do Eclipse bem mais complexa, com muitas opes e janelas, isso porque o Eclipse uma ferramenta de uso profissional
que permite desde a criao de programas bem simples at programas para
Web, celulares, tablets e muitos outros.
A priori, para voc conseguir trabalhar com o Eclipse, vamos descrever apenas algumas reas do mesmo:
Menu de comandos tem todas as opes disponveis no programa,
desde salvar e recuperar projetos em Java at execut-los e test-los.
Botes de atalho como o prprio nome j diz, so atalhos para os
principais comandos do menu.
Resumo
No decorrer da aula, tratamos das ferramentas que iremos usar para criar
nossos algoritmos ao longo da disciplina. Desenvolvemos algoritmos com
pseudocdigos usando o visual G e em Java com o Eclipse, uma ferramenta
de uso profissional que permite desde a criao de programas bem simples
at os mais complexos.
Agora, vamos s atividades.
Atividades de aprendizagem
1. Alm das IDEs citadas na aula, pesquise mais quatro usadas para programao e identifique as linguagens que elas utilizam.
2. Instale as IDEs citadas nesta aula e escreva um algoritmo em cada uma
31
delas (pode ser uma variao dos que foram utilizados como exemplo).
3. Salve e recupere os algoritmos criados no exerccio anterior. Analise as
estruturas das pastas e dos arquivos criados por cada uma das plataformas
(pseudocdigo com VisualG e Java com Eclipse).
4. D sua opinio sobre escrever algoritmos em pseudocdigos e em uma
linguagem de programao verdadeira. Discorra sobre sua experincia nas
atividades anteriores.
Caro(a) estudante,
Ento, gostou do VisualG e do Eclipse? Com esses dois programas, voc ir
fazer coisas incrveis. Na Aula 4, mostraremos as estruturas bsicas de um
algoritmo. Continue estudando com afinco nossas aulas. At a prxima!
32
Lgica de Programao
Objetivo:
criar uma estrutura bsica para desenvolver um algoritmo em
pseudocdigo e um algoritmo em Java.
Caro(a) estudante,
A partir de agora, vamos comear a criar nossos prprios algoritmos, espao
onde acontece toda a mgica do mundo da programao. Mas precisamos
primeiramente entender como funciona a estrutura bsica do mesmo, que
muito simples e fcil, para depois test-los nos ambientes integrados de
desenvolvimentos vistos na aula passada.
4.1 Introduo
Os algoritmos so feitos para serem executados por mquinas, e sabemos
que as mquinas ainda esto muito longe de ter uma inteligncia comparada do ser humano.
Voc, ao estabelecer uma conversa com outra pessoa, usando a lngua portuguesa, pode no seguir todas as regras gramaticais que ela exige, mas,
mesmo assim, o dilogo acontece.
Veja o exemplo:
33
34
Lgica de Programao
Nome no vlido
Nome vlido
Calcular mdia
CalcularMedia
VerificarMaiorNota
Verificar endereo
Verificar-Endereo
VerificarEndereco
2NmerosSoma
Soma2Numeros
Calcular $ da venda
Calcular$Venda
CalcularValorVenda
AlMundo
AloMundo
Fonte: Autores.
Java
algoritmo "AloMundo"
Fonte: Autores.
Pseudocdigo
algoritmo "AloMundo"
inicio
fimalgoritmo
Fonte: Autores.
Escopo do
algoritmo
Java
public class AloMundo
{
}
Escopo do
algoritmo
35
Java
public class AloMundo
{
public static void main(String[] args)
{
System.out.print(Al mundo!);
}
}
Fonte: Autores.
36
Lgica de Programao
A primeira define o nome classe, mas esse conceito de classe s ser visto
na disciplina de Programao Orientada a Objetos. Neste momento, vamos
entender que seja apenas a identificao do programa, no caso AloMundo.
A segunda estrutura um mtodo cujo conceito tambm ser abordado
a fundo somente em Orientao a Objetos. Neste momento, vamos considerar como sendo um subprograma, isto , um programa dentro de outro
programa.
Ento, no programa AloMundo em Java, mostrado na Tabela 4.4, temos um
subprograma chamado main (principal, em ingls) interno a ele e dois escopos distintos, j que ambos tm um incio e fim (delimitados por { }).
considerada uma boa prtica de programao que, ao se definir um escopo interno a outro, como aconteceu no exemplo, dar um espaamento direita (3 espaos ou mais) para deixar explcito que a estrutura main pertence
ao escopo de class. Isso o que chamamos de indentao:
TABELA 4.5 - Escopos e indentao em um cdigo Java
Escopo do
programa
AloMundo
Escopo do
subprograma
Main
Fonte: Autores.
4.2.4 Comentrios
Imagine que voc tenha desenvolvido um algoritmo bem complexo h um
ano, e, por acaso, voc precisa us-lo para resolver outro problema. Se o algoritmo no estiver documentado, voc certamente ter um trabalho enorme em compreend-lo novamente, perdendo assim um tempo precioso.
Mas, caso voc o tenha documentado, ser possvel identificar o que ele faz,
as estruturas de programao que foram usadas e o porqu, entre muitas
outras informaes teis acerca dele, de suas alteraes (histrico) e dos
autores do mesmo.
Uma das maneiras mais simples (mas no a nica) de documentar seu c-
37
38
Lgica de Programao
Fonte: Autores.
Fonte: Autores.
Como foi dito antes, o pseudocdigo s usa um tipo de estrutura de comentrios, o //, mas o Java apresenta trs tipos, com finalidades distintas, o //, /*
*/e o /** */.
Em relao s cores usadas pelos comentrios, que so diferentes no VisualG
(verde) e no Eclipse (cinza), apenas a maneira como o ambiente integrado
de desenvolvimento trata determinados tipos de estruturas dentro do cdigo. Esse tipo de configurao pode ser mudado pelo programador.
Resumo
Voc acaba de adquirir novos conhecimentos, pois, nesta aula, apontamos
como definir um algoritmo. Vimos que, para criar um algoritmo, precisamos
dar um nome a ele dependendo do seu objetivo, e que esse nome deve estar
de acordo com os padres internacionais de nomenclatura de smbolos para
39
Atividades de aprendizagem
1. Crie um algoritmo que fornea a seguinte sada na tela do computador
(seria interessante para seu aprendizado, criar o algoritmo tanto em pseudocdigo quanto em Java):
+----------------------------------+
| Programa Al Mundo
|
+----------------------------------+
| Seja bem-vindo ao maravilhoso
|
| mundo da programao.
|
|
|
| Aproveite!!!
|
+----------------------------------+
2. Documente o cdigo criado acima usando comentrios.
3. Baseado(a) nas funes de algoritmos descritas abaixo, determine o possvel nome para cada um deles:
Funo do algoritmo
Nome
40
Lgica de Programao
Caro(a) estudante,
Como se sentiu criando e executando seu primeiro programa? Na prxima
aula, trataremos das variveis e dos tipos de dado. Esperamos voc l!
41
Objetivos:
conceituar varivel e tipos de dados;
diferenciar dado de informao;
aplicar as regras para a nomenclatura de variveis; e
identificar os tipos de dados primitivos existentes e utiliz-los
em algoritmos, seja em pseudocdigo, seja em Java.
Caro(a) estudante,
Nesta aula, veremos um conceito primordial para o processamento de dados, que o de variveis. Vamos entender os mecanismos de funcionamento
das variveis nas linguagens de programao, mostrar como dar nome a elas
e definir o tipo de dado que elas armazenam. Tambm vamos demonstrar o
uso de variveis tanto em pseudocdigo quanto em Java.
5.1 Introduo
Antes de iniciar os estudos sobre variveis, precisamos entender o conceito
de dado na computao. Segundo Puga e Rissetti (2009), dados so valores
que sero utilizados pelo algoritmo para a resoluo de um problema. Esses
valores podem ser fornecidos pelo usurio atravs de dispositivos de entrada
de dados, ou originados a partir de outros programas (inclusive ele prprio).
5.2 Variveis
Os dados de um algoritmo, para serem utilizados e processados, precisam
estar previamente armazenados na memria do computador. A varivel ento seria o nome dado a um espao da memria que contm o dado a ser
utilizado pelo algoritmo.
43
Quando usamos uma varivel, na verdade, estamos buscando aquela informao da memria e passando-a para o processador do computador, para
que este realize as operaes necessrias com aquele dado.
Podemos afirmar, ento, que as variveis so utilizadas para representar valores genricos, que podero ser acessados e modificados de acordo com a
lgica do algoritmo.
Proposta de nome
Nome
Nomenclatura vlida
Endereo de um cliente
endereo
Saldo da conta
contaSaldo
Nome do 2 dependente
2dependente
Email do funcionrio
Nome invlido, j que no pode ter caracteres especiais, no caso o -. O certo poderia
ser: email ou apenas mail.
A nota de um aluno
Situao
Fonte: Autores.
44
Lgica de Programao
Exemplo de dado
00000000
10010101
Varivel X
11000010
Varivel Z
00000000
11111111
...
...
1.073.741.824 bytes
ou
1 Gbyte
10101010
Exemplo de nomenclatura
Varivel Y
Fonte: Autores.
45
Em Java
char
String
Lgico
byte
short
Inteiro
Real
Capacidade
Armazena um nico caractere
int
long
float
double
boolean
Fonte: http://docs.oracle.com/javase/7/docs/.
5.4.1 Pseudocdigo
Em pseudocdigo:
A declarao de variveis deve ser feita antes de se iniciar o algoritmo;
46
Lgica de Programao
Exemplos
var
nome: caractere
idade: inteiro
salario: real
casado: logico
Fonte: autores
5.4.2 Java
Em Java:
No existe uma palavra especfica para definir a declarao de uma varivel. Uma varivel pode ser criada em qualquer parte do cdigo, mas as
boas prticas de programao recomendam que as variveis principais
sejam criadas anteriormente e documentadas;
Ao se declarar uma varivel, o tipo de dado vem antes do nome da varivel;
O nome da varivel deve seguir as regras de nomenclatura explicadas
anteriormente;
possvel declarar diversas variveis em uma linha, desde que sejam separadas por ponto e vrgula;
47
Exemplos
String nome;
byte idade;
float salario;
boolean casado;
int populacao, rebanho;
double resultado; int dias;
Fonte: autores
Resumo
Acabamos de estudar o conceito de variveis e tipos de dado, primordiais
para a elaborao de algoritmos. Juntamente com eles, mostramos como
nomear uma varivel, distinguir os tipos de dados primitivos existentes e,
principalmente, como us-los em algoritmos, seja em pseudocdigo, seja
em Java.
Vamos praticar!
Atividades de aprendizagem
1. Assinale os nomes de variveis vlidas e invlidas. Quando invlida, informar o porqu:
a) XXX
b) a123
c) (A)
d) NOME
e) #66
f) dia/ano/ms
48
Lgica de Programao
g) 1abc
h) Ol Pessoal
i) a.b
j) c*d
2. Baseado(a) na representao da informao do que ser armazenado em
uma varivel, sugira um nome para a mesma e para o tipo de dado. Para
cada um, use a sintaxe do pseudocdigo e do Java:
O que ser armazenado?
Sintaxe pseudocdigo
Sintaxe Java
O salrio de um funcionrio
A nota e a mdia de um aluno
Os dias de atraso de uma prestao
O CPF de uma pessoa
Se a famlia tem casa prpria
Uma carta
O endereo completo do cliente
Se o produto novo ou usado
Caro(a) estudante,
Parabns! Esta foi a quinta aula da disciplina. Esperamos ter contribudo
para seu aprendizado. Na prxima aula, abordaremos os operadores e expresses que envolvem as variveis. No perca!
49
Objetivos:
reconhecer operadores aritmticos, relacionais e lgicos;
empregar corretamente esses operadores;
distinguir expresses aritmticas de expresses lgicas; e
criar e resolver expresses aritmticas e lgicas.
Caro(a) estudante,
O uso de expresses matemticas e lgicas muito importante para se resolver determinados problemas algortmicos. As expresses so formadas
por valores, variveis (operando) e operadores. Vamos explicar como criar
essas expresses, definir os operandos e os operadores em um algoritmo e,
principalmente, como analisar previamente tais expresses.
6.1 Introduo
Um processador basicamente uma mquina que processa instrues de
armazenamento e recuperao de valores, faz clculos matemticos e efetua
comparao de valores.
Mas, para dizer ao computador como executar essas instrues necessrio
utilizar operadores especficos para criar expresses que possam ser calculadas pelo processador.
A seguir, iremos apresentar todos os tipos de operadores e como us-los
para formar expresses.
51
Atribuio em Java
String nome;
byte idade;
float salario;
boolean casado;
int populacao, rebanho;
double resultado; int dias;
nome = "Joo & Silva";
idade = 40;
salario = 620.37;
casado = true;
populacao = 1200; rebanho = 80;
resultado = 8.5; dias = 10;
Fonte: autores
52
Anlise de Sistemas
O uso de aspas duplas serve para delimitar um texto, que pode ter espaos
ou caracteres especiais. Usar um delimitador de texto uma prtica comum
nas linguagens de programao. No caso do Pascal so usadas as aspas
simples.
Por que no uso aspas no nmero?
Se voc usar aspas no nmero, o computador vai entender que um texto e
no um nmero, dois tipos de dado completamente diferentes.
Por que o salrio tem um ponto (.) e no uma vrgula (,) no nmero?
Geralmente as linguagens de programao usam a lngua inglesa como
base, e, l, o caractere que define o decimal o ponto e no a vrgula.
O que aconteceria se tentasse atribuir um texto a um nmero ou
vice-versa?
Variveis de um tipo de dado s devem receber valores daquele tipo. Na
maioria das linguagens de programao existem comandos que permitem
converter um tipo para outro, por exemplo, converter um texto em um nmero e vice-versa (ns iremos ver isso mais adiante).
Existem linguagens de
programao que possuem o
conceito de variveis dinmicas,
isto , podem receber valores de
diversos tipos fazendo, inclusive,
a converso automtica de um
para outro. Entretanto, via de
regra, recomendado definir
tipos nas variveis. Linguagens
que obrigam a definio de tipos
em variveis so chamadas de
fortemente tipificadas.
Exemplo de expresso
Funo
a + b
Soma o valor de a e b
a - b
a * b
Multiplica a por b
a / b
Divide a por b
mod
a MOD b (pseudocdigo)
a % b (Java)
53
++
--
Fonte: autores
Nem todos os operadores aritmticos podem ser representados por um smbolo em linguagens de programao. Funes como exponenciao, raiz,
seno, cosseno, tangente, entre muitos outros, so definidas por instrues
especficas em cada linguagem.
Exemplo de expresso
Funo
>
a > b
>=
a >= b
<
a < b
<=
a <= b
a = b (pseudocdigo)
a == b (Java)
<>
a <> b (pseudocdigo)
a != b (Java)
Fonte: autores
54
Lgica de Programao
Exemplo de expresso
Funo
a E b (pseudocdigo)
a && b (Java)
OU
a OU b (pseudocdigo)
a || b (Java)
NO
NAO a (pseudocdigo)
!a (Java)
Fonte: autores
55
Operador aritmtico
Operador lgico
NO
MOD
OU
Fonte: autores
Operadores
Parnteses
Operadores aritmticos
Operadores relacionais
Operadores lgicos
Fonte: autores
56
Lgica de Programao
EXEMPLO 3
(3 + 3) * 2 <= 9 E (3 + 2 <= 15) OU 15 MOD 3 = 0
6 * 2 <= 9 E (3 + 2 <= 15) OU 15 MOD 3 = 0
6 * 2 <= 9 E (5 <= 15) OU 15 MOD 3 = 0
6 * 2 <= 9 E falso OU 15 MOD 3 = 0
12 <= 9 E falso OU 15 MOD 3 = 0
12 <= 9 E falso OU 0 = 0
falso E falso OU 0 = 0
falso E falso OU verdadeiro
falso OU verdadeiro
verdadeiro
EXEMPLO 4
Os conceitos de operadores, operando e expresses sero de suma importncia para a elaborao de algoritmos mais complexos, que preveem inmeras possibilidades de execuo dependendo de cada caso analisado. Vamos ao resumo.
Resumo
Nesta aula, estudamos os conceitos de operadores, operandos e expresses,
que podem ser aritmticas, relacionais e lgicas, e o mais importante: mostramos como resolv-las. Agora sua vez praticar! Vamos l!
57
Atividades de aprendizagem
1. O que operando, operador e uma expresso? Exemplifique.
2. Quais os tipos de expresso existentes? D um exemplo de cada uma.
3. Sabendo que a = 2, b = 5 e c = 3, calcule o valor resultante das seguintes
expresses:
a) b * 2 a * c
b) b + a * 2 a + c * 3
c) (b + a) * (2 a) + c * 3
d) (b + a) * ((2 a) + c) * 3
e) (c + a * a a + 1) / (c * b * a + c a * c)
4. Sabendo v = verdadeiro e f = falso, calcule o valor resultante das seguintes
expresses:
a) v E f OU f E v
b) (v E f) OU (f E v)
c) (NO (v E f)) E (f E v)
d) NO ((v E f) OU (f E v))
e) NO ((NO(v E f)) E (NO(f E v)))
5. Sabendo que a = 1, b = 2 e c = 3, demonstre a execuo passo a passo
da seguinte expresso:
NO (b * c <> 8 OU ((a * c) - a <= c * c / a)) OU (b MOD a
= 1 E 4 MOD a = 0)
58
Lgica de Programao
Caro(a) estudante,
Finalizamos mais uma aula da disciplina Lgica de Programao.
Na prxima, abordaremos as estruturas sequenciais.
59
Objetivos:
criar uma estrutura sequencial em um algoritmo; e
reconhecer e usar corretamente os comandos de entrada e de
sada.
Caro(a) estudante,
Finalmente lhe ser oportunizada a criao de um programa completo,
usando variveis, atribuindo e lendo seus respectivos valores, definindo expresses aritmticas e lgicas e, por fim, voc aprender a estruturar sequencialmente um algoritmo em VisualG e Java, a ler dados do usurio e a
mostrar o resultado do processamento para o mesmo (a informao resultante). Aproveite bem a aula e se prepare, pois teremos muitas atividades.
7.1 Introduo
A arquitetura bsica dos computadores, baseada na arquitetura de John von
Neumann, at hoje tem influncia direta nas linguagens de programao.
Entretanto, o estilo (modelo ou paradigma) de programao sofreu algumas
evolues, de um formato simples (sem muitos recursos e de difcil percepo por parte dos leigos) da dcada de 50, para um formato mais completo
(com muitos recursos e de fcil entendimento) nos dias atuais.
De acordo com Manzano e Oliveira (2009, p. 437), os paradigmas de programao passaram por cinco fases evolucionrias, sendo elas:
Programao tradicional;
Programao estruturada;
Programao modular;
61
62
Lgica de Programao
muito comum.
Nesse momento, subtende-se que o comando de sada o monitor do computador.
O nome do comando de sada padro em pseudocdigo Escreva() e
em Java System.out.print(). Existem outras variantes desse comando.
As principais so:
TABELA 7.1 - Variantes do comando Escreva
Funo
Pseusocdigo
Java
Escreve o dado
Escreva()
print().
Escreval()
println().
printf().
Fonte: autores
63
64
Lgica de Programao
65
66
Lgica de Programao
Percebeu que, para cada tipo de dado que voc for ler em Java, voc precisa
de um comando diferente? E o printf, que agora podemos definir em um
nico texto com parmetros (%s para texto, %d para inteiro, %f para real)
que sero substitudos por valores de variveis.
67
Figura 7.6: Algoritmo completo em Java que calcula o salrio lquido de um funcionrio.
Fonte: Autores.
Resumo
Voc complementou seus conhecimentos bsicos acerca da elaborao de
algoritmos. Nesta aula, tratamos da estrutura sequencial em um algoritmo,
ou seja, um conjunto de aes executadas em sequncia linear. Vimos tambm os comandos de sada e entrada de dados em pseudocdigo e em Java.
E, finalmente, mostramos um algoritmo completo que calcula o salrio lquido de um funcionrio, em pseudocdigo e em Java.
Nas atividades de aprendizagem desta aula, temos um nmero bem maior
de exerccios para que voc possa praticar. Lembre-se: aprender a progra-
68
Lgica de Programao
Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que receba trs nmeros inteiros e calcule a soma deles.
2. Faa um algoritmo em VisualG ou em Java que receba quatro nmeros
reais e calcule a mdia deles.
3. Faa um algoritmo em VisualG ou em Java que receba duas notas de prova, seus respectivos pesos e calcule a mdia ponderada deles.
4. Faa um algoritmo em VisualG ou em Java que receba o salrio inicial, a
porcentagem de aumento e calcule o novo salrio.
5. Faa um algoritmo em VisualG ou em Java que receba o salrio-base e a
quantidade de dependentes, e calcule o salrio lquido sabendo que, para
cada filho, o funcionrio recebe o salrio famlia de R$ 32,00 e, ao final,
paga imposto de renda de 27,5% sobre o salrio bruto.
6. Faa um algoritmo em VisualG ou em Java que receba os valores antigo
e novo de um produto, e calcule a porcentagem de aumento que o mesmo
teve.
7. Faa um algoritmo em VisualG ou em Java que receba o tamanho do
raio de um crculo e faa o clculo do dimetro, do permetro e da rea do
crculo. Calcule tambm o volume se esse crculo fosse a base para se criar
uma esfera.
8. Faa um algoritmo em VisualG ou em Java que receba a velocidade de
um veculo em Km/h (quilmetros por hora) e a transforme em m/s (metros
por segundo).
Caro(a) estudante,
Parabns por ter completado seus conhecimentos bsicos acerca da elaborao de algoritmos. Agora, poder cri-los usando a estrutura de sequncia
(instrues em uma sequncia linear) e aplicar todas as premissas necessrias
de um programa padro: a entrada, o processamento e a sada de dados. Na
prxima aula, abordaremos as estruturas de deciso. At l!
69
Caro(a) estudante,
Nas aulas anteriores resolvemos problemas de complexidade bem limitada,
baseadas em estruturas sequenciais simples. Nesta aula, voc ir estudar
a elaborao de algoritmos mais complexos, saindo do tradicional passo a
passo linear para fluxos de execuo que podem sofrer desvios na sequncia
baseados em expresses lgicas, isto , o computador ser capaz de tomar
uma deciso sobre o que ser executado ou no. Interessante, no? Ento
vamos estudar com bastante afinco esta aula.
8.1 Introduo
Estrutura de deciso ou estrutura condicional basicamente um mecanismo
capaz de verificar previamente determinadas condies, baseadas em expresses lgicas, para a realizao de uma ou mais instrues.
A expresso lgica em uma estrutura de deciso o mecanismo usado para
que o computador tome sua deciso. Caso ela seja verdadeira, o fluxo de
execuo do algoritmo segue um caminho; caso seja falsa, segue outro.
71
72
Lgica de Programao
Java
// Um nico comando a ser controlado
if(expresso lgica)
Comando;
// Vrios comandos a serem
// controlados
if(expresso lgica) {
Bloco de Comandos;
}
Fonte: Autores.
73
74
Lgica de Programao
Verdadeiro
Fonte: Autores.
75
Java
if (expresso lgica)
Comando1;
else
Comando2;
if (expresso lgica) {
Bloco de Comandos 1;
} else {
Bloco de Comandos 2;
}
Fonte: Autores.
76
Lgica de Programao
77
Java
if (expresso lgica 1) {
Bloco de Comandos 1;
} else if (expresso lgica 2) {
Bloco de Comandos 2;
} else if (expresso lgica 3) {
Bloco de Comandos 3;
} else if (expresso lgica 4) {
Bloco de Comandos 4;
} else if... {
...
} else if(expresso lgica N) {
Bloco de Comandos N;
} else {
Bloco de Comandos Seno
}
Fonte: Autores.
78
Lgica de Programao
79
80
Lgica de Programao
Graas s estruturas de deciso, podemos fazer o computador tomar decises e executar um conjunto de cdigos que voc quiser, de acordo com a
sua lgica. Agora vamos ao resumo da aula.
Resumo
Adicionamos nesta aula conhecimentos importantssimos para a elaborao
de algoritmos mais complexos. Tratamos das estruturas de deciso simples,
compostas e encadeadas. Vimos que a estrutura Se a mais simples, pois
h apenas um desvio de fluxo na execuo do algoritmo. Esse desvio est
condicionado a uma expresso booleana: quando verdadeira, no h desvio,
mas, caso seja falsa, o desvio efetuado. A estrutura de deciso composta
Se Ento mais completa, pois permite dois fluxos de execuo do algoritmo, um quando a expresso booleana for verdadeira e outra para quando
for falsa. J a estrutura encadeada Se - Seno - Se a mais complexa,
pois permite o encadeamento de um se logo aps o Seno de outro Se,
isto, possvel encadear um Se dentro de outro, formando, assim, uma
nica estrutura.
Assim como na aula anterior, temos um nmero maior de exerccios. Vamos
praticar!
Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que, dados dois nmeros,
mostre qual o maior deles.
2. Faa um algoritmo em VisualG ou em Java que, dado um nmero, verifique se o mesmo divisvel por 3.
3. Faa um algoritmo em VisualG ou em Java que, dado o tamanho de trs
retas, seja possvel construir um tringulo com elas.
4. Faa um algoritmo em VisualG ou em Java que dado um nmero, verifique se o mesmo divisvel por 3 e 4, mas que no seja divisvel por 5.
5. Faa um algoritmo em VisualG ou em Java que, dados trs nmeros,
mostre-os -em ordem crescente.
6. Faa um algoritmo em VisualG ou em Java que, dado o salrio bruto de
uma pessoa, calcule o salrio lquido sabendo que h o desconto de dois
impostos, de acordo com a tabela abaixo:
81
Tabela IRPF
Salrio at R$ 1.500,00: 0% de imposto,
Salrio at R$ 3.000,00: 15% de imposto,
Salrio acima de R$ 3.000,00: 27,5% de imposto,
Tabela INSS
Imposto fixo de 11% do salrio, sendo que o total do
imposto no pode ser superior a R$ 400,00.
Ol, viu como possvel um computador tomar decises e assim executar tarefas mais complexas? Muito legal, no? Na prxima aula, voc ir complementar os seus conhecimentos de algoritmos com as estruturas de seleo,
um conceito bem parecido com o da estrutura de deciso. At a prxima!
82
Lgica de Programao
Objetivos:
reconhecer uma estrutura de seleo; e
aplicar estruturas de seleo em algoritmos.
Caro(a) estudante,
Trataremos agora da estrutura de seleo, que uma estrutura complementar s estruturas de deciso, isso porque ela capaz de decidir qual fluxo de
comandos executar, mas usando como parmetro o valor de uma varivel,
em vez do resultado de uma expresso lgica.
9.1 Introduo
A estrutura de seleo muito utilizada em programao, pois serve para
controlar vrias aes diferentes, de acordo com o valor de um parmetro
(varivel) definido dentro dele. Diferentemente das estruturas de deciso, a
de seleo tem nmero pr-definido de escolhas possveis, e, consequentemente, de caminhos possveis.
A instruo usada para definir uma estrutura de seleo :
Escolha no VisualG;
switch no Java.
83
1"
1
2"
2
3"
3
N"
N
OutroCaso
Java
switch (variavel) {
case valorInteiro1:
Bloco de Comandos
break;
case valorInteiro2:
Bloco de Comandos
break;
case ...:
case valorInteiroN:
Bloco de Comandos
break;
default:
Bloco de Comandos
break;
}
1;
1;
N;
default;
Fonte: Autores.
84
Lgica de Programao
85
Com essa estrutura, fica fcil manipular vrios fluxos de comandos, desde que consigamos quantificar as opes possveis de execuo sem usar
expresses lgicas, usando somente valores de variveis. Agora, vamos ao
resumo da aula.
Resumo
Nesta aula, vimos mais uma estrutura de linguagem, a de seleo. Mostramos que a estrutura de seleo permite manipular vrios fluxos de comandos, usando como parmetro o valor de uma varivel. Agora sua vez de
praticar.
86
Lgica de Programao
Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que use a estrutura de seleo
na seguinte situao: dado um nmero de 1 a 12, mostrar o nome do ms
correspondente. Caso o usurio no digite esse nmero, mostrar uma mensagem de erro.
2. Faa um algoritmo em VisualG que use a estrutura de seleo neste caso:
dado o nome de uma Unidade Federativa do Brasil UF, escreva a capital
dessa UF. Caso o usurio informe uma UF no existente, mostrar uma mensagem de erro.
3. Faa um algoritmo em VisualG ou em Java que, sabendo sua posio em
um campeonato, escreva as seguintes mensagens:
1 colocado: Parabns, voc o melhor.
2 colocado: Parabns, voc conseguiu.
3 colocado: Parabns, voc quase chegou l.
4 colocado em diante: Parabns, o importante competir.
4. Faa um algoritmo em VisualG ou em Java que dados dois nmeros,
mostre um menu de opes em que voc possa fazer as seguintes escolhas:
Somar os dois nmeros;
Multiplicar os dois nmeros;
Subtrair os dois nmeros;
Dividir os dois nmeros; e
Calcular o 1 nmero elevado ao 2 (possvel somente em Java necessrio pesquisar sobre as funes matemticas na linguagem).
87
Caro(a) estudante,
Estamos chegando ao final da disciplina Lgica de Programao. Agora, s
falta mais uma aula para fechar o contedo necessrio para que voc consiga desenvolver algoritmo de alta qualidade. Na prxima aula, veremos uma
estrutura muito importante na programao, que permite executar um conjunto de comandos mais de uma vez. At mais!
88
Lgica de Programao
Objetivos:
reconhecer uma estrutura de repetio;
identificar os tipos de estruturas de repetio; e
aplicar estruturas de repetio em algoritmos.
Caro(a)estudante,
J tivemos a oportunidade de estudar algoritmos sofisticados. Vamos, neste
momento, ampliar ainda mais seus conhecimentos, apresentando algumas
tcnicas de programao que possibilitem repetir um bloco de comandos
vrias vezes. Vamos ao contedo!
10.1 Introduo
Em nosso cotidiano comum executarmos a mesma ao repetitivamente
at chegar a um objetivo, por exemplo, fixar um prego na madeira, quando
temos que bater no prego repetidas vezes at que ele esteja fixo o suficiente
para no cair.
Esse tipo de situao tambm muito comum na programao, onde se faz
necessrio executar o mesmo conjunto de comandos mais de uma vez para
chegar ao resultado desejado.
Se precisssemos calcular a mdia mais de uma vez, por exemplo, teramos
que executar (reiniciar) o programa CalcularMedia vrias vezes, uma ao
invivel ou, no mnimo, inconveniente.
Para resolver problemas como esse que as linguagens de programao
oferecem as estruturas de repetio (ou looping).
89
H um tempo, o programa
rodava no mesmo espao de
memria e consumia o mesmo
conjunto de recursos que o
sistema operacional. Essa
arquitetura de gerenciamento
de processos (programas)
era complicada, pois um
determinado problema no seu
programa poderia afetar todo o
computador.
Atualmente, nos sistemas
operacionais modernos, os
programas rodam em uma rea
protegida (mquinas virtuais) e,
caso haja algum problema nele,
apenas o programa em questo
afetado, deixando o resto do
ambiente computacional seguro
(pelo menos deveria ser assim
o funcionamento, mas at hoje
vemos alguns travamentos em
nossos computadores).
A quantidade de vezes a ser repetido pode ser ou no previamente conhecida, mas certamente deve ter um limite (ser finito). Se voc no garantir que
a repetio termine em algum momento, o seu algoritmo entra em loop
infinito, isto , ele para de funcionar, podendo at travar o computador, j
que consume muitos recursos do equipamento.
10.2.1 Para
A principal caracterstica da estrutura de repetio Para que ela executa
um lao de repetio por um nmero predefinido de vezes. Para tanto, a estrutura Para tem o auxlio da figura do contador, uma varivel inteira, que
tem um valor inicial e deve chegar a um valor final.
Para exemplificar esse conceito, imagine que seu treinador pea para que
voc faa 10 abdominais. O que mais importante para voc conseguir fazer esse exerccio? Se voc respondeu estar em forma, apesar de ter certa
relevncia, essa no a resposta correta. O mais importante nesse caso
saber contar at 10.
Outro aspecto importante do contador a forma de contar. Na estrutura
Para possvel contar em ordem crescente (1, 2, 3..., 10), em forma decrescente (10, 9, 8,..., 1), pulando alguns passos (0, 2, 4, 6), entre muitas outras
maneiras.
A sintaxe da estrutura de repetio Para em pseudocdigo :
para <contador> de <valorInicial> ate <valorFinal> [passo] faca
<bloco de comandos>
fimpara
90
Lgica de Programao
Onde:
contador: uma varivel do tipo inteiro que controla o nmero de repeties do lao.
valorInicial: identifica o valor inicial do contador.
valorFinal: identifica o valor final do contador, no momento que o lao
interrompido.
passo: opcional, mas, quando presente, precedida pela palavra passo,
uma expresso que especifica o incremento que ser acrescentado
varivel contadora em cada repetio do lao. Exemplo: passo 1 (a cada
passo incrementa 1 o valor do contador esse o padro, por isso pode
ser omitido; passo 5 (a cada passo incrementa em 5 o valor do contador); ou passo -2 (a cada passo diminui em 2 o valor do contador).
Como exemplos de sintaxe, temos:
Algoritmo "ExemplosPara"
var i: inteiro
inicio
// contar de 1 at 10
para i de 1 ate 10 faca
escreva (j:3)
fimpara
// contar de 10 at 1
para i de 10 ate 1 passo -1 faca
escreva (j:3)
fimpara
fimalgoritmo
Figura 10.2: Exemplos da estrutura Para em pseudocdigo.
Fonte: Autores.
91
Onde:
valor inicial: uma varivel (contador) do tipo inteiro que controla o
nmero de repeties do lao.
condio de parada: uma expresso lgica que, enquanto for verdadeira, o lao (loop) acontece. Quando a expresso booleana for falsa, a
repetio para.
incremento: uma expresso aritmtica que indica o incremento ou
decremento da varivel contadora.
Como exemplos de sintaxe, temos:
// contar de 1 at 10
for (int i = 1; i <= 10; i = i + 1) {
System.out.println(i);
}
// contar 10 vezes
for (int i = 0; i < 9; i++) {
System.out.println(i);
}
// contar de 10 at 1
for (int i = 10; i >= 1; i = i - 1) {
System.out.println(i);
}
// mostrar os nmeros pares menores que 100
for (int i = 0; i < 100; i = i + 2) {
System.out.println(i);
}
Figura 10.4: Exemplos da estrutura Para em Java.
Fonte: Autores.
92
Lgica de Programao
93
10.2.2 Enquanto
A estrutura de repetio Enquanto comumente usada quando o nmero
de vezes que um bloco de comandos dever ser executado no conhecido,
diferentemente do Para, que predefinido.
Explicando melhor, o comando Para do tipo faa 10 abdominais e o Enquanto do tipo faa abdominais enquanto no estiver cansado. Perceba
que, no segundo tipo, no possvel precisar a quantidade de abdominais
que a pessoa ir fazer.
Esse tipo de estrutura s possvel porque existe um teste lgico no incio do
comando Enquanto: esse comando primeiro avalia uma expresso lgica
caso ela seja verdadeira, faz a repetio do cdigo; caso seja falsa, ela para
a repetio, saindo, assim, do loop.
A sintaxe da estrutura de repetio Enquanto em pseudocdigo :
Enquanto <expresso lgica> faca
<bloco de comandos>
FimEnquanto
Figura 10.7: Sintaxe do comando Enquanto.
Fonte: Autores.
Onde:
Expresso lgica: uma expresso que, enquanto for verdadeira, permite a execuo do bloco de comandos, mas, ao ficar falsa, o fluxo de
execuo do algoritmo sai da estrutura de repetio, parando essa atividade.
Como exemplos de sintaxe, temos:
94
Lgica de Programao
Algoritmo "ExemplosEnquanto"
var a, b: inteiro
Inicio
a := 10
b := 20
95
96
Lgica de Programao
Onde:
Expresso lgica: uma expresso que, enquanto for falsa permite a
execuo do bloco de comandos, mas, ao ficar verdadeira, o fluxo de
execuo do algoritmo sai da estrutura de repetio.
A seguir temos um exemplo da sintaxe do comando Faa no Java.
97
do {
<bloco de comandos>;
} while (expresso lgica); // repete enquanto a expresso for verdadeira
Figura 10.14: Sintaxe do comando do.
Fonte: Autores.
Onde:
Expresso lgica: uma expresso que, enquanto for verdadeira, permite a execuo do bloco de comandos, mas, ao ficar falsa, interrompida e o fluxo de execuo do algoritmo sai da estrutura de repetio.
Para entender melhor as estruturas de repetio Repita e Faa, vamos a
um exemplo prtico:
Baseado no exemplo mostrado no item 9.2.2, crie um menu de comandos
que mostre trs mensagens, de acordo com a opo escolhida: Bom dia, Boa
Tarde ou Boa Noite, e tenha uma 4 opo perguntando se o usurio deseja
sair do programa.
98
Lgica de Programao
99
Para
Enquanto
Faa
Repita
Usa contador
Sim
Opcional
Opcional
Opcional
Sim
Depende
Depende
Depende
Sim
Sim
No
No
No
No
Sim
Sim
Sim
Sim
Sim
No
No
No
No
Sim
Fonte: Autores.
Resumo
Essa foi a nossa ltima aula. Voc estudou as estruturas de repetio para
aperfeioar determinados tipos de processo. Mostramos que, na estrutura
de deciso, o computador executa o mesmo bloco de comando quantas
vezes forem necessrias, baseado em controles bem definidos de repetio
para se chegar ao resultado pretendido.
No se esquea de realizar as atividades especficas desta aula para um melhor entendimento do assunto abordado.
Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que calcule o saldo atual de
uma poupana, dado o total depositado, a porcentagem do rendimento
mensal e o nmero de meses que o valor est no banco.
2. Faa um algoritmo em VisualG ou em Java que calcule a soma dos N primeiros nmeros, onde N informado pelo usurio. Ex.: para N = 5, ento
calcular 1 + 2 + 3 + 4 + 5.
3. Faa um algoritmo em VisualG ou em Java que calcule o fatorial de um
nmero inteiro.
4. Faa um algoritmo em VisualG ou em Java que leia A e B, ambos nmeros
inteiros e positivos, e calcule AB.
5. Faa um algoritmo em VisualG ou em Java que leia um valor N inteiro e
positivo, calcule e mostre o valor de E, conforme a frmula a seguir:
E = 1 + 1/1! + 1/2! + 1/3! + ... + 1/N!
100
Lgica de Programao
Palavras Finais
Caro(a) estudante,
Primeiramente, gostaramos de parabeniz-lo(la) por ter concludo esta disciplina do curso Tcnico em Informtica. Estamos felizes por ter completado
mais uma importante etapa na busca da aprendizagem e, consequentemente, do conhecimento. Chegamos ao final da disciplina e certamente no foi
um percurso fcil, entretanto, durante nossa caminhada, adquirimos informaes e pudemos realizar trocas de experincias, com isso estamos mais
preparados para seguir em frente e superar os novos desafios que viro.
A lgica de programao um ponto de partida. No podemos esquecer
que a busca pelo conhecimento contnua, portanto, vamos praticar, e,
como dica, por que no criar algoritmos para resolver problemas reais? A
prtica em programao o diferencial da sua vida profissional e ns a
adquirimos com exerccios e simulaes de problemas reais.
A voc que chegou at aqui o nosso parabns.
101
Guia de Solues
Aula 1
1. Resposta pessoal.
2.
Resultado verdadeiro:
O ferro conduz eletricidade.
O ouro conduz eletricidade.
O chumbo conduz eletricidade.
A prata conduz eletricidade.
Logo, todo metal conduz eletricidade.
Resultado falso:
At agora, nenhuma mulher foi Presidente da Repblica
no Lbano.
Logo, nenhuma mulher ser Presidente da Repblica no
Lbano.
Aula 2
1. Descrever passo a passo a resoluo de um problema.
102
Lgica de Programao
2. Ligar o computador.
Abrir o navegador.
Acessar o site do e-mail.
Digitar o usurio e a senha.
Procurar e-mail com o documento.
Se encontrar o documento, abri-lo.
3.
103
Aula 3
1. Visual Studio C#, VB, C++
NetBeans Java
Delphi Pascal
XCode Objective C
2. Visual Studio com C#:
using System;
namespaceMeusProjetos
{
classProgram
{
staticvoid Main(string[] args)
{
Console.Write("Digiteseunome: ");
string nome = Console.ReadLine();
Console.WriteLine("Seja bem vindo {0}", nome);
Console.ReadKey();
}
}
}
NetBeans com Java
Por ser um compilador Java, pode ser usado os mesmos algoritmos do Eclipse.
Delphi com Pascal
ProgramOla_Mundo;
begin
WriteLn('Ol, Mundo!');
end.
XCode com Objective-C
#import <stdio.h>
int main(void)
{
puts("Ol, Mundo!");
return 0;
}
Rede e-Tec Brasil
104
Lgica de Programao
Aula 4
1 e 2.
algoritmo "Mensagem"
// Autor: Liluyoud, Sara e Jos Marcio
var
// declarao de variveis
Inicio
// Algoritmo para mostrar uma mensagem
Escreva("+-------------------------------+")
Escreva("| Programa Al, Mundo
|")
Escreva("+-------------------------------+")
Escreva("| Seja bem-vindo ao maravilhoso |")
Escreva("| mundo da programao.
|")
Escreva("|
|")
Escreva("| Aproveite!!!
|")
Escreva("+-------------------------------+")
Fimalgoritmo
3.
Funo do Algoritmo
Nome
Cambio
CalculoIMC
AreaTriangulo
ContaSaque
105
4.
algoritmo "Cambio"
var
valorReal, valorDolar, cotacao: real
Inicio
Escreva("Informe o valor em Dolar: ")
Leia(valorDolar)
Escreva("Informe a cotao do dia: ")
Leia(cotacao)
valorReal := valorDolar * cotacao
Escreva("O valor em real ", valorReal)
Fimalgoritmo
algoritmo "CalculoIMC"
var
peso, altura, imc: real
Inicio
Escreva("Informe seu Peso: ")
Leia(peso)
Escreva("Informe sua Altura: ")
Leia(altura)
imc := peso / (altura * altura)
Escreva("Seu IMC ", imc)
Fimalgoritmo
algoritmo "AreaTriangulo"
var
base, altura, area: real
Inicio
Escreva("Informe o largura da base do tringulo: ")
Leia(base)
Escreva("Informe sua Altura: ")
Leia(altura)
area := (base * altura) / 2
Escreva("A rea do tringulo ", area)
Fimalgoritmo
algoritmo "ContaSaque"
var
saldo, valorSaque: real
Inicio
Escreva("Informe o saldo atual da conta: ")
Leia(saldo)
Escreva("Informe o valor do Saque: ")
Leia(valorSaque)
saldo := saldo - valorSaque
Escreva("O novo saldo de ", saldo)
fimalgoritmo
106
Lgica de Programao
Aula 5
1. a) XXX vlido
b) a123 vlido
c) (A) invlido
No podemos usar caracteres especiais no nome, nesse caso foram usados
os ( ).
d) NOME invlido
No podemos usar caracteres especiais no nome, nesse caso foram usadas
as .
e) #66 invlido
No podemos usar caracteres especiais no nome, nesse caso foi usado o #.
f) dia/ano/ms invlido
No podemos usar caracteres especiais no nome, nesse caso foi usada a /.
g) 1abc invlido
No podemos iniciar uma varivel com nmero.
h) Ol Pessoal invlido
No pode haver espaos em uma varivel, e recomenda-se que no sejam
usado acentos tambm.
i) a.b invlido
No podemos usar caracteres especiais no nome, nesse caso foi usado o ..
j) c*d invlido
No podemos usar caracteres especiais no nome, nesse caso foi usado o *.
107
2.
Sintaxe Pseudocdigo
Sintaxe Java
salario: real
double salario;
nota, media: real
double nota, media;
diasEmAtraso: inteiro
intdiasEmAtraso;
cpf: caractere
stringcpf;
casaPropria: lgico
booleancasaPropria;
carta: caractere
string carta;
endereco: caractere
stringendereco;
novo: lgico
boolean novo;
Aula 6
1. Operando: so os argumentos de um operador, isto , as informaes
necessrias para um operador realizar sua funo.
Operador: funo com domnio especfico.
Expresso: uma combinao de operandos e operadores.
Exemplo: a * b
a e b so os operandos
* o operador
a * b a expresso
2. Expresses matemticas ou aritmticas
(a + b) / 2
Expresses lgicas
108
Lgica de Programao
(a + b) <= (a * b)
3. Sendo a = 2, b = 5 e c = 3, temos:
a) b * 2 a * c=>5 * 2 2 * 3=>
10 6
=> 4
b) b + a * 2 a + c * 3=>5 + 2 * 2 2 + 3 * 3=> 5 + 4 2
+ 9 => 16
c) (b + a) * (2 a) + c * 3=>(5 + 2) * (2 2) + 3 * 3
7 * 0 + 9 => 9
=>
f E v
(f) OU (f)
=>
=> f
109
Aula 7
1.
Algoritmo "Prog_7_1"
Var
n1, n2, n3, soma: Inteiro
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
soma:= n1 + n2 + n3
Escreva(soma)
FimAlgoritmo
2.
Algoritmo "Prog_7_2"
Var
n1, n2, n3, n4, media: Real
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
Leia(n4)
media := (n1 + n2 + n3 + n4) / 4
Escreva(media)
FimAlgoritmo
110
Lgica de Programao
3.
Algoritmo "Prog_7_3"
Var
n1, n2, p1, p2, media: Real
Inicio
Leia(n1)
Leia(n2)
Leia(p1)
Leia(p2)
media := ((n1 * p1) + (n2 * p2))/ (p1 + p2)
Escreva(media)
FimAlgoritmo
4.
Algoritmo "Prog_7_4"
Var
salario, porcentagem: Real
Inicio
Leia(salario)
Leia(porcentagem)
salario := salario + salario * porcentagem / 100
Escreva(salario)
FimAlgoritmo
5.
Algoritmo "Prog_7_5"
Var
salario, imposto: Real
dependentes: Inteiro
Inicio
Leia(salario)
Leia(dependentes)
salario := salario + dependentes * 32
imposto := salario * 0.275
salario := salario - imposto
Escreva(salario)
FimAlgoritmo
111
6.
Algoritmo "Prog_7_6"
Var
valorAntigo, valorNovo, diferenca: Real
Inicio
Leia(valorAntigo)
Leia(valorNovo)
diferenca := (valorNovo - valorAntigo) / valorAntigo
diferenca := diferenca * 100
Escreva(diferenca, "%")
FimAlgoritmo
7.
Algoritmo "Prog_7_7"
Var
raio, diametro, perimetro, area, volume: Real
Inicio
Leia(raio)
diametro := 2 * raio
perimetro := 2 * 3.1415 * raio
area := 3.1415 * raio * raio
volume := 4 / 3 * 3.1415 * raio * raio *raio
Escreval(diametro)
Escreval(perimetro)
Escreval(area)
Escreval(volume)
FimAlgoritmo
8.
Algoritmo "Prog_7_8"
Var
valocidadeKM, velocidadeMS: Real
Inicio
Leia(valocidadeKM)
velocidadeMS := valocidadeKM * 1000 / (60 * 60)
Escreval(velocidadeMS)
FimAlgoritmo
112
Lgica de Programao
Aula 8
1.
Algoritmo "Prog_8_1"
Var
n1, n2: inteiro
Inicio
Leia(n1)
Leia(n2)
Se (n1 > n2) Entao
Escreva("O primeiro nmero maior")
Senao
Escreva("O segundo nmero maior")
FimSe
FimAlgoritmo
2.
Algoritmo "Prog_8_2"
Var
n: inteiro
Inicio
Leia(n)
Se (n mod 3 = 0) Entao
Escreva(" divisvel por 3")
Senao
Escreva("No divisvel por 3")
FimSe
FimAlgoritmo
3.
Algoritmo "Prog_8_3"
Var
lado1, lado2, lado3: inteiro
Inicio
Leia(lado1)
Leia(lado2)
Leia(lado3)
Se ((lado1 + lado2 > lado3) E (lado2 + lado3 > lado1) E
(lado1 + lado3 > lado2)) Entao
Escreva(" possvel criar um tringulo")
Senao
Escreva("No possvel criar um tringulo")
FimSe
FimAlgoritmo
113
4.
Algoritmo "Prog_8_1"
Var
n: inteiro
Inicio
Leia(n)
Se (n % 3 = 0) E (n % 4 = 0) E (n % 5 <> 0) Entao
Escreva(" divisvel por 3 e 4 e no por 5")
Senao
Escreva("No obedece as regras")
FimSe
FimAlgoritmo
5.
Algoritmo "Prog_8_5"
Var
n1, n2, n3, aux: inteiro
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
Se (n1 > n2) Entao
aux := n1
n1 := n2
n2 := aux
FimSe
Se (n2 > n3) Entao
aux := n2
n2 := n3
n3 := aux
FimSe
Se (n1 > n2) Entao
aux := n1
n1 := n2
n2 := aux
FimSe
Escreva(n1, n2, n3)
FimAlgoritmo
114
Lgica de Programao
6.
Algoritmo "Prog_8_6"
Var
salarioBruto, irpf, inss, salarioLiquido: Real
Inicio
Leia(salarioBruto)
irpf := 0
inss := salarioBruto * 0.11
Se (inss> 400) Entao
inss := 400
FimSe
Se (salarioBruto>= 3000) Entao
irpf := salarioBruto * 0.275
Senao
Se (salarioBruto>= 1500) Entao
irpf := salarioBruto * 0.15
FimSe
FimSe
salarioLiquido := salarioBruto - irpf - inss;
Escreval(irpf)
Escreval(inss)
Escreval(salarioLiquido)
FimAlgoritmo
Aula 9
1.
Algoritmo "Prog_9_1"
Var
numero: Inteiro
Inicio
Leia(numero)
Escolha numero
Caso 1
Escreva("Janeiro")
Caso 2
Escreva("Fevereiro")
Caso 3
Escreva("Maro")
Caso 4
Escreva("Abril")
Caso 5
Escreva("Maio")
Caso 6
Escreva("Junho")
Caso 7
115
Escreva("Julho")
Caso 8
Escreva("Agosto")
Caso 9
Escreva("Setembro")
Caso 10
Escreva("Outubro")
Caso 11
Escreva("Novembro")
Caso 12
Escreva("Dezembro")
OutroCaso
Escreva("Ms Invlido")
FimEscolha
FimAlgoritmo
2.
Algoritmo "Prog_9_2"
Var
uf: caractere
Inicio
Leia(uf)
Escolha uf
Caso "RO"
Escreva("Porto Velho")
Caso "AC"
Escreva("Rio Branco")
Caso "AM"
Escreva("Manaus")
Caso "AP"
Escreva("Amap")
OutroCaso
Escreva("UF Inexistente")
FimEscolha
FimAlgoritmo
3.
Algoritmo "Prog_9_3"
Var
posicao: Inteiro
Inicio
Leia(posicao)
Escolha posicao
Caso 1
Escreva("Parabns, voc o melhor.")
116
Lgica de Programao
Caso 2
Escreva("Parabns, voc conseguiu.")
Caso 3
Escreva("Parabns, voc quase chegou l.")
OutroCaso
Escreva("Parabns, o importante competir.")
FimEscolha
FimAlgoritmo
4.
Algoritmo "Prog_9_4"
Var
n1, n2, resultado: Real
opcao: Caractere
Inicio
Leia(n1)
Leia(n2)
Leia(opcao)
Escolha opcao
Caso "+"
resultado := n1 + n2
Caso "*"
resultado := n1 * n2
Caso "-"
resultado := n1 - n2
Caso "/"
resultado := n1 - n2
FimEscolha
Escreva(resultado)
FimAlgoritmo
Aula 10
1.
Algoritmo "Prog_10_1"
Var
valor, rendimento: Real
i, meses: inteiro
Inicio
Leia(valor)
Leia(rendimento)
Leia(meses)
Para i de 1 ate meses faca
valor := valor + valor * rendimento / 100
FimPara
Escreva(valor)
FimAlgoritmo
117
2.
Algoritmo "Prog_10_2"
Var
i, n, soma: inteiro
Inicio
Leia(n)
soma := 0
Para i de 1 ate n faca
soma := soma + i
FimPara
Escreva(soma)
FimAlgoritmo
3.
Algoritmo "Prog_10_3"
Var
i, n, fatorial: inteiro
Inicio
Leia(n)
fatorial := 1
Para i de n ate 2 passo -1 faca
fatorial := fatorial * i
FimPara
Escreva(fatorial)
FimAlgoritmo
4.
Algoritmo "Prog_10_4"
Var
i, a, b, potencia: inteiro
Inicio
Leia(a)
Leia(b)
potencia := 1
Para i de 1 ate b faca
potencia := potencia * a
FimPara
Escreva(potencia)
FimAlgoritmo
118
Lgica de Programao
5.
Algoritmo "Prog_10_5"
Var
n, fatorial, i, j: inteiro
neper: real
Inicio
Leia(n)
neper := 1
Para i de 1 ate n faca
fatorial := 1
Para j de 1 ate i faca
fatorial := fatorial * i
FimPara
neper := neper + (1 / fatorial)
FimPara
Escreva(neper)
FimAlgoritmo
119
Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchida.
Fundamentos de programao de computadores: algoritmos, Pascal e C/C++. 2.
ed. So Paulo: Pearson Prentice Hall, 2005.
FORBELLONE, Andr Luiz Villar. Lgica de programao: a construo de algoritmos e
estrutura de dados. 3. ed. So Paulo: Brochura, 2005.
PUGA, Sandra; RISSETTI, Gerson. Lgica de programao e estruturas de dados:
com aplicaes em Java. 2. ed. So Paulo: Pearson Prentice Hall, 2009.
MANZANO, Jos Augusto N. G; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lgica para
desenvolvimento de programao de computadores. 22. ed. So Paulo: Erica, 2009.
SEBESTA, Robert W. Conceitos de linguagem de programao. 9. ed. Porto Alegre:
Bookman, 2011.
INFOPEDIA. Enciclopdias e Dicionrios Porto Editora. Dicionrio de Lngua Portuguesa
da Porto Editora com acordo ortogrfico. Disponvel em <.http://www.infopedia.
pt/lingua-portuguesa/lgica> Acesso em: 03 set. 2013.
Obras Consultadas
ARAJO, Everton Coimbra. Algoritmos: fundamento e prtica. 3. ed. So Paulo: Visual
Books, 2007.
CARBONI, Irenice de Ftima. Lgica de programao. So Paulo: Thomson, 2003.
GOODRICH, Michael T; TAMASSIA, Roberto. Estruturas de dados e algoritmos em
Java. 4. ed. Porto Alegre: Bookman, 2007.
LAFORE, R. Estruturas de dados e algoritmos em Java. [S.l.]: Cincia Moderna,
2005.
LOPES, Anita; GARCIA, Guto. Introduo programao: 500 algoritmos resolvidos.
Rio de Janeiro: Campus, 2002.
SOARES, Mrcio Vieira; GOMES, Marcelo Marques; SOUZA, Marco Antnio. Algoritmos
e Lgica de Programao. 2. ed. So Paulo: Cengage Learning, 2011.
SZWARCFITER, J. L.; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed.
[S.l.]: LTC, 2010.
120
Lgica de Programao
Bibliografia Bsica
CORMEN, Thomas H. et al. Algoritmos: teoria e prtica. 3. ed. So Paulo: rica, 2012.
FARRELL, Joyce. Lgica e design de programao. So Paulo: Cengage Learning,
2009.
121
122
Lgica de Programao
123