Você está na página 1de 43

Apostila

Algoritmos e Programao
- Parte 1 -

Profa. Flvia Pereira de Carvalho

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

Apostila de Algoritmos e Programao Parte 1

22.1 EXPRESSES LGICAS E PRIORIDADES DAS OPERAES ............................................................................................ 38


23 RESPOSTAS DOS EXEMPLOS DESTA APOSTILA ............................................................................................... 40

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

Apostila de Algoritmos e Programao Parte 1

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

Apostila de Algoritmos e Programao Parte 1

Um algoritmo no a soluo de um problema, pois, se assim fosse, cada problema teria


apenas um algoritmo possvel. Um algoritmo um 'caminho' para a soluo de um problema e, em
geral, existem muitos caminhos que levam a uma soluo satisfatria, ou seja, para resolver o mesmo
problema pode-se obter vrios algoritmos diferentes.
Nesta apostila so apresentados os passos bsicos e as tcnicas para a construo de algoritmos
atravs de trs mtodos para sua representao, que so alguns dos mais conhecidos. O objetivo ao
final da apostila, que voc tenha adquirido capacidade de transformar qualquer problema em um
algoritmo de boa qualidade, ou seja, a inteno que voc aprenda a Lgica de Programao dando
uma base terica e prtica suficientemente boa, para que voc domine os algoritmos e esteja habilitado
a aprender uma Linguagem de Programao posteriormente [BUF03].
Para resolver um problema no computador necessrio que seja primeiramente encontrada uma
maneira de descrever este problema de uma forma clara e precisa. preciso encontrar uma sequncia
de passos que permitam que o problema possa ser resolvido de maneira automtica e repetitiva. Esta
sequncia de passos chamada de algoritmo [GOM04].
A noo de algoritmo central para toda a computao. A criao de algoritmos para resolver
os problemas uma das maiores dificuldades dos iniciantes em programao em computadores
[GOM04].
Uma das formas mais eficazes de aprender algoritmos atravs da execuo de muitos
exerccios. Veja na Tabela 1 algumas dicas de como aprender e como no aprender algoritmos:
Algoritmos no se aprende

Algoritmos se aprende

Copiando algoritmos

Construindo algoritmos

Estudando algoritmos prontos

Testando algoritmos

Tabela 1: Dicas de como aprender e como no aprender algoritmos

O aprendizado da Lgica essencial para a formao de um bom programador, servindo como


base para o aprendizado de todas as Linguagens de Programao, estruturadas ou no. De um modo
geral esses conhecimentos sero de supra importncia, pois ajudaro no cotidiano, desenvolvendo um
raciocnio rpido [COS04].

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

Apostila de Algoritmos e Programao Parte 1

2 Formas de Representao de Algoritmos


Os algoritmos podem ser representados de vrias formas, como por exemplo:
a) Atravs de uma lngua (portugus, ingls etc.): forma utilizada nos manuais de instrues, nas
receitas culinrias, bulas de medicamentos etc.
b) Atravs de uma linguagem de programao (Python, C, Delphi etc.): esta forma utilizada por
alguns programadores experientes, que "pulam" a etapa do projeto do programa (algoritmo) e passam
direto para a programao em si.
c) Atravs de representaes grficas: so bastante recomendveis, j que um "desenho" (diagrama,
fluxograma etc.) muitas vezes substitui, com vantagem, vrias palavras.
Cada uma dessas formas de representar um algoritmo tem vantagens e desvantagens, cabe
pessoa escolher a forma que melhor lhe convir. Nesta disciplina sero apresentadas trs formas de
representao de algoritmos (que so algumas das mais utilizadas), so elas:
- Diagrama de Nassi-Shneiderman (Diagrama de Chapin)
- Fluxograma (Diagrama de Fluxo)
- Portugus Estruturado (Pseudocdigo, Portugol ou Pseudolinguagem)
No existe consenso entre os especialistas sobre qual a melhor maneira de representar um
algoritmo. Nesta apostila ser incentivada a utilizao do Diagrama Nassi-Shneiderman, mais
conhecido como Diagrama de Chapin (l-se chapn), por ser uma das formas mais didticas de
aprender e representar a lgica dos problemas. Mas, fica a critrio de cada um escolher a forma que
achar mais conveniente ou mais fcil de entender. Nos prximos captulos so apresentadas breves
explicaes sobre cada uma dessas trs formas de representar algoritmos e alguns exemplos.

2.1 Diagrama Nassi-Shneiderman


Os Diagramas Nassi-Shneiderman, tambm conhecidos como Diagramas de Chapin, surgiram nos
anos 70 [YOU04] [SHN03] [CHA02] [NAS04] como uma maneira de ajudar nos esforos da
abordagem de programao estruturada. Um tpico diagrama Nassi-Shneiderman apresentado na
Figura 1 abaixo. Como pode-se observar, o diagrama fcil de ler e de entender, cada "desenho"
representa uma ao (instruo) diferente.

Figura 1: Exemplo de Diagrama Nassi-Shneiderman


Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

Apostila de Algoritmos e Programao Parte 1

A ideia bsica deste diagrama representar as aes de um algoritmo dentro de um nico


retngulo, subdividindo-o em retngulos menores, que representam os diferentes blocos de seqncia
de aes do algoritmo. Para saber mais sobre o histrico desses diagramas e conhecer os seus criadores
acesse o site: http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/. Para ter acesso ao primeiro
artigo elaborado pelos autores do Diagrama de Chapin, escrito em 1973, acesse o seguinte endereo
onde voc pode fazer o download do artigo: http://fit.faccat.br/~fpereira/p12-nassi.pdf.

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].

Figura 2: Exemplo de Fluxograma

2.3 Portugus Estruturado


O Portugus Estruturado uma forma especial de linguagem bem mais restrita que a Lngua
Portuguesa e com significados bem definidos para todos os termos utilizados nas instrues
(comandos).
Essa linguagem tambm conhecida como Portugol (juno de Portugus com Algol [ALG96]
[PRO04]), Pseudocdigo ou Pseudolinguagem. O Portugus Estruturado na verdade uma
simplificao extrema da lngua portuguesa, limitada a pouqussimas palavras e estruturas que tm
significado pr-definido, pois deve-se seguir um padro de escrita. Emprega uma linguagem
intermediria entre a linguagem natural e uma linguagem de programao, para descrever os
algoritmos.
A sintaxe do Portugus Estruturado no precisa ser seguida to rigorosamente quanto a sintaxe
de uma linguagem de programao, j que o algoritmo no ser executado como um programa
[TON04].

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

Apostila de Algoritmos e Programao Parte 1

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.

Figura 3: Exemplo de Portugus Estruturado

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

Apostila de Algoritmos e Programao Parte 1

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].

Figura 4: Ilustrao de Varivel [TON04]

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

Apostila de Algoritmos e Programao Parte 1

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

idade 12 (l-se: idade recebe 12)

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:

nota1 + nota2 valor

(notao ERRADA!!!)

Ateno: Esta operao apresentada acima no possvel, no est correta esta atribuio!

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

10

Apostila de Algoritmos e Programao Parte 1

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

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

11

Apostila de Algoritmos e Programao Parte 1

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.

Tabela 3: Operadores Aritmticos e Prioridades de Execuo

Nas linguagens de programao e, portanto, nos exerccios de algoritmos, as expresses


matemticas sempre obedecem s regras matemticas comuns, ou seja:

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

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

12

Apostila de Algoritmos e Programao Parte 1

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.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

13

Apostila de Algoritmos e Programao Parte 1

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

...
...

Tabela 4: Esquema Simplificado da Memria RAM - endereos e respectivos valores.

Os nmeros armazenados na memria podem representar dados ou instrues. Quando


representando instrues, tm significados especficos para a CPU. Por exemplo, a CPU em geral
recebe comandos do tipo (mas no na forma):
Armazene 9 no registrador DS
Armazene 204 no endereo de memria 1.234.244
Some 5 ao contedo do registrador AL
Se a ltima instruo deu resultado 0, passe a executar as instrues a partir do endereo de
memria 457.552

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

14

Apostila de Algoritmos e Programao Parte 1

8 Linguagens de Alto Nvel


Escrever programas de computador em linguagem de mquina, apesar de os programas produzidos
serem rpidos, pode ser muito difcil e trabalhoso, alm de exigir conhecimentos profundos sobre o
computador.
Para no ter que programar nessa linguagem difcil, foram desenvolvidas as linguagens de alto
nvel. Estas permitem descrever o que deseja-se que o computador faa utilizando instrues mais
prximas da linguagem humana. Alm de facilitarem as descries dos processos a serem executados,
as linguagens de alto nvel simplificam a utilizao da memria do computador, diminuindo a
quantidade de detalhes com os quais deve ocupar-se o programador. Assim, ao invs de lidar com bits,
bytes, endereos de memria e uma infinidade de outros detalhes, o programador pode pensar em
"limpar a tela", "escrever uma linha de texto", somar e subtrair variveis como na matemtica e tomar
uma deciso na forma "se...ento".
Veja um exemplo especfico as instrues abaixo, escritas na linguagem Python, determinam
que seja escrito na tela a palavra Ol! e, logo aps, uma soma seja efetuada e o resultado desta tambm
mostrado na tela:
print(Ol!)
print(23+44+6)
O resultado na tela seria o seguinte (usando IDLE2 que a IDE bsica do Python):

Figura 5: Tela da IDE bsica do Interpretador Python

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

Apostila de Algoritmos e Programao Parte 1

8.1 Linguagem Python


Porque foi escolhida a Linguagem Python para ensinar programao de computadores nesta apostila?
Toda programao de computadores feita atravs de uma ou mais linguagens de programao,
portanto para aprender a programar necessrio aprender ao menos uma linguagem de programao.
O objetivo desta apostila no ensinar uma linguagem especfica, mas sim ensinar a programar de
uma forma geral. Ou seja, a linguagem apenas uma ferramenta para esse aprendizado. O mais
importante aprender a lgica de programao.
Existem vrias linguagens de programao, como C, C++ e Java, por exemplo. Essas
linguagens so mais complexas, ento, por isso, optou-se pelo uso de Python, devido sua
simplicidade e clareza.
A linguagem Python foi escolhida por ser uma linguagem muito verstil, usada no s no
desenvolvimento Web, mas em muitos outros tipos de aplicaes. Embora simples, tambm uma
linguagem poderosa, podendo ser usada para administrar sistemas e desenvolver grandes projetos.
uma linguagem clara e objetiva, pois vai direto ao ponto, sem rodeios. Na pgina oficial do Python no
Brasil (http://www.python.org.br/wiki/EmpresasPython), possvel verificar algumas empresas que
utilizam a linguagem. Ento o leitor desta apostila estar aprendendo a programar em uma linguagem
que poder utilizar na prtica e no ficar apenas na teoria.
O nome Python uma homenagem ao grupo humorstico ingls Monty Python, adorado por
geeks (nerds) de todo o mundo.
Apesar de sua sintaxe simples e clara, Python oferece muitos recursos disponveis tambm em
linguagens mais complexas como Java e C++, como por exemplo: programao orientada a objetos,
recursos avanados de manipulao de textos, listas e outras estruturas de dados, possibilidade de
executar o mesmo programa sem modificaes em vrias plataformas de hardware e sistemas
operacionais.
Em resumo, Python oferece uma sintaxe to simples quanto a linguagem PHP, por exemplo,
mas mais verstil. Permite explorar vrios recursos de Java e C++ de uma forma mais acessvel. Por
esses motivos acredita-se que seja a melhor escolha para quem quer comear a programar hoje
(http://www.python.org.br/wiki/AprendaProgramar).
Python software livre, ou seja, pode ser utilizada gratuitamente, graas ao trabalho da Python
Foundation (http://www.python.org/) e de inmeros colaboradores. Python pode ser utilizada em
praticamente qualquer arquitetura de computadores ou sistema operacional, como Linux, FreeBSD,
Microsoft Windows ou Mac OS X.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

16

Apostila de Algoritmos e Programao Parte 1

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.

Figura 6: Site da Python Foundation

A seguir, na Figura 7, aparecem as opes para download, de acordo com o Sistema


Operacional utilizado. No esquea tambm, de verificar se seu sistema 32 ou 64 bits.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

17

Apostila de Algoritmos e Programao Parte 1

Figura 7: Pgina de Download do Python

9.1 Usando o Interpretador Python


O IDLE uma interface grfica para o interpretador Python que permite tambm a edio e execuo
dos programas.

No Windows, deve ter uma pasta no menu Iniciar > Programas > Python 3.3 > IDLE

No Linux, abra o terminal e digite: idle-python3.3 &

No Mac OS X, abra o terminal e digite: IDLE3.3 &

A janela inicial do IDLE, no Windows 7, mostrada na Figura 8. No Mac OS X, no Linux ou


em outra verso do Windows, talvez no seja igual a janela da figura, mas ser parecida.

Figura 8: Janela Inicial IDLE Python

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

18

Apostila de Algoritmos e Programao Parte 1

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:

Figura 9: Janela do Editor de Textos do IDLE

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

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

19

Apostila de Algoritmos e Programao Parte 1

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.

10.1 Programa Compilado


Quando o programa-fonte todo convertido em linguagem de mquina antes da execuo,
esse processo chamado de compilao, e os programas que o fazem so chamados compiladores. O
programa resultante chamado programa-objeto (ou cdigo-objeto), que contm instrues em
linguagem de mquina, mas ainda no pode ser executado; para que isso ocorra, necessria outra
etapa chamada "linkedio" ou ligao, efetuada tambm por um programa apropriado chamado
"linkeditor" ou ligador. Na linkedio, so juntados ao cdigo-objeto do programa outros cdigosobjeto necessrios sua execuo. Aps esta etapa, a converso est completa e produz finalmente um
programa executvel pelo computador, observe a Figura 10.

Figura 10: Etapas para Construo de um Programa Executvel pelo Computador

10.2 Programa Interpretado


Quando a converso feita durante a execuo, o processo chamado de interpretao, e o
programa conversor, interpretador. Neste caso, o interpretador permanece na memria, junto com o
programa-fonte, e converte cada instruo e a executa, antes de converter a prxima, ou seja, vai
interpretando e executando linha a linha do programa.
A Linguagem Python interpretada, mas tambm pode ser compilada, se necessrio. Como
visto no captulo 9.1, a IDLE a interface grfica do interpretador Python.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

20

Apostila de Algoritmos e Programao Parte 1

11 Softwares que voc precisa ter ou conhecer


Alguns programas so necessrios s atividades de um programador. Abaixo so citados e explicados
brevemente alguns dos principais softwares necessrios para o programador desenvolver seus
programas:

11.1 Sistema Operacional


Como programador, necessrio ter um mnimo de informaes sobre o sistema ou ambiente
operacional em que vai trabalhar, como por exemplo:
a) Como executar programas
b) Os nomes que pode dar aos arquivos
c) Como organizar seus arquivos em pastas ou subdiretrios
d) Como listar, excluir, renomear e copiar arquivos

11.2 Editor de Textos


Um programa em Python (ou em qualquer outra linguagem de programao) um texto simples, sem
caracteres de controle do tipo negrito, tamanho de fonte, paginao etc. Voc vai precisar de um editor
de textos para digitar seu programa no computador. Editores que produzem tais textos so o Edit, que
vem com o MS-DOS, o Bloco de Notas (NotePad), que vem com o Windows, e vrios outros. Textos
formatados pelo Word ou WordPad, por exemplo, no servem. Os compiladores e interpretadores
comerciais normalmente trazem um editor; us-los ser normalmente mais prtico.

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.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

21

Apostila de Algoritmos e Programao Parte 1

12 Cuidados ao Digitar Programas em Python


Em Python, deve-se tomar cuidado com os seguintes itens:
1. Letras maisculas e minsculas so diferentes. Assim, print e Print so completamente
diferentes, causando um erro caso digite o P maisculo. Quando isso acontece, diz-se que a
linguagem case sensitive3, ou em portugus, sensvel caixa (com relao caixa baixa e
caixa alta, para minsculas e maisculas).
2. Aspas so muito importantes e no devem ser esquecidas. Toda vez que abrir aspas, no
esquea de fech-las. Se esquecer, o programa no funcionar. Observe que o IDLE muda a cor
do texto que est entre aspas, facilitando essa verificao.
3. Parnteses no so opcionais em Python. No remova os parnteses dos programas e preste a
mesma ateno dada s aspas para abri-los e fech-los. Todo parntese aberto deve ser fechado.
4. Espaos so muito importantes. A linguagem Python se baseia na quantidade de espaos em
branco antes do incio de cada linha para realizar diversas operaes. O IDLE tambm ajuda
nesses casos, avisando sobre problemas de alinhamento (recuo).

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!

Python case sensitive, ou seja, faz diferena entre maisculas e minsculas!

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

22

Apostila de Algoritmos e Programao Parte 1

13.1 Comentrio de Uma Linha


Para fazer comentrio de apenas uma linha na Linguagem Python, inicia-se com o caractere #
(sustenido, tambm conhecido como cerquinha). Ento, tudo que estiver depois do caractere # ser
ignorado pelo interpretador, portanto considerado como comentrio do cdigo-fonte do programa (o
contedo que estiver logo aps o caractere # no ser executado no programa). O fechamento do
comentrio acaba quando acabar a linha do interpretador, ou seja, no necessrio fechar o
comentrio de uma linha, ele fechado automaticamente com a quebra de linha (ao mudar de linha no
interpretador). Com isso, cada linha nova de comentrio deve-se indicar novamente o caractere #.
Abaixo, exemplo de cdigo-fonte com comentrios de uma linha na linguagem Python:
#comentrio de uma linha pode ser usado no incio da linha
print ("Ol Mundo!") #mas tambm pode ser acrescentado depois de um comando

Figura 11: Resultado da Execuo Exemplo Comentrio de Uma Linha

13.2 Comentrio de Vrias Linhas


Na linguagem Python, tambm possvel fazer comentrios no cdigo-fonte, usando vrias linhas, ou
seja, um comentrio longo, para isso usa-se trs apstrofos para iniciar o comentrio e mais trs
apstrofos para fechar, finalizar o comentrio. Com isso, tudo que estiver entre esse conjunto de
apstrofos, no ser executado no programa (no ser interpretado pelo interpretador Python), ser
ignorado.
Abaixo, exemplo de cdigo-fonte com comentrios de uma linha na linguagem Python:
'''
Comentrio usando vrias linhas em Python, pode-se escrever o que
quiser e utilizar quantas linhas forem necessrias.
'''
print ("Ol Mundo!")

Figura 12: Resultado da Execuo Exemplo Comentrio de Vrias Linhas


Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

23

Apostila de Algoritmos e Programao Parte 1

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

Inteiros: nmeros inteiros de preciso fixa. So


positivos ou negativos sem ponto decimal.

Float

Ponto flutuante (tem parte fracionria): decimal.


Valores de ponto flutuante reais, representam
nmeros reais e so escritos com um ponto decimal
3.1415927, -10.5, 0.0, 15.20
dividindo as partes inteira e fracionria. Podem
tambm estar na notao cientfica, com E ou e
indicando a potncia de 10 (2.5e2 = 2.5 x 102 = 250).

Long

Inteiros Longos: so inteiros de tamanho ilimitado,


escritos como nmeros inteiros e seguido pela letra
L, maiscula ou minscula.

complex

Nmeros complexos: so da forma de a + bj, onde


a e b so floats e J (ou j) representa a raiz quadrada
de -1 (que um nmero imaginrio). a a parte real
3+2j, 20J, 3.14j
do nmero, e b a parte imaginria. Os nmeros
complexos no so muito utilizados na programao
Python.

10, 100, -786, 48

10897, 51924361L, -122l

CARACTERES
str

String: uma cadeia de caracteres imutvel (palavra,


frase etc.) entre aspas.

frase ou palavra

BOOLEAN
bool

Booleano: um tipo de dado primitivo4 que possui


dois valores, que podem ser considerados como 0 ou True ou False
1, verdadeiro ou falso.
Tabela 5: Alguns Tipos Bsicos de Dados Nativos de Python
Fonte: http://www.tutorialspoint.com/python/python_numbers.htm

Ateno: em Python, necessrio declarar o tipo, quando se l do teclado alguma informao!


4

Tipos Primitivos: so aqueles j embutidos no ncleo da linguagem.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

24

Apostila de Algoritmos e Programao Parte 1

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.

14.1 Converso de Tipos Numricos


Python converte nmeros internamente em uma expresso contendo tipos mistos para um tipo comum.
Mas, s vezes, necessrio converter um nmero explicitamente de um tipo para outro, para satisfazer
as exigncias de um parmetro de operador ou funo. Abaixo esto alguns exemplos de converses:
int (x)

Converte x para um inteiro

long (x)

Converte x para um inteiro longo

float (x)

Converte x para um ponto flutuante

complex (x)

Converte x para um nmero complexo, com x


sendo a parte real e 0 a parte imaginria
Converte x e y para nmero complexo, sendo x a
parte real e y a parte imaginria

complex(x,y)

Tabela 6: Exemplos de Converses de Tipos Numricos em Python

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

25

Apostila de Algoritmos e Programao Parte 1

14.2 Marcadores e Formatao de Nmeros


Python suporta diversas operaes com marcadores. A tabela 7 apresenta os principais tipos de
marcadores. Veja que os marcadores so diferentes de acordo com o tipo de varivel que est sendo
utilizada.
Marcador em Python
%d
%f
%s

Tipo de Dado
Nmeros Inteiros
Nmeros Decimais5 (Float)
Strings

Tabela 7: Marcadores em Python

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

Apostila de Algoritmos e Programao Parte 1

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.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

27

Apostila de Algoritmos e Programao Parte 1

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.

16 Horizontalizao de Frmulas (Linearizao)


Para o desenvolvimento de algoritmos que possuam clculos matemticos, as expresses aritmticas
devem estar horizontalizadas, ou seja, linearizadas e, para isso, deve-se utilizar os operadores
corretamente. Na Tabela 8 a seguir, apresentado um exemplo de uma expresso aritmtica na forma
tradicional e como deve ser utilizada nos algoritmos e em programao em geral (linearmente).

Matemtica Tradicional

Algoritmo (ou Programa)

M (N1 + N2) / 2

Tabela 8: Exemplo de Horizontalizao de Expresses Aritmticas

As expresses matemticas na forma horizontalizada no so apenas utilizadas em algoritmos,


mas tambm na maioria das linguages de programao.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

28

Apostila de Algoritmos e Programao Parte 1

17 Funes Numricas Predefinidas


A Linguagem de Programao Python (o interpretador Python) oferece vrias funes predefinidas,
como funes numricas, matemticas, de converso etc. que facilitam e colaboram com o
desenvolvimento de programas. Em ingls, so chamadas de built-in functions.

17.1 Funes Matemticas


Python inclui as seguintes funes que executam clculos matemticos (alguns exemplos):

Funo em Python

Descrio do Retorno (resposta da funo)

abs(x)

O valor absoluto de x: a distncia (positiva) entre x e zero

exp(x)

O exponencial de x: ex

log(x)

O logaritmo natural de x, para x > 0

log10(x)

O logaritmo base 10 de x, para x > 0

max(x1, x2,...)

O maior dos seus argumentos: o valor mais prximo de infinito positivo

min(x1, x2,...)

O menor dos seus argumentos: o valor mais prximo de infinito negativo

pow(x, y)

O valor de x**y, ou seja: xy

round(x [,n])

x arredondado para n dgitos a partir do ponto decimal. Python arredonda


longe do zero como um tie-breaker (desempate): round (0.5) 1.0 e
round (-0.5) -1.0

sqrt(x)

Raiz quadrada de x, para x > 0


Tabela 9: Exemplos de Funes Matemticas em Python

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

29

Apostila de Algoritmos e Programao Parte 1

17.2 Funes de Nmeros Randmicos


Nmeros randmicos so usados para jogos, simulaes, testes etc. Python inclui algumas funes
comumente usadas, tais como:

Funo em Python

Descrio do Retorno (resposta da funo)

choice(seq)

Um item aleatrio de uma lista, tupla ou string

randrange ([start,] stop [,step])

Um elemento selecionado aleatoriamente a partir de


um intervalo (iniciar, parar, passo)

random()

Um float aleatrio r, tal que 0 menor ou igual a r e


r menor que 1

shuffle(lst)

Randomiza os itens de uma lista (no lugar). No tem


retorno.

uniform(x, y)

Um float aleatrio r, de tal modo que x menor ou


igual a r e r menor que y

Tabela 10: Exemplos de Funes de Nmeros Randmicos em Python

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.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

30

Apostila de Algoritmos e Programao Parte 1

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

Tabela 11: Exemplo de Representao de Expresso Aritmtica em Python


(Horizontalizao)

19 Algoritmos com Seleo


Os exemplos vistos at agora, nesta apostila, eram puramente sequenciais, ou seja, todas as instrues
eram executadas seguindo a ordem do algoritmo (normalmente, de cima para baixo). Neste captulo,
sero apresentadas algumas estruturas de seleo.
Uma estrutura de seleo, como o prprio nome j diz, permite que determinadas instrues
sejam executadas ou no, dependendo do resultado de uma condio (de um teste), ou seja, o
algoritmo ter mais de uma sada, mais de uma opo que ser executada de acordo com o teste
realizado.

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.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

31

Apostila de Algoritmos e Programao Parte 1

19.1 Estrutura de Seleo Aninhada


A estrutura de Seleo Aninhada normalmente utilizada quando necessrio fazer vrias
comparaes (testes) sempre com a mesma varivel. Esta estrutura chamada de aninhada porque na
sua representao (tanto em Chapin quanto em Portugus Estruturado) fica uma seleo dentro de
outra seleo.
Como exemplo destes dois tipos de estruturas, ser utilizado o exerccio nmero 35 da lista de
exerccios da Apostila de Exerccios de Algoritmos e Programao Parte 1 (pg.8). Abaixo
apresentada a resposta do exerccio 35, representado em Diagrama de Chapin, utilizando a estrutura
Aninhada:

Figura 13: Exemplo de Estrutura de Seleo Aninhada - Resposta do Exerccio 35

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

32

Apostila de Algoritmos e Programao Parte 1

19.2 Estrutura de Seleo Concatenada


A estrutura de Seleo Concatenada normalmente utilizada quando se est comparando (testando)
variveis diferentes, ou seja, independentes entre si. Esta estrutura chamada de concatenada porque
na sua representao (tanto em Chapin quanto em Portugus Estruturado) as selees ficam separadas
uma da outra, e nesse caso, no existe o lado "falso" do Chapin, ou o "Seno" do Portugus.
Abaixo apresentada a resposta do exerccio nmero 35 da lista de exerccios da Apostila de
Exerccios de Algoritmos e Programao Parte 1, representada em Diagrama de Chapin, utilizando a
estrutura de seleo Concatenada:

Figura 14: Exemplo de Estrutura de Seleo Concatenada - Resposta do Exerccio 35

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!

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

33

Apostila de Algoritmos e Programao Parte 1

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

A seguir, na Tabela 13, so apresentados alguns exemplos de comparaes vlidas, ou seja,


possveis testes utilizando os 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)

Tabela 13: Exemplos de Comparaes Vlidas

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

34

Apostila de Algoritmos e Programao Parte 1

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.

21.1 Forma Simples: if


O formato da estrutura condicional if e a sintaxe em Python :
if condio:
bloco de cdigo verdadeiro
O comando if, significa se, traduzindo para o portugus, ento as linhas de cdigo descritas
acima devem ser lidas da seguinte forma: se a condio for verdadeira, faa os seguintes comandos
(se o teste for verdadeiro, execute os comandos a seguir). Se o teste for falso, os comandos sero
ignorados. Para a condio (teste) usa-se os Operadores Relacionais (captulo 19).
Os dois-pontos ( : ), aps a condio, indicam que um bloco de linhas de cdigo vir a seguir
(pode ser apenas uma linha ou vrias linhas de cdigo). Em Python, um bloco representado
deslocando-se o incio da linha para a direita. O bloco continua at a primeira linha com deslocamento
diferente, ou seja, todos os comandos que estiverem com o mesmo deslocamento para a direita, fazem
parte do mesmo bloco de cdigo. O bloco s ser finalizado, quando houver uma linha com
deslocamento diferente. Veja o exemplo a seguir:
a = int(input("Digite um valor: "))
b = int(input("Digite outro valor: "))
if a < b :
print ("O primeiro valor menor que o segundo valor digitado")
print ("Tchau!")
O deslocamento necessrio para delimitar um bloco de cdigo em Python, feito atravs da
endentao7 das linhas de cdigo, ou seja, todos os comandos que fazem parte do mesmo bloco, devem
estar com o mesmo recuo da margem.
Python uma das poucas linguagens de programao que utiliza o deslocamento do texto
direita (recuo) para marcar o incio e o fim de um bloco de comandos. Outras linguagens utilizam
palavras ou caracteres especiais para isso como begin e end, em Pascal ou as famosas chaves ({ }),
em C e em Java.

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

Apostila de Algoritmos e Programao Parte 1

21.2 Forma Composta: if - else


Quando h uma situao em que deseja-se que o programa faa tal coisa, se o teste for verdadeiro, mas
seno, se o teste for falso, deve fazer outra coisa, ento usa-se o comando else, como apresentado no
exemplo a seguir:
a = int(input("Digite um valor: "))
b = int(input("Digite outro valor: "))
if a < b :
print ("O primeiro valor menor que o segundo valor digitado")
else:
print ("Tchau!")

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).

21.2.1 Usando if else de forma aninhada:


numero = int(input("Digite um nmero: "))
if numero < 0:
print("O nmero digitado Negativo")
else:
if numero > 0:
print("O nmero digitado Positivo")
else:
print ("O nmero digitado o Zero")

21.2.2 Usando o comando elif:


numero = int(input("Digite um nmero: "))
if numero < 0:
print("O nmero digitado Negativo")
elif numero > 0:
print("O nmero digitado Positivo")
elif numero == 0:
print ("O nmero digitado o Zero")

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

36

Apostila de Algoritmos e Programao Parte 1

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)

Tabela 14: Operadores Lgicos

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

Tabela 15: Possveis Resultados dos Testes Lgicos - Tabela Verdade

Exemplos de Testes utilizando Operadores Lgicos:


Exemplos usando operadores lgicos [KOZ06]: exemplos em portugus, usados no dia-a-dia.
Expresso

Quando eu no saio?

Se chover e relampejar, eu no saio.

Somente quando chover e relampejar ao mesmo


tempo (apenas 1 possibilidade).

Se chover ou relampejar, eu no saio.

Somente quando chover, somente quando


relampejar ou quando chover e relampejar ao
mesmo tempo (3 possibilidades).

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

37

Apostila de Algoritmos e Programao Parte 1

Exemplos A, B e C abaixo so apresentados em Portugus Estruturado:


A)

Se (salario > 180) e (salrio < 800) Ento


Escrever Salrio vlido para financiamento
Seno
Escrever Salrio fora da faixa permitida para financiamento
FimSe

B)

Se (idade < 18) ou (idade > 95) Ento


Escrever Voc no pode fazer carteira de motorista
Seno
Escrever Voc pode possuir carteira de motorista
FimSe

C)

Se (idade >= 18) e (idade <= 95) e (aprovado_exame == sim) Ento


Escrever Sua carteira de motorista estar pronta em uma semana
Seno
Escrever Voc no possui idade permitida ou no passou no exame
FimSe

22.1 Expresses Lgicas e Prioridades das Operaes


Os operadores lgicos podem ser combinados em expresses lgicas mais complexas. Quando uma
expresso tiver mais de um operador lgico, avalia-se o operador not (no) primeiramente, seguido
do operador and (e) e finalmente or (ou). Ou seja, existe uma prioridade de execuo entre os
operadores lgicos, como mostrado na Tabela 16 a seguir:

Operador Lgico no Algoritmo

Operador Lgico em Python

Prioridade de Execuo

no

not

1.

and

2.

or

or

3.

Tabela 16: Prioridades das Operaes Lgicas

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!

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

38

Apostila de Algoritmos e Programao Parte 1

A seguir so apresentados mais alguns exemplos de expresses lgicas.


Para A = V, B = F e C = F, as expresses abaixo fornecem os seguintes resultados:
Expresses

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

Exemplo Prtico utilizando Operadores Lgicos para ser resolvido em Chapin:


5) Escreva um algoritmo para ler um valor e escrever se ele est entre os nmeros 1 e 10, ou no est.

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

Como resultado tem-se:


100 > 1000 and 20 > 18
False and True
False
A resposta final desse exemplo False, pois executa-se primeiramente as operaes relacionais
(sublinhadas apenas para destacar a prioridade de execuo), ou seja, os dois testes de maior ( > ) para,
depois, executar a operao lgica, and ( e ).
Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

39

Apostila de Algoritmos e Programao Parte 1

23 Respostas dos Exemplos Prticos desta Apostila


Neste captulo so apresentadas as respostas de todos os exemplos encontrados no decorrer desta
apostila.

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 Portugus Estruturado:

Resposta em Fluxograma:

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

40

Apostila de Algoritmos e Programao Parte 1

Exemplo 4:
Resposta em Chapin:

Resposta em Portugus Estruturado:

Exemplo 5:
Resposta Errada:

Resposta Correta:

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

41

Apostila de Algoritmos e Programao Parte 1

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.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

42

Apostila de Algoritmos e Programao Parte 1

[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.

Profa. Flvia Pereira de Carvalho fpereira@faccat.br - http://fit.faccat.br/~fpereira

43

Você também pode gostar