Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Algoritmos Programação
Apostila Algoritmos Programação
Algoritmos e Programao
- Parte 1 -
Fevereiro de 2013
Sumrio
Pgina
1 INTRODUO...................................................................................................................................................................4
2 FORMAS DE REPRESENTAO DE ALGORITMOS ...............................................................................................6
2.1 DIAGRAMA NASSI-SHNEIDERMAN .................................................................................................................................6
2.2 FLUXOGRAMA ................................................................................................................................................................7
2.3 PORTUGUS ESTRUTURADO ...........................................................................................................................................7
3 CONCEITOS IMPORTANTES ........................................................................................................................................9
3.1 CONSTANTES..................................................................................................................................................................9
3.2 VARIVEIS .....................................................................................................................................................................9
3.3 ATRIBUIO................................................................................................................................................................. 10
4 INSTRUO ESCREVER .............................................................................................................................................. 11
5 OPERADORES ARITMTICOS ................................................................................................................................... 12
6 PROGRAMAS E PROGRAMAO ............................................................................................................................. 13
7 LINGUAGEM DO COMPUTADOR ............................................................................................................................. 14
8 LINGUAGENS DE ALTO NVEL ................................................................................................................................. 15
8.1 LINGUAGEM PYTHON ................................................................................................................................................... 16
9 INSTALANDO PYTHON ................................................................................................................................................ 17
9.1 USANDO O INTERPRETADOR PYTHON........................................................................................................................... 18
10 CONVERSO DO PROGRAMA-FONTE .................................................................................................................. 20
10.1 PROGRAMA COMPILADO ............................................................................................................................................ 20
10.2 PROGRAMA INTERPRETADO ....................................................................................................................................... 20
11 SOFTWARES QUE VOC PRECISA TER OU CONHECER ................................................................................. 21
11.1 SISTEMA OPERACIONAL ............................................................................................................................................. 21
11.2 EDITOR DE TEXTOS .................................................................................................................................................... 21
11.3 COMPILADOR/INTERPRETADOR .................................................................................................................................. 21
12 CUIDADOS AO DIGITAR PROGRAMAS EM PYTHON ....................................................................................... 22
13 COMENTRIOS EM PYTHON .................................................................................................................................. 22
13.1 COMENTRIO DE UMA LINHA .................................................................................................................................... 23
13.2 COMENTRIO DE VRIAS LINHAS .............................................................................................................................. 23
14 TIPOS DE DADOS ......................................................................................................................................................... 24
14.1 CONVERSO DE TIPOS NUMRICOS ............................................................................................................................ 25
14.2 MARCADORES E FORMATAO DE NMEROS ............................................................................................................ 26
15 INSTRUO LER ......................................................................................................................................................... 28
16 HORIZONTALIZAO DE FRMULAS (LINEARIZAO) .............................................................................. 28
17 FUNES NUMRICAS PREDEFINIDAS ............................................................................................................... 29
17.1 FUNES MATEMTICAS ........................................................................................................................................... 29
17.2 FUNES DE NMEROS RANDMICOS ....................................................................................................................... 30
18 EXPRESSES ARITMTICAS ................................................................................................................................... 31
19 ALGORITMOS COM SELEO ................................................................................................................................ 31
19.1 ESTRUTURA DE SELEO ANINHADA......................................................................................................................... 32
19.2 ESTRUTURA DE SELEO CONCATENADA.................................................................................................................. 33
20 OPERADORES RELACIONAIS.................................................................................................................................. 34
21 SELEO EM PYTHON .............................................................................................................................................. 35
21.1 FORMA SIMPLES: IF .................................................................................................................................................... 35
21.2 FORMA COMPOSTA: IF - ELSE ..................................................................................................................................... 36
22 OPERADORES LGICOS ........................................................................................................................................... 37
1 Introduo
Nesta apostila apresentado o estudo de Lgica de Programao e, para isto, importante ter uma
viso geral do processo de desenvolvimento de programas (softwares), visto que o objetivo final ter
um bom embasamento para a prtica da programao de computadores [MAR03].
So apresentados contedos tericos com exemplos e exerccios que tambm so executados na
prtica utilizando a Linguagem de Programao Python.
Para o desenvolvimento de qualquer programa, deve-se seguir basicamente as seguintes etapas,
conhecidas como Ciclo de Vida do Sistema [BUF03]:
1) Estudo da viabilidade do software (Estudos Iniciais)
2) Anlise detalhada do sistema (Projeto Lgico)
3) Projeto preliminar do sistema (Projeto Fsico)
4) Projeto detalhado do sistema (Algoritmo)
5) Implementao ou Codificao do Sistema (na Linguagem de Programao escolhida)
6) Testes do sistema
7) Instalao e Manuteno do Sistema
No desenvolvimento de um sistema, quanto mais tarde um erro detectado, mais dinheiro e
tempo se gasta para repar-lo. Assim, a responsabilidade do programador maior na criao dos
algoritmos do que na sua prpria implementao, pois quando bem projetados no se perde tempo
tendo que refaz-los, reimplant-los e retest-los, assegurando assim um final feliz e no prazo previsto
para o projeto [BUF03].
Pode-se encontrar, na literatura em informtica, vrias formas de representao das etapas que
compem o ciclo de vida de um sistema. Essas formas de representao podem variar tanto na
quantidade de etapas quanto nas atividades a serem realizadas em cada fase [MAR03].
Como pode-se observar, nesse exemplo de ciclo de vida de um sistema (com sete fases)
apresentado acima, os algoritmos fazem parte da quarta etapa do desenvolvimento de um programa.
Na verdade, os algoritmos esto presentes no nosso dia-a-dia sem que saibamos, pois uma receita
culinria, as instrues de uso de um equipamento ou as indicaes de um instrutor sobre como
estacionar um carro, por exemplo, nada mais so do que algoritmos.
Um algoritmo pode ser definido como um conjunto de regras (instrues), bem definidas, para
soluo de um determinado problema. Segundo o dicionrio Michaelis, o conceito de algoritmo a
"utilizao de regras para definir ou executar uma tarefa especfica ou para resolver um
problema especfico".
A partir desses conceitos de algoritmos, pode-se perceber que a palavra algoritmo no um
termo computacional, ou seja, no se refere apenas rea de informtica. uma definio ampla que
agora que voc j sabe o que significa, talvez a utilize no seu cotidiano naturalmente.
Na informtica, o algoritmo o "projeto do programa", ou seja, antes de se fazer um programa
(software) na Linguagem de Programao desejada (Python, C, Java etc.) deve-se fazer o algoritmo do
programa. Ento um programa, um algoritmo escrito numa forma compreensvel pelo computador
(atravs de uma Linguagem de Programao), onde todas as aes a serem executadas devem ser
especificadas nos mnimos detalhes e de acordo com as regras de sintaxe1 da linguagem escolhida.
1
Sintaxe: segundo o dicionrio Aurlio, a parte da gramtica que estuda a disposio das palavras na frase e a das frases
no discurso, bem como a relao lgica das frases entre si. Cada Linguagem de Programao tem a sua sintaxe (forma de
escrever as instrues, os comandos) que deve ser seguida corretamente para que o programa funcione. O conjunto de
palavras e regras que definem o formato das sentenas vlidas chama-se de sintaxe da linguagem.
Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira
Algoritmos se aprende
Copiando algoritmos
Construindo algoritmos
Testando algoritmos
2.2 Fluxograma
Os Fluxogramas ou Diagramas de Fluxo so uma representao grfica que utilizam formas
geomtricas padronizadas ligadas por setas de fluxo, para indicar as diversas aes (instrues) e
decises que devem ser seguidas para resolver o problema em questo.
Eles permitem visualizar os caminhos (fluxos) e as etapas de processamento de dados possveis
e, dentro destas, os passos para a resoluo do problema. A seguir, na Figura 2, apresentado um
exemplo de fluxograma [GOM04] [MAR03].
Embora o Portugus Estruturado seja uma linguagem bastante simplificada, ela possui todos os
elementos bsicos e uma estrutura semelhante de uma linguagem de programao de computadores.
Portanto, resolver problemas com portugus estruturado pode ser uma tarefa to complexa quanto a de
escrever um programa em uma linguagem de programao qualquer s no to rgida quanto a sua
sintaxe, ou seja, o algoritmo no deixa de funcionar porque esquecemos de colocar um ';' (ponto-evrgula) por exemplo, j um programa no funcionaria. A Figura 3 apresenta um exemplo de algoritmo
na forma de representao de portugus estruturado.
3 Conceitos Importantes
Neste captulo so apresentados e explicados trs conceitos fundamentais para a construo de
algoritmos, so eles: Constante, Varivel e Atribuio.
3.1 Constantes
So chamadas de constantes, as informaes (os dados) que no variam com o tempo, ou seja,
permanecem sempre com o mesmo contedo, um valor fixo (invarivel). Como exemplos de
constantes pode-se citar: nmeros, letras, palavras, frases.
3.2 Variveis
O bom entendimento do conceito de varivel fundamental para elaborao de algoritmos e,
consequentemente de programas. Uma varivel um espao da memria do computador que se
"reserva" para guardar informaes (dados). Como o prprio nome sugere, as variveis, podem
conter valores diferentes a cada instante de tempo, ou seja, seu contedo pode variar de acordo com as
instrues do algoritmo.
As variveis so referenciadas atravs de um nome (identificador) criado pelo prprio
programador durante o desenvolvimento do algoritmo. Exemplos de nomes de variveis: produto,
idade, a, x, nota1, peso, n1. O contedo de uma varivel pode ser alterado, consultado ou apagado
quantas vezes forem necessrias durante o algoritmo. Mas, ao alterar o contedo da varivel, a
informao anterior perdida, ou seja, sempre "vale" a ltima informao armazenada na varivel.
Uma varivel armazena 'apenas' um contedo de cada vez.
Uma varivel pode ser vista como uma caixa com um rtulo (nome) colado nela, que em um
dado momento guarda um determinado objeto. O contedo desta caixa no algo fixo, permanente. Na
verdade, essa caixa pode ter seu contedo alterado diversas vezes. No exemplo abaixo, a caixa
(varivel) rotulada como FATOR, contm o valor 5. Em outro momento essa caixa poder conter
qualquer outro valor numrico. Entretanto, a cada instante, ela conter um, e somente um valor
[TON04].
3.3 Atribuio
A atribuio uma notao utilizada para atribuir um valor a uma varivel, ou seja, para armazenar um
determinado contedo em uma varivel. A operao de atribuio, normalmente, representada por
uma seta apontando para a esquerda (), mas existem outros smbolos para representar a atribuio,
como o sinal de igualdade ( = ), por exemplo. A notao a ser usada para representar a atribuio,
depende da forma de representao do algoritmo escolhida. J, nas linguagens de programao, cada
uma tem a sua notao descrita pelas regras de sintaxe da linguagem. Em Python o sinal de igualdade
que representa a atribuio. Na Tabela 2 a seguir, so apresentados alguns exemplos de atribuies
possveis:
Atribuies Possveis
Exemplos
varivel constante
varivel varivel
peso valor
varivel expresso
AB+C
Tabela 2: Exemplos de Atribuies
Uma observao importante a ser feita em relao a atribuies que na parte esquerda (a
que vai "receber" algo) no pode haver nada alm da varivel, ou seja, s varivel que "recebe"
algum contedo, no possvel ter um clculo, por exemplo, ou uma constante, recebendo alguma
coisa. Veja por exemplo, esta notao:
(notao ERRADA!!!)
Ateno: Esta operao apresentada acima no possvel, no est correta esta atribuio!
10
4 Instruo Escrever
Existem basicamente duas instrues principais em algoritmos (e em programao em geral) que so:
Escrever e Ler. Ou seja, cada Linguagem de Programao tem um comando para representar a Entrada
de Dados (leitura) e outro para a Sada de Dados (escrita). Neste captulo ser apresentada a instruo
Escrever.
A instruo Escrever utilizada quando deseja-se mostrar informaes na tela do
computador, ou seja, um comando de Sada de Dados. Resumindo: usa-se a instruo Escrever,
quando necessita-se que o algoritmo (programa) mostre alguma informao para o usurio, pois o
comando Escrever para escrever na tela do computador.
Tanto no Diagrama de Chapin quanto em Portugus Estruturado representa-se a sada de dados
atravs da prpria palavra Escrever (ou Escreva). J em Fluxogramas, a representao da sada de
dados feita atravs de uma forma geomtrica especfica [GOM04] [MAR03]. Na Linguagem Python
o comando para escrever na tela do computador o print.
Exemplos Prticos:
1) Escreva um algoritmo para armazenar o valor 20 em uma varivel X e o valor 5 em uma varivel Y.
A seguir, armazenar a soma do valor de X com o de Y em uma varivel Z. Escrever (na tela) o valor
armazenado em X, em Y e em Z. (Captulo 23: Respostas dos Exemplos Pg.40).
2) Escreva um algoritmo para armazenar o valor 4 em uma varivel A e o valor 3 em uma varivel B.
A seguir, armazenar a soma de A com B em uma varivel C e a subtrao de A com B em uma
varivel D. Escrever o valor de A, B, C e D e tambm escrever a mensagem Fim do Algoritmo.
Observao:
Note que quando deseja-se escrever alguma mensagem literalmente na tela (letra, frase, nmero
etc.), deve-se utilizar aspas para identificar o que ser escrito, pois o que estiver entre aspas no
programa, ser exatamente o que aparecer na tela do computador. Diferente de quando necessita-se
escrever o contedo de uma varivel, pois neste caso no utiliza-se aspas. Veja os exemplos abaixo:
Escrever A
Esta instruo faz com que o algoritmo escreva o contedo da varivel A na tela
Escrever A
Esta instruo faz com que o algoritmo escreva a letra A na tela
11
5 Operadores Aritmticos
Muitas vezes, ao desenvolver algoritmos, comum utilizar expresses matemticas para a resoluo
de clculos. Neste captulo so apresentados os operadores aritmticos necessrios para determinadas
expresses. Veja a Tabela 3 a seguir.
Operao
Smbolo
Prioridade de Execuo
Multiplicao (Produto)
1.
Diviso
1.
Adio (Soma)
2.
Subtrao (Diferena)
2.
As expresses dentro de parnteses so sempre resolvidas antes das expresses fora dos
parnteses. Quando existem vrios nveis de parnteses, ou seja, um parntese dentro de outro,
a soluo sempre inicia do parntese mais interno at o mais externo (de dentro para fora).
Quando duas ou mais expresses tiverem a mesma prioridade, a soluo sempre iniciada da
expresso mais esquerda at a mais direita (da esquerda para a direita).
Desta forma, veja os seguintes exemplos e os respectivos resultados:
ExemploA: 2 + (6 * (3 + 2)) = 32
ExemploB: 2 + 6 * (3 + 2) = 32
12
6 Programas e Programao
O hardware do computador, constitudo de placas e dispositivos mecnicos e eletrnicos, precisa do
software para lhe dar vida: programas, com finalidades bem determinadas, que faam o que os
usurios querem ou precisam. H programas para editar textos, para fazer clculos, jogos e milhares de
outras finalidades. Alguns programas maiores, como processadores de texto, planilhas eletrnicas e
navegadores da Internet, so de fato agrupamentos de dezenas de programas relacionados entre si.
Programas so constitudos de instrues e comandos que o processador do computador
entende, do tipo: faa isso, faa aquilo. Esses comandos devem estar representados em uma linguagem.
Talvez voc no esteja ciente de que est familiarizado com vrios tipos de linguagem. Alm do
Portugus, h linguagens para inmeras finalidades: sinais, faixas e placas de trnsito, gestos com a
mo e com a cabea, o Braille, a linguagem dos surdos-mudos etc. At para falar com bebs temos
formas especficas! Tambm h formas de linguagem mais simples para nos comunicarmos com
mquinas, como a televiso, o videocassete, a calculadora. Ningum "chama" verbalmente um
elevador, nem "diz" TV qual canal sintonizar; se voc no fizer algo que os aparelhos entendam, no
vai conseguir o que quer. Assim o computador: voc deve comand-lo de uma forma que ele entenda
e faa o que voc est solicitando.
Para que algo acontea no computador, no basta um programa; os comandos do programa
devem ser executados. Programas de computador so como filmes: uma coisa a pelcula em um rolo,
contendo uma sequncia de imagens. Outra coisa colocar o filme em um projetor e assisti-lo na
telona. Os programas ficam guardados em arquivos no Disco Rgido ou CD, DVD, enfim, at que seja
comandada (acionada) sua execuo. So ento carregados pelo Sistema Operacional para a memria e
s ento acontece (exatamente) o que foi programado, e voc pode perceber o que o programa faz.
Uma diferena entre mquinas em geral e o computador que este pode fazer muito mais
coisas, portanto precisa de uma variedade maior de comandos. E outra diferena fundamental: o
computador pode armazenar os comandos, agrupados em programas, para execuo posterior.
Programar um computador , portanto, produzir comandos agrupados em programas, em uma
linguagem que o computador entenda e que, quando executados, faam o computador produzir algum
resultado desejado. Um bom programador treinado em algumas habilidades, sendo o objetivo desta
apostila desenvolver na prtica essas habilidades, para isso usando uma linguagem de programao de
computadores chamada Python.
13
7 Linguagem do Computador
A atividade bsica de um computador consiste em executar instrues, atravs de um
microprocessador ou simplesmente processador, s vezes tambm chamado de CPU (Central
Processing Unit Unidade Central de Processamento). O processador, em ltima anlise, recebe
instrues na forma de impulsos eltricos: em um determinado circuito, pode estar ou no fluindo
corrente. Representa-se cada impulso por 1 ou 0, conforme passe corrente ou no. Esta a menor
unidade de informao que pode ser representada em um computador, e chamada bit.
A CPU recebe instrues e dados na forma de bits agrupados de 8 em 8; cada conjunto de 8 bits
chamado byte. De uma forma simplificada, um byte, ou seja, um conjunto de 8 impulsos eltricos
(ou sua ausncia), constitui uma instruo ou um dado (na verdade, uma instruo pode ocupar mais de
um byte). Essa unidade de informao representada pelo nmero correspondente no sistema decimal.
Dessa forma, ao byte 00000001 associa-se o nmero 1, ao byte 00000011 associa-se o nmero 3, ao
00000100 o nmero 4 e assim por diante. Um byte pode armazenar, portanto, um nmero de 0 a 255
(11111111).
A memria RAM (Random Access Memory - Memria de Acesso Aleatrio) de um
computador constituda de uma sequncia de milhares ou milhes de bytes, cada um identificado por
um nmero que constitui o seu endereo (veja a Tabela 4). O processador tem a capacidade de buscar
o contedo da memria e executar instrues ali armazenadas. A CPU tambm contm algumas
unidades de memria, chamados registradores, identificados por nomes como AX, CS e IP, que
tambm armazenam nmeros e servem a vrias funes.
1
56
2
23
3
0
4
5
247 154
6
87
...
...
14
Uma linguagem de programao de alto nvel possui vrias caractersticas em comum com a
linguagem humana. Elas possuem um alfabeto (letras, nmeros e outros smbolos) e palavras. Frases
podem ser construdas com as palavras, respeitando-se certas regras. O conjunto de regras de
construo de palavras e frases numa linguagem de alto nvel, assim como nas linguagens comuns,
chama-se sintaxe. Cada Linguagem de Programao tem a sua sintaxe que deve ser seguida para que
os programas sejam executados corretamente.
IDLE: um ambiente de desenvolvimento integrado (IDE - Integrated Development Environment) para a Linguagem de
Programao Python.
Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira
15
16
9 Instalando Python
necessrio instalar o Interpretador da Linguagem Python. O interpretador Python no vem
instalado com o Microsoft Windows, ou seja, deve-se fazer download da Internet. No Mac OS X ou no
Linux, provavelmente j esteja instalado juntamente com o Sistema Operacional.
Como Python Software Livre, pode ser baixado tranquilamente e gratuitamente no site
http://www.python.org. Na Figura 6 pode ser observada a opo DOWNLOAD na coluna da esquerda
na pgina web.
17
No Windows, deve ter uma pasta no menu Iniciar > Programas > Python 3.3 > IDLE
18
possvel usar qualquer Editor de Textos para fazer um programa na Linguagem Python e
depois apenas usar o Interpretador para Executar o programa, ou ento, pode-se usar o prprio Editor
do Interpretador, da seguinte forma: na janela do Interpretador, conforme Figura 8 (pgina anterior),
clique no menu File > New Window. Aparecer a janela a seguir:
Essa janela do Editor de Textos parecida com a do Interpretador, mas tem alguns menus
diferentes. Neste ambiente sero digitados os cdigos-fontes dos programas e, depois de Salvar, sero
executados atravs da opo Run (ou F5) do menu. Ao salvar um arquivo estando neste editor, deve-se
escolher apenas o nome do arquivo, pois a extenso aparecer automaticamente. Os programas em
Python tem a extenso .py
19
10 Converso do Programa-Fonte
Como o computador no entende as instrues de um programa-fonte (ou cdigo-fonte), para que este
possa ser executado, precisa ser convertido para a linguagem que o computador reconhece, a
linguagem de mquina. Uma instruo em uma linguagem de alto nvel pode corresponder a centenas
ou at milhares de instrues em linguagem de mquina. A converso feita por programas
apropriados, e pode ser feita antes ou durante a execuo do programa.
20
11.3 Compilador/Interpretador
Uma vez digitado o texto do programa (no editor de textos), na linguagem de programao escolhida,
preciso convert-lo para linguagem de mquina. Para isso, necessita-se de um compilador ou um
interpretador (depende da linguagem usada, como visto em captulos anteriores). Para a linguagem
Python que a apresentada nesta apostila, existem vrias IDEs para desenvolvimento. Na pgina
oficial do Python no Brasil encontra-se uma lista com breves explicaes sobre cada uma para poder
escolher: http://www.python.org.br/wiki/IdesPython.
21
13 Comentrios em Python
Nas linguagens de programao, normalmente existe alguma forma de comentar uma linha ou um
conjunto de linhas de cdigo para documentar o programa em questo. importante documentar o
cdigo-fonte dos programas, pois assim facilita o entendimento caso outra pessoa precise estudar esse
cdigo ou at mesmo se o prprio programador, algum tempo depois, necessitar entender ou lembrar
do programa. Normalmente usa-se comentrios ao longo do cdigo para explicar o que tal comando ou
conjunto de comandos faz, para que serve, o que est acontecendo no programa naquele instante,
enfim, documentar o que o programa faz e como funciona.
Em Python, tem duas maneiras de incluir comentrios ao longo dos programas: pode-se usar
trs apstrofos ( ''' ) ou o caractere sustenido ( # ). Uma observao importante: os comentrios
usados nos cdigos de programas, s so vistos por quem analisar o cdigo-fonte daquele programa,
ou seja, ao executar o programa no se v os comentrios!
22
23
14 Tipos de Dados
Em muitas linguagens de programao necessrio saber e se preocupar com os tipos de dados
existentes. J em Python, no necessrio se preocupar tanto com os tipos de dados, pois no
preciso declarar os tipos juntamente com as variveis. Em Python as variveis so implicitamente
declaradas, ou seja, o tipo delas o tipo do valor que esto recebendo.
As linguagens de programao mais populares tm diversos tipos de dados integrados e Python
no diferente em relao a isso. Por exemplo, a linguagem de programao C possui tipos de nmero
inteiro e ponto flutuante. Considerando a linhagem das mesmas, no surpreendente que a linguagem
Java e C# tambm possuam. Isso significa que em um programa em C, possvel escrever int i =
100 para criar e inicializar uma varivel de nmero inteiro. O mesmo possvel na linguagem Java e
C#. J em Python faz-se isso de forma mais direta: i =100.
A seguir apresentada uma tabela com alguns tipos bsicos de dados nativos de Python:
Tipo de Dado
Descrio
Exemplo da Sintaxe
NMEROS
Int
Float
Long
complex
CARACTERES
str
frase ou palavra
BOOLEAN
bool
24
O tipo de uma varivel pode mudar conforme o valor atribudo a ela (int, float, string etc.). Exemplo:
>>> a ="1"
>>> b = 1
>>> a+b
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects
Observao importante: a linguagem Python permite usar L minsculo com os nmeros do tipo long,
mas recomendado usar apenas L maisculo para evitar confuso com o nmero 1. Python exibe os
inteiros longos com L maisculo.
long (x)
float (x)
complex (x)
complex(x,y)
25
Tipo de Dado
Nmeros Inteiros
Nmeros Decimais5 (Float)
Strings
Alm desse uso, % um marcador de posio, ou seja, serve para sinalizar onde Python dever
inserir um nmero quando deseja-se imprimir uma mensagem na tela que contenha nmeros ou
variveis numricas.
Exemplos:
val = 8.5
msg = "voce tirou %f na prova"
print(val)
print(msg)
print(msg % val)
Nmeros Decimais: indicam os nmeros que no so inteiros. Geralmente aps o algarismo das unidades, usa-se uma
vrgula (em Python usa-se ponto), indicando que o algarismo a seguir pertence ordem das casas decimais (parte
fracionria).
Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira
26
Entendendo o que aconteceu nesses dois exemplos citados (pgina 26): Python substituiu a
marca %f pelo valor da varivel val. assim que funciona: a partir de uma string (mensagem: frase,
palavra) com marcas de posio e um ou mais valores, o operador % produz uma nova string com os
valores inseridos nas respectivas posies. Veja agora um exemplo com dois valores:
valor = 3.50
frase = "Uma laranja custa %f e 12 laranjas custam %f"
print (frase % (valor, valor*12))
Note que os valores valor e valor*12 esto entre parnteses. Isso obrigatrio quando
deseja-se passar mais de um valor para o operador %. O smbolo %f serve para informar ao Python
que o valor a ser inserido naquela posio um float. Se quiser limitar o nmero de casas aps o ponto
decimal, basta usar um formato, ou seja, tem que formatar o nmero, da seguinte maneira:
valor = 3.50
frase = "Uma laranja custa %.2f e 12 laranjas custam %.1f"
print (frase % (valor, valor*12))
Aps o primeiro marcador %, a indicao .2 determina que devem aparecer duas casas
decimais aps o ponto, bem como o .1, aps o segundo marcador %, determina apenas uma casa
decimal.
27
15 Instruo Ler
Como visto no captulo 4 Instruo Escrever, existem basicamente duas instrues principais em
algoritmos (e em programao em geral) que so: Escrever e Ler. No captulo 4, foi apresentada a
instruo Escrever. Agora, neste captulo, ser apresentado o funcionamento da instruo Ler.
A instruo Ler utilizada quando deseja-se obter informaes do teclado do computador,
ou seja, um comando de Entrada de Dados. Resumindo: usa-se a instruo Ler, quando necessita-se
que o usurio do programa digite alguma informao (e posteriormente do programa). O comando
Ler para ler do teclado do computador.
Tanto no Diagrama de Chapin quanto em Portugus Estruturado representa-se a entrada de
dados atravs da palavra Ler (ou Leia). J em Fluxogramas a representao da entrada de dados feita
atravs de uma forma geomtrica especfica [GOM04] [MAR03].
Exemplo Prtico 3:
Escreva um algoritmo para ler dois valores e armazenar cada um em uma varivel. A seguir,
armazenar a soma dos dois valores lidos em uma terceira varivel. Escrever o resultado da soma
efetuada.
Matemtica Tradicional
M (N1 + N2) / 2
28
Funo em Python
abs(x)
exp(x)
O exponencial de x: ex
log(x)
log10(x)
max(x1, x2,...)
min(x1, x2,...)
pow(x, y)
round(x [,n])
sqrt(x)
29
Funo em Python
choice(seq)
random()
shuffle(lst)
uniform(x, y)
Na pgina oficial do Python encontra-se uma lista completa das funes predefinidas da
linguagem com explicaes detalhadas e exemplos: http://docs.python.org/2/library/functions.html.
30
18 Expresses Aritmticas
As expresses aritmticas so escritas linearmente, usando-se a notao matemtica. A Tabela 11
apresenta dois exemplos de representao de expresses aritmticas em Python:
Expresso Aritmtica
) (
(
Representao em Python
sqrt(P*(P-A)*(P-B)*(P-C))
)
)
A-B*(C+D/(E-1)-F)+G
Exemplo Prtico 4:
Escreva um algoritmo para ler um valor. Se o valor lido for igual a 6, escrever a mensagem Valor
lido o 6, caso contrrio escrever a mensagem Valor lido no o 6.
Quando se est utilizando algoritmos com seleo, pode-se utilizar dois tipos de estruturas diferentes,
dependendo do objetivo do algoritmo, chamadas de "Seleo Mltipla", cujos tipos so: Estrutura
Aninhada e Estrutura Concatenada. Os captulos 18.1 e 18.2 a seguir, apresentam essas duas estruturas
com suas respectivas caractersticas.
31
32
Como pode ser observado nessas duas respostas apresentadas para o exerccio 35 (estrutura
aninhada e estrutura concatenada), existe uma grande diferena entre as duas estruturas, ou seja, uma
caracterstica de execuo do algoritmo. Voc saberia dizer qual esta diferena?6
Resposta: A execuo da estrutura aninhada mais rpida que a concatenada, ou seja, mais eficaz. Pois a estrutura
concatenada, segue sendo executada mesmo depois de ter encontrado a resposta. A forma aninhada mais otimizada!
33
20 Operadores Relacionais
Operaes relacionais so as comparaes permitidas entres valores, variveis, expresses e
constantes. A Tabela 12 a seguir, apresenta os operadores relacionais utilizados nos algoritmos e na
programao em geral:
Smbolo do Operador
>
<
==
>=
<=
!=
Significado da Operao
Smbolo Matemtico
>
<
=
maior que
menor que
Igual
maior ou igual
menor ou igual
Diferente
Tabela 12: Operadores Relacionais
Comparaes Vlidas
Exemplos
varivel e constante
X == 3
varivel e varivel
A != B
varivel e expresso
Y == W + J
expresso e expresso
(X + 1) < (Y + 4)
34
21 Seleo em Python
Estrutura de seleo (ou estrutura condicional) uma estrutura de desvio do fluxo de controle, presente
em linguagens de programao, que realiza diferentes aes dependendo se a seleo (ou condio)
verdadeira ou falsa. Ou seja, nem sempre deseja-se que todas as linhas de cdigo de um programa
sejam executadas. Muitas vezes necessrio decidir quais partes do programa devem ser executadas,
ou no, dependendo do resultado de uma condio (um teste).
Na linguagem Python, a estrutura de deciso o if, sendo que a pode-se apresentar de duas
formas: simples ou composta. Nos captulos a seguir a estrutura apresentada em detalhes.
O recuo de uma ou vrias linhas de cdigo, serve para delimitar um bloco de cdigo, na linguagem de programao
Python. Esse recuo denominado indentation, em ingls. Em portugus alguns descrevem como indentao, outros como
endentao, que significa entalhe, recorte dentado.
Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira
35
Nesse exemplo acima, l-se: se a menor que b ento escreve na tela "O primeiro valor
menor..., seno, escreve na tela Tchau!. Else significa seno, em portugus.
Quando forem necessrios vrios ifs, Python apresenta duas maneiras de us-los,
apresentadas a seguir (resposta do exerccio 35).
36
22 Operadores Lgicos
Os operadores lgicos permitem que mais de uma condio seja testada em uma nica expresso, ou
seja, pode-se fazer mais de uma comparao (mais de um teste) ao mesmo tempo. A Tabela 14 a
seguir, apresenta os operadores lgicos utilizados na construo de algoritmos e na programao em
geral:
Operao
Operador no Algoritmo
Operador em Python
No
not
and
Ou
or
Negao
Conjuno
Disjuno (no-exclusiva)
Note que a Tabela 14 acima, apresenta os operadores lgicos j ordenados de acordo com suas
prioridades, ou seja, se na mesma expresso tiver o operador ou e o operador no, por exemplo,
primeiro deve-se executar o no e depois o ou.
De uma forma geral, os resultados possveis para os operadores lgicos podem ser vistos na
Tabela 15 abaixo, conhecida como Tabela Verdade:
Variveis
Operaes Lgicas
AeB
A ou B
no A
F
F
V
V
F
V
F
V
F
F
F
V
F
V
V
V
V
V
F
F
Quando eu no saio?
37
B)
C)
Prioridade de Execuo
no
not
1.
and
2.
or
or
3.
Ateno: Vrios nveis de parnteses tambm podem ser usados em expresses lgicas para fixar
entre os operadores uma ordem de execuo, diferente da indicada pela prioridade dada na Tabela 16.
Lembrando que as operaes entre parnteses sempre tm prioridade mxima. Ento, se quiser uma
sugesto: use parnteses para definir a ordem de execuo das operaes e durma tranquilo!
38
Resultados
a) no A
no V = F
b) A e B
V e F = F
c) no (B ou C)
no (F ou F) = no F = V
d) no B ou C
(no F) ou F = V ou F = V
Ao verificar as respostas (errada e correta) do exemplo nmero 5 acima, pode-se constatar que
quando necessita-se fazer mais de um teste ao mesmo tempo, deve-se utilizar os operadores lgicos
apresentados neste captulo na Tabela 14.
Resumo das Prioridades de Operaes: se houver vrios tipos de operadores em uma mesma
expresso, a ordem de execuo a descrita na Tabela 17 a seguir.
Tipos de Operaes
Prioridades de Execuo
Operadores em Python
1. Aritmticas
* / + -
2. Relacionais
3. Lgicas
not and or
Tabela 17: Resumo das Prioridades de Operaes
Exemplo:
Supondo que salario = 100 e idade = 20, resolvendo a expresso abaixo:
salario > 1000 and idade > 18
39
Exemplo 1:
Exemplo 2:
A= 4
B=3
C =A+ B
D =A- B
Escrever A, B, C, D
Escrever Fim do Algoritmo
Exemplo 3:
Resposta em Chapin:
Resposta em Fluxograma:
40
Exemplo 4:
Resposta em Chapin:
Exemplo 5:
Resposta Errada:
Resposta Correta:
41
Referncias
Para elaborao e construo desta apostila foram consultados vrios tipos de materiais, como por
exemplo: livros, outras apostilas, pginas web etc. Algumas das referncias consultadas esto
apresentadas neste captulo, mas grande parte do material disponibilizado na apostila, como exemplos
e exerccios foram utilizados das aulas da disciplina de Algoritmos e Programao da faculdade de
Anlise de Sistemas, da UCPel - Universidade Catlica de Pelotas, com o Prof. Ricardo Andrade
Cava (http://lp.ucpel.tche.br, http://cpu.ucpel.tche.br, http://graphs.ucpel.tche.br).
[ALG96] The ALGOL Programming Language. Disponvel em:
http://www.engin.umd.umich.edu/CIS/course.des/cis400/algol/algol.html. Acesso em: Jun.
2006.
[BUF03] BUFFONI, Salete. Apostila de Algoritmo Estruturado - 4 edio. Disponvel em:
http://www.saletebuffoni.hpg.ig.com.br/algoritmos/Algoritmos.pdf. Acesso em: Mar. 2004.
[CHA70] CHAPIN, Ned. Flowcharting with the ANSI Standard: A Tutorial. ACM Computing
Surveys, Volume 2, Number 2 (June 1970), pp. 119-146.
[CHA74] CHAPIN, Ned. New Format for Flowcharts, Software - Practice and Experience.
Volume 4, Number 4 (October-December 1974), pp. 341-357.
[CHA02] CHAPIN, Ned. Maintenance of Information Systems. Disponvel em:
http://www.iceis.org/iceis2002/tutorials.htm. Acesso em: Jun. 2006.
[COS04] COSTA, Renato. Apostila de Lgica de Programao - Criao de Algoritmos e
Programas. Disponvel em: http://www.meusite.pro.br/apostilas2.htm. Acesso em: Jun.
2006.
[GOM04] GOMES, Abel. Algoritmos, Fluxogramas e Pseudo-cdigo - Design de Algoritmos.
Disponvel em: http://mail.di.ubi.pt/~programacao/capitulo6.pdf. Acesso em: Jun. 2006.
[KOZ06] KOZAK, Dalton V. Tcnicas de Construo de Algoritmos. Disponvel em:
http://minerva.ufpel.edu.br/~rossato/ipd/apostila_algoritmos.pdf. Acesso em: Jun. 2006.
[MAR03] MARTINS, Luiz E. G.; ZLIO, Valria M. D. Apostila da Disciplina Introduo
Programao. Disponvel em: http://www.unimep.br/~vmdzilio/apostila00.doc. Acesso em:
Jun. 2006.
[MEN00] MENEZES, Nilo N. C. Introduo Programao com Python: Algoritmos e Lgica de
Programao para Iniciantes. So Paulo, Novatec Editora, 2010.
[NAS73] NASSI, Ike; SHNEIDERMAN, Ben. Flowchart Techniques for Structured
Programming. ACM SIGPLAN Notices, Volume 8, Number 8 (August 1973), pp.12-26.
[NAS04] NASSI, Ike. Ike Nassi's Home Page. Disponvel em: http://www.nassi.com/ike.htm . Acesso
em: Jun. 2006.
[PRO04] Programming Languages. Disponvel em:
http://www.famed.ufrgs.br/disciplinas/inf_med/prog_ling.htm. Acesso em: Mar.2004.
[SAN04] SANTANA, Joo. Algoritmos & Programao. Disponvel em:
http://www.iesam.com.br/paginas/cursos/ec/1ano/aulas/08/joao/APunidade-1.pdf. Acesso
em: Mar. 2004.
[SHN03] SHNEIDERMAN, Ben. A short history of structured flowcharts (Nassi-Shneiderman
Diagrams). Disponvel em: http://www.cs.umd.edu/~ben/ Acesso em: Jun. 2006.
42
[TON04] TONET, Bruno; KOLIVER, Cristian. Introduo aos Algoritmos. Disponvel em:
http://dein.ucs.br/napro/Algoritmo/manuais/Manual 20Visualg.pdf. Acesso em: Mar. 2004.
[YOU04] YOURDON, Ed. Ed Yourdon's Web Site. Disponvel em:
http://www.yourdon.com/books/msa2e/CH15/CH15.html. Acesso em: Mar. 2004.
43