You are on page 1of 22

Curso de Engenharia Civil – Unioeste / Cascavel

Disciplina: Introdução à Computação – Eng. Civil Data inicial: 11/05/2018


Série: 1 Turmas: 1 e 2
Prática: Programação com Python – Módulo Básico Prática: 03

1. CONSIDERAÇÕES (d5ad42) (446785)


Todo material produzido neste documento é baseado em:

MANZANO, José N.G.; Oliveira, Jayr F de. Algoritmos: Lógica para


Desenvolvimento de Programação. 20ª Ed. Érica – São Paulo. 2007.

BARRY. Paul; GRIFFITHS, David. Use a Cabeça! Programação. 1ª Ed. AltaBooks.


2010.

Ao longo deste documento, também são indicados hyperlinks para páginas, do


com conteúdos de interesse, porém não detalhadas.
Os Fluxogramas foram criados na ferramenta dia (Windows, Linux e MAC).
Para brincar com Python, use o site iterativo https://www.learnpython.org/.

2. INTRODUÇÃO
Python é uma Linguagem de Programação (LP) de alto nível e de propósito geral.
Foi desenvolvida pelo programador Holandês Guido Van Rossum em suas horas vagas no
final da década de 80 e continuou evoluindo para uma das LPs mais usadas no mundo
atualmente (veja TIOBE-Index). É possível classificar a LP Python como sendo uma LP
multi-paradigma de tipagem dinâmica e forte, isto é, pode-se criar códigos estruturados,
orientados a objetos ou funcionais, com confiabilidade nas verificações de tipos de
dados e flexibilidade no uso destes dados.
Thonny é um Ambiente de Desenvolvimento Integrado (IDE – Integrated
Development Environment). IDE é uma aplicação que provê ferramentas de apoio à
programação com o objetivo de facilitar e agilizar o processo de produção de software.
Thonny, encontrado em http://thonny.org/ já vem com os programas necessários para
executar códigos Python, sendo altamente recomendado para iniciantes no mundo da
programação.
A LP Python e a IDE Thonny serão usados como apoio para o aprendizado de
algoritmos para a disciplina de Introdução à Computação.

Introdução à Computação Módulo Programação Básica pág 1/22


Curso de Engenharia Civil – Unioeste / Cascavel

3. IDE THONNY
Thonny (Figura 1) será a IDE utilizada durante este documento, assim, é
importante conhecê-la um pouco mais.

Figura 1: IDE Thonny.

Inicialmente, tem-se a barra de título que contém o caminho (diretório) e o nome


do arquivo aberto ou selecionado. O texto <untitled> indica que o arquivo atual ainda
não foi salvo em disco e implica em impossibilidade de executá-lo. Nesta barra também
está contido o indicador de Linha e Coluna do cursor de texto.
A barra de menus lista as opções da IDE, entre elas, o menu File permite salvar
ou fechar o arquivo ou sair da IDE.
A barra de ferramentas apresenta as opções da barra de menus mais utilizadas
na forma de ícones. Da esquerda para direita, os principais para este momento são:
novo, abrir, salvar e executar.
As abas de seleção permitem alterar a visualização entre os arquivos de códigos
abertos e, se na aba de um arquivo, o caractere asterisco “*” estiver presente, significa
que este arquivo foi alterado, porém estas alterações não foram salvas em disco.
A área de edição de código é o local que permite a escrita do código Python. Esta
seção se comporta como um editor de texto convencional, porém com alguns truques
interessantes, tais como autocompletar e realce de sintaxe.
Por fim, a área de saída e controle é um pequeno terminal (shell) que mostrará
as saídas da execução do código, mensagens de aviso e erros e também permite acesso
ao Python (mais à frente sobre este assunto).
Por padrão, o Thonny não mostra o número das linhas na área de edição de
código, para alterar esta configuração, acesse o menu Tools, opção Options … e depois
marque a caixa de seleção Show line number. É recomendado marcar a caixa de
seleção Highlight matching names para realçar identificadores selecionados no código.

Introdução à Computação Módulo Programação Básica pág 2/22


Curso de Engenharia Civil – Unioeste / Cascavel

4. ALGORITMOS vs PYTHON
O aprendizado em sala de aula será dado sob a forma de Português-Estruturado
(P-E). Assim é possível manter-se genérico, em termos de LPs, e explicar conceitos
relevantes ao conteúdo de algoritmos. Porém, as implementações serão todas realizadas
em Python, muitas vezes comparando o P-E com códigos Python.
Inicialmente, serão mostradas as palavras-chaves do Python. Palavras-chaves são
palavras que contém um significado especial em uma LP e, preferencialmente, não
devem ser usadas como identificadores (algumas LPs restrigem completamente o uso de
palavras-chaves). Para visualizar a lista destas palavras-chaves, na seção área de saída e
controle do Thonny escreva help() e pressione Enter. Será exibido um texto de ajuda e
entrará no modo de ajuda do Python help>, em seguida escreva keywords e pressione
Enter novamente. A Figura 2 apresenta a lista de saída deste procedimento.

Figura 2: Lista de palavras-chaves de Python.

É recomendado que estas palavras-chaves não sejam usadas fora de seu escopo
especial, isto é, como identificadores de variáveis. Para finalizar o modo de ajuda do
Python, basta digitar o caractere “q” e pressionar Enter.

4.1. Hello World


Hello World é um programa clássico e básico utilizado para introduzir os
primeiros passos na programação de uma LP. Este programa não executa processamento
de dados, não tem entrada de dados, porém contém apenas uma única saída de
informação na saída padrão da LP, sendo o texto “Olá Mundo” ou algum texto derivado.
O programa Hello World também é usado para mostrar a estrutura básica de um código
em uma LP, indicando os elementos estruturais essenciais que qualquer outro código,
complexo ou não, terá, tais como, o uso obrigatório dos caracteres chaves “{“ e “}”, ou de
palavras reservadas “begin” e “end”.
Para exemplificar LPs, a Tabela 1 mostra o código do programa Hello World em LP
Assembly (uma LP de baixo nível de abstração e próxima da Linguagem de Máquina),
em LP C (usada em anos anteriores) e também em P-E.

Introdução à Computação Módulo Programação Básica pág 3/22


Curso de Engenharia Civil – Unioeste / Cascavel

Tabela 1: Hello Word em Assembler, C e Python.


mov ax,cs
mov ds,ax #include <stdio.h>
mov ah,9 #include <stdlib.h>
mov dx, offset Hello programa helloWorld
int 21h int main(void) inicio
xor ax,ax { escreva “Olá Mundo”
int 21h puts(“Hello World!”); fim
return EXIT_SUCCESS;
Hello: }
db “Hello World!”,13,10,“$”
Assembler (INTEL) C (ANSI) P-E

E em Python? Como é um Hello World?


1. print("Hello World")

Atividade:
Crie um código em Python que mostre seu nome e sobrenome em linhas diferentes.
- Salve o código com o nome meuPrimeiroPython.py

Assim, a tradução do código em P-E da Tabela 1, que contém 4 linhas, é traduzido


para Python para apenas 1 linha.
Importante: o comando escreva foi traduzido para print. As outras palavras-
chaves: programa, inicio e fim, componentes estruturais da P-E, não contém tradução
para Python (estruturas de código em Python será apresentado mais à frente).

4.2. Hello World Avançado


Similar ao Hello World, o Hello World Avançado é um programa que, antes de
mostrar na saída padrão algum texto, solicita ao usuário algum tipo de entrada de
informações.
Para exemplificar, considere o seguinte código em P-E.
1. programa helloWorldAvancado
2. inicio
3. declare ciclano : texto
4. escreva “Quem és tu? ”
5. leia ciclano
6. escreva “Olá “, ciclano, “!”
7. fim

Tradução para Python:


1. programa helloWorldAvancado 1. não aplicável
2. inicio 2. não aplicável
3. declare ciclano : texto 3. não aplicável
4. escreva “Quem és tu? ” 4. nome = input(“Quem és tu? ”)
5. leia ciclano 5. não aplicável
6. escreva “Olá “, ciclano, “!” 6. print(“Olá “, ciclano, “!”)
7. fim 7. não aplicável
P-E Python

Obs.: todos os códigos deste documento apresentam indentação realçada com ,


por ser considerada importante no Python.

Introdução à Computação Módulo Programação Básica pág 4/22


Curso de Engenharia Civil – Unioeste / Cascavel

A princípio, Python não requer palavras-chaves para determinar início e fim de


códigos, como em P-E. Desta forma, as linhas 1. e 2. não são aplicáveis na tradução.
Outro ponto importante: os elementos usados para armazenar informações devem ser
definidos (com nome e tipo) antes de usá-los em P-E, já em Python, esta requisição não
existe (isso será discutido no futuro). Por fim, em P-E, as mensagens de saída são
realizadas com o comando escreva e são apenas de saída, e o comando leia define qual
o local onde o valor inserido pelo teclado será armazenado. Em Python, o comando
input faz o equivalente ao comando leia, porém aceita um texto para ser emitido antes
da leitura, outro detalhe, o elemento nome “recebe” o resultado de input, através do
símbolo (caractere) “=”. Assim, as linhas 4. e 5. são resumidas para uma única linha.

Obs.: o comando input retornará sempre um texto, assim, entradas numéricas


requerem um cuidado extra, cuidados esses que são discutidos a seguir.

4.3. Tipos de Dados em Python (básicos – build-in)


Python fornece alguns tipos de dados comuns para os programadores, são eles:
int: valores inteiros
float: valores reais (casa decimal separada por ponto “.”)
str: texto (entre aspas simples ou duplas)
boolean: lógico (True ou False)

Python não requer declaração de variáveis, como pode ser observado na tradução
do Hello World Avançado, pois os tipos são inferidos à partir dos valores ou resultados
atribuídos.
Por exemplo:
nome = “Python”
é considerado um texto (str), pois a variável nome recebe um texto.
idade = 33
é considerado um número inteiro (int)
peso = 54.3
é considerado um número real (float)

Mencionado anteriormente, o comando input sempre retornará um texto (str),


portanto, caso deseja-se ler um número inteiro ou real, é necessário converter este
texto para o tipo desejado. Existem várias formas de realizar esta conversão, porém, por
ser início do documento, será apresentado o método mais simples, chamado de cast.
cast é a indicação de conversão entre dois tipos de dados compatíveis, por
exemplo, o texto “1” pode ser convertido para o número inteiro 1 da seguinte forma:
numInteiro = int(“1”)
isto pode ser aplicado para váriáveis:
textoUm = “1”
numInteiro = int(textoUm)
também resulta em conversão de texto para inteiro.

Este conceito de cast pode ser aplicado à números reais (float).

Python ainda fornece outros tipos de dados, porém não serão discutidos neste
momento.

Introdução à Computação Módulo Programação Básica pág 5/22


Curso de Engenharia Civil – Unioeste / Cascavel

4.4. Operadores Matemáticos Básicos


A seguir são listados alguns operadores básicos suportados em Python, e que
poderão ser utilizados também em P-E sem restrições.

Operador Significado Exemplo 1 Exemplo 2 Comentário


+ Adição c = a+b 7 = 5+2
- Subtração c = a­b 3 = 5­2
* Multiplicação c = a*b 10 = 5*2
/ Divisão c = a/b 2,5 = 5/2
% Resto da Divisão c = a%b 1 = 5%2 somente para inteiros
// Divisão para Inteiros c = a//b 2 = 5//2 próximo “menor” inteiro
** Exponenciação c = a**b 25 = 5**2 52

A convenção matemática para precedência de operadores é conhecida como


PEMDAS:
Parenteses > Exponenciação > Multiplicação e Divisão > Adição e Subtração
Observação: o operador unário de complemento “-” tem prioridade sobre
Parenteses. Por exemplo: (5 + -6) = -1, pois é lido como (5 + (-6) ).

Exercícios de implementação 01 e 02:


Ex01 – Leia o sobrenome , nome e ano de nascimento de uma pessoa e apresente o
seguinte texto: Olá <nome> <sobrenome>, você tem <xx> anos!
Onde:
<nome> é o nome digitado
<sobrenome> é o sobrenome digitado
<xx> é a idade calculada a partir do ano de nascimento (não esqueça do cast)
Exemplo:
Digite seu sobrenome: <Titan>
Digite seu nome: <Mad>
Digite seu ano de nascimento (YYYY): <1973>
Ola Mad Titan você tem 45 anos.

Ex02 – Leia uma medida em Quilogramas (Kg) e apresente-o convertido para Libras (lb)
e Stones (st).
- Observações: 1kg = 2,20462lb e 1lb = 0,0714286st
- Entrada: deve ser solicitado “Quantos kg deseja converter? ”<entrada>
- Saída: <entrada> kg = <conversão1>lb = <convesão2>st.
- Não esqueça do cast dos textos de entrada para número real
- Exemplo:
Quantos kg deseja converter? <1>
1 kg = 2.20462 lb ou 0.15747292013199998 st.

*soluções disponíveis na pasta Dropbox:


EC - IC\Práticas\03-ProgramaçãoBásica01\Soluções dos Exercícios\

Introdução à Computação Módulo Programação Básica pág 6/22


Curso de Engenharia Civil – Unioeste / Cascavel

4.5. Desvio Condicional Simples


Até o momento, foi apresentado como inserir e apresentar dados/informações de
modo linear. Porém, a grande maioria dos programas contém algum tipo de tomada de
decisão, como por exemplo, uma planilha com cálculos de situação de alunos,
verificação de descontos no salário de um funcionário ou controle de cálculo de divisão
por zero.
Estas decisões são realizadas através dos comandos de desvio condicionais. O
principal comando de desvio condicional é chamado de Desvio Condicional Simples. O
Desvio Condicional Simples determina se uma parte do código, chamado de Bloco, será
executada ou ignorada à partir de uma situação chamada de Condicional. A Figura 3
apresenta o fluxograma de um desvio condicional simples.

Figura 3: Desvio Condicional Simples.

Esta figura contém o Inicio da execução do algoritmo, seguido de um conjunto de


Comandos Anteriores, estes comandos podem ser de leitura, escrita ou cálculos e serão
sempre executados. Após, encontra-se um Desvio Condicional Simples, que é
determinado por uma Condição. Se a condição retornar VERDADEIRO, o Bloco Especial,
que contém comandos referentes ao resultado verdadeiro da condição, será executado,
e em seguida, será executado o conjunto de Comandos Posteriores antes de finalizar.
Caso a condição retorna FALSO, somente o conjunto de Comandos Posteriores será
executado, ignorando-se o Bloco Especial.
Em P-E, este fluxograma é traduzido para o seguinte código:
1. programa exemploSE
2. inicio
3. Comandos Anteriores
4. se Condição então
5. Bloco Especial
6. fim_se
7. Comandos Posteriores
8. fim

Antes de continuar o tópico, é necessário apresentar o conceito de Condição e de


Blocos em P-E e Python.

Condicional, ou Operadores Relacionais.


Ao usar um Desvio Condicional para tomada de decisão, é necessário definir uma
Condição. Esta condição é uma relação lógica entre dois elementos que, normalmente,
retorna apenas dois estados: VERDADEIRO ou FALSO. Os elementos podem ser, por
enquanto, Variáveis ou Constantes, e a relação lógica é dada pelos operadores lógicos
apresentado na tabela a seguir.

Introdução à Computação Módulo Programação Básica pág 7/22


Curso de Engenharia Civil – Unioeste / Cascavel

Definição P-E Python


Igual a == ==
Maior do que > >
Menor que < <
Maior ou Igual a >= >=
Menor ou Igual a <= <=
Diferente <> != ← Cuidado!

Observações:
Em P-E e em Python, o símbolo “=” é usado para apresentar uma
atribuição, ou seja, levar um determinado valor à uma variável. Portanto, para evitar
ambiguidade, o operador para avaliar igualdade é dado por símbolo duplo de igualdade
“==”. Obserception: alguns autores trazem “←” como atribuição, permitindo o uso de “=”
para comparação de igualdade. Esta notação não será adotada neste documento.

Blocos de Comandos/Códigos.
A maioria das LPs permitem algum tipo de mecanismo para agrupar um conjunto
de comandos chamado de Bloco. Estes Blocos são úteis para determinar conjunto de
comandos de Desvios Condicionais, para Repetições Específicas, também para de
Subprogramas, ou visualização de uma variável (escopo).
Em P-E, um Bloco é definido pelo nome do Comando Especial até a palavra-
reservada que o finaliza, por exemplo, fim_se para o comando se. Outro exemplo que
pode ser citado é o Bloco Principal de um algoritmo em P-E, que inicia na palavra-
reservada inicio, e termina em fim.
Outras LPs, como a Linguagem C e Java, determinam seus Blocos com o uso do
conjunto de caracteres “{“ e “}”. Em Python, o Bloco não é determinado por um caractere,
mas sim explicitado via uso de tabulação (tecla TAB). Este conceito de tabulação é
chamado de Indentação e é obrigatório em Python, e altamente recomendado na
grande maioria das LPs.
A seguir é apresentado um exemplo de Bloco em P-E e Python.
1. programa exemploBloco 1. não aplicável
2. inicio 2. não aplicável
3. Comandos Anteriores 3. <Comandos Anteriores>
4. inicio_Bloco 4. não aplicável
5. Comandos Indentados 5. <Comandos Indentados>
6. fim_Bloco 6. não aplicável
7. Comandos Posteriores 7. <Comandos Posteriores>
8. fim 8. não aplicável
Bloco em P-E Bloco em Python

Após estas explicações sobre Condicionais e Blocos, volta-se ao assunto de Desvio


Condicional Simples, que será mostrado através de um exemplo.

Introdução à Computação Módulo Programação Básica pág 8/22


Curso de Engenharia Civil – Unioeste / Cascavel

Exemplo de Desvio Condicional 01:


Exemplo01 – Leia o nome e o sexo de uma pessoa e o salde apropriadamente com
“Sra” ou “Sr”.

Solução para o Exemplo de Desvio Condicional 01 é apresentado na Figura 4,


seguido do P-E e do código em Python.

Figura 4: Desvio Condicional - Exemplo 01.

1. programa exemploDesvioCondicional01
2. inicio
3. declare nome: texto
4. declare sexo: caractere
5. escreva “Qual é seu nome?”
6. leia nome
7. escreva “Qual é seu sexo?”
8. leia sexo
9. se sexo==”F” então
10. escreva “Olá Sra “, nome
11. fim_se
12. se sexo==”M” então
13. escreva “Olá Sr “, nome
14. fim_se
15. fim
Algoritmo do Exemplo de Desvio Condicional 01.

1. nome=input(“Qual é seu nome?)


2. sexo=input(“Qual é seu sexo?”)
3. if sexo==”F”:
4. print(“Olá Sra”, nome)
5. if sexo==”M”:
6. print(“Olá Sr”, nome)
Código em Python do Exemplo de Desvio Condicional 01.

Introdução à Computação Módulo Programação Básica pág 9/22


Curso de Engenharia Civil – Unioeste / Cascavel

4.6. Desvio Condicional Composto


O Desvio Condicional Composto é o comando que permite ao programador
determinar, entre dois blocos, qual deles será executado. Este comando é apresentado
com Fluxograma na Figura 5, em P-E logo em seguida.

Figura 5: Desvio Condicional Composto.

1. programa exemploSE
2. inicio
3. Comandos Anteriores
4. se Condição então
5. Bloco Verdadeiro
6. senão
7. Bloco Falso
8. fim_se
9. Comandos Posteriores
10. fim
Desvio Condicional Composto em P-E.

Esta Figura 5 contém o Inicio da execução do algoritmo, seguido de um conjunto


de Comandos Anteriores, estes comandos podem ser de leitura, escrita ou cálculos e
serão sempre executados. Após, encontra-se um Desvio Condicional Composto, que é
determinado por uma Condição. Se a condição retornar VERDADEIRO, o Bloco
Verdadeiro, que contém comandos referentes ao resultado verdadeiro da condição, será
executado, e em seguida, será executado o conjunto de Comandos Posteriores antes de
finalizar. Caso a condição retorna FALSO, o Bloco Falso, que contém comandos
referentes ao resultado falso da condição, será executado, e em seguida, será executado
o conjunto de Comandos Posteriores antes de finalizar.

Introdução à Computação Módulo Programação Básica pág 10/22


Curso de Engenharia Civil – Unioeste / Cascavel

Exemplo de Desvio Condicional 02:


Exemplo02 – Melhore o Exemplo01, de modo a usar somente um Desvio Condicional
Composto.

Solução para o Exemplo de Desvio Condicional 02 é apresentado na Figura 6,


seguido do P-E e do código em Python.

Figura 6: Desvio Condicional - Exemplo 02.

1. programa exemploDesvioCondicional01
2. inicio
3. declare nome: texto
4. declare sexo: caractere
5. escreva “Qual é seu nome?”
6. leia nome
7. escreva “Qual é seu sexo?”
8. leia sexo
9. se sexo==”F” então
10. escreva “Olá Sra “, nome
11. senão
12. escreva “Olá Sr “, nome
13. fim_se
14. fim
Algoritmo do Exemplo de Desvio Condicional 02.

1. nome=input(“Qual é seu nome?)


2. sexo=input(“Qual é seu sexo?”)
3. if sexo==”F”:
4. print(“Olá Sra”, nome)
3. else:
4. print(“Olá Sr”, nome)
Código em Python do Exemplo de Desvio Condicional 02.

Introdução à Computação Módulo Programação Básica pág 11/22


Curso de Engenharia Civil – Unioeste / Cascavel

Exercício de Desvio Condicional 01:


Exercício01 – Crie uma solução para o seguinte problema:
O usuário entrará com 2 números inteiros
O código de somá-los e determinar se o resultado é “par” ou “impar”
Obs.:
Operador “resto da divisão de inteiros” é o caractere %
por exemplo: 10%2 = 0

Exemplo ímpar de entrada e saída do Exercício01:


Entre com 1º número: <6>
Entre com 2º número: <3>
6 + 3 = 9 , um número ímpar.

Exemplo par de entrada e saída do Exercício01:


Entre com 1º número: <6>
Entre com 2º número: <4>
6 + 4 = 10 , um número par.

Importante:
Fluxograma, P-E e Código Python.

Introdução à Computação Módulo Programação Básica pág 12/22


Curso de Engenharia Civil – Unioeste / Cascavel

4.7. Laço de Repetição com Iteração Condicional


Nesta seção será discutido os Comandos Iterativos Condicionais com pré-teste,
que avaliam uma Condição e, se for VERDADEIRO, executa um conjunto de comandos,
que além de conter comandos da solução desejada, alteram os estados dos operadores
da Condição. Após, retornam para a avaliação da Condição. O fluxograma de um
Comando Iterativo Condicional com pré-teste é apresentado na Figura 7.

Figura 7: Comando Iterativo Condicional com pré-teste.

Nota-se que, isoladamente, a simbologia é muito semelhante ao Desvio


Condicional, porém, o fluxo natural após os Comandos da Iteração é retornar à
avaliação da Condição. Desta forma, um Comando Iterativo Condicional com pré-
teste não é especificado em P-E usando o comando se, mas o comando enquanto.
1. programa exIteCondPreTeste 1. não aplicável
2. inicio 2. não aplicável
3. <Comandos Anteriores> 3. <Comandos Anteriores>
4. enquanto <Condição> faça 4. while <Condição>:
5. <Comandos da Iteração> 5. <Comandos da Iteração>
6. fim_enquanto 6. não aplicável
7. <Comandos Posteriores> 7. <Comandos Posteriores>
8. fim 8. não aplicável
P-E Python
Figura 8: Comando Iterativo Condicional com pré-teste em P-E e Python.

Exercício de Laço de Repetição com Iteração Condicional 01:


 Ler um número indeterminado de números inteiros positivos e apresentar a média
destes.
→ Observações:
- Encerra-se após entrar com qualquer número negativo
- Apresentar Média.

Solução:
1) Compreender completamente o problema a ser resolvido.
O usuário entrará com 1 valor inteiro. Se este for positivo, deve-se somá-lo à
um acumulador e incrementar um contador.
Problema: a leitura do número acontece depois da avaliação da Condição
Solução: remover número de acumulador e decrementar contador após
encontrar número negativo
2) Definir os dados de entrada
num, acumulador, contador do tipo inteiro iniciando em zero
3) Definir o processamento
acumulador ← acumulador + num
Introdução à Computação Módulo Programação Básica pág 13/22
Curso de Engenharia Civil – Unioeste / Cascavel

contador ← contador + 1
4) Definir dados de saída
acumulador / contador
5) Construir o algoritmo utilizando alguma formalidade

Por Fluxograma:

Figura 9: Fluxograma para solução da atividade 5.4.1.

Por P-E:
1. programa calculoDeMedias
2. inicio
3. declare n, ac, cont : inteiro
4. n = 0
5. ac = 0
6. cont = 0
7. enquanto n >= 0 faça
8. escreva “Entre com Número “, cont, “: “
9. leia n
10. ac = ac + n
11. cont = cont + 1
12. fim_enquanto
13. ac = ac – n
14. cont = cont – 1
15. escreva “Média = ”, ac/cont
16. fim
Figura 10: P-E para solução do exercício 01 de Iteração Controlada por Condicional.

Por Python:
1. n = 0
2. count = 0
3. ac = 0
4. while n >= 0:
5. n = int(input("Insira um número inteiro: ")) # indentação!
6. ac = ac + n
7. count = count + 1
8. ac = ac - n
9. count = count - 1
10. print("Média = ", ac/count)

Introdução à Computação Módulo Programação Básica pág 14/22


Curso de Engenharia Civil – Unioeste / Cascavel

Exercício de Laço de Repetição com Iteração Condicional 02:


 A solução anterior apresenta uma falha:
→ O que acontece se o usuário entrar com apenas um número negativo?
- Ajuste a solução para conter esta falha.

Introdução à Computação Módulo Programação Básica pág 15/22


Curso de Engenharia Civil – Unioeste / Cascavel

4.8. Laço de Repetição com Iteração com Variável de Controle


A alternativa à Iteração Condicional, é a Iteração com Variável de Controle.
Este tipo de comando repete i vezes um trecho de código, sendo este i conhecido
previamente. O Fluxograma de um programa com Iteração com Variável de Controle é
apresentado na Figura 11.

Figura 11: Iteração com Variável de Controle.

Em P-E, o comando Iterativo por Variável de Controle é especificado utilizando as


palavras-chaves para <var> de <início> até <fim> passo <passo> faça e fim_para, e em
Python, utiliza-se o comando for, como apresentado na Figura 12.

1. programa exIteContVar
2. inicio
3. <Comandos Anteriores>
4. para <var> de <início> até <fim> passo <passo>
P-E
5. <Comandos da Iteração>
6. fim_para
7. <Comandos Posteriores>
8. fim
1. não aplicável
2. não aplicável
3. <Comandos Anteriores>
4. for <var> in range(<início>,<fim>):
5. <Comandos da Iteração> # indentação! Python
6. não aplicável
7. <Comandos Posteriores>
8. não aplicável
Figura 12: Comando Iterativo Condicional com pré-teste em P-E e Python.

Observação Importante: o comando range(<início>,<fim>) retorna uma sequência


de números que inicia em <início> e termina em <fim>. O Laço de Repetição for
incrementará a variável <var> de <início> até <fim>, e finalizará quando <var> for
maior ou igual à <fim>.

Introdução à Computação Módulo Programação Básica pág 16/22


Curso de Engenharia Civil – Unioeste / Cascavel

Exercício de Laço de Repetição Controlado por Variável 01:


 Crie um programa que apresente a tabuada de um dado número
→ Considerações:
- O usuário entrará com um valor inteiro não determinado
- Deve-se avaliar se o número entrado pelo usuário está entre 0 e 9
- caso afirmativo, proceder com a construção da tabuada.
- caso negativo, informar erro finalizar

Em Fluxograma:

Figura 13: Fluxograma para solução do ex.01 da Iteração Controlada por Variável.

Em P-E:
1. programa lrcv1
2. início
3. declare n, i : inteiro
4. se (n >= 0) E (n <=10) então
5. para i de 0 até 11 faça
6. escreva n, “ x “, i, “ = “, n*i
7. fim_para
8. senão
9. escreva “Número Inválido!”
10. fim
Figura 14: P-E para solução do ex. 01 de Iteração Controlada por Variável.

Em Python:
1. n = int(input("Digite o número (0 até 9): "))
2. if n > 0 and n < 10:
3. for i in range(0, 11):
4. print(n, "x", i, "=", (n*i))
5. else:
6. print("número inválido, somente de 0 até 9")
Figura 15: Python para solução do ex. 01 de Iteração Controlada por Variável.

Introdução à Computação Módulo Programação Básica pág 17/22


Curso de Engenharia Civil – Unioeste / Cascavel

Exercício de Laço de Repetição Controlado por Variável 02:


 Crie um programa que apresente a sequencia de Fibonacci até uma determinada
posição.
→ Considerações:
F(n) = F(n-1) + F(n-2)
F(0) = 0 e F(1) = 1 # casos especiais, cuidado!!!!!!!!!!
F(2) = F(0) + F(1) = 1
F(3) = F(1) + F(2) = 3
F(4) = F(2) + F(3) = 5
→ O usuário entrará com a posição limite

Exemplos de execuções:
>>> %Run fib.py
Até qual Fibonacci deseja conhecer? <0>
Fibonacci 0 = 0

>>> %Run fib.py
Até qual Fibonacci deseja conhecer? <1>
Fibonacci 0 = 0
Fibonacci 1 = 1
>>> %Run fib.py
>>> %Run fib.py Até qual Fibonacci deseja conhecer? <10>
Até qual Fibonacci deseja conhecer? <2> Fibonacci 0 = 0
Fibonacci 0 = 0 Fibonacci 1 = 1
Fibonacci 1 = 1 Fibonacci 2 = 1
Fibonacci 2 = 1 Fibonacci 3 = 2
Fibonacci 4 = 3
>>> %Run fib.py Fibonacci 5 = 5
Até qual Fibonacci deseja conhecer? <3> Fibonacci 6 = 8
Fibonacci 0 = 0 Fibonacci 7 = 13
Fibonacci 1 = 1 Fibonacci 8 = 21
Fibonacci 2 = 1 Fibonacci 9 = 34
Fibonacci 3 = 2 Fibonacci 10 = 55

Em Fluxograma:

Figura 16: Fluxograma para solução do ex.02 da Iteração Controlada por Variável.

Introdução à Computação Módulo Programação Básica pág 18/22


Curso de Engenharia Civil – Unioeste / Cascavel

Por P-E:
1. programa lrcv2
2. início
3. declare fib, n0, n1, aux, i : inteiro
4. escreva “Até qual Fibonacci deseja conhecer?
5. leia fib
6. se fib < 2 então
7. se fib == 1 então
8. escreva “Fibonacci 0 = 0”
9. escreva “Fibonacci 1 = 1”
10. senão
11. escreva “Fibonacci 0 = 0”
12. fim_se
13. senão
14. escreva “Fibonacci 0 = 0”
15. escreva “Fibonacci 1 = 1”
16. n0 = 0
17. n1 = 1
18. para i de 2 até fib passo 1 faça
19. aux = n0 + n1
20. n0 = n1
21. n1 = aux
22. escreva “Fibonacci “, i, “ = “, aux
23. fim_para
24. fim_se
25. fim
Figura 17: P-E para solução do ex. 02 de Iteração Controlada por Variável.

Em Python:
1. fib = int(input("Até qual Fibonacci deseja conhecer? "))
2. if fib < 2:
3. if fib == 1:
4. print("Fibonacci 0 = 0")
5. print("Fibonacci 1 = 1")
6. else:
7. print("Fibonacci 0 = 0")
8. else:
9. print("Fibonacci 0 = 0")
10. print("Fibonacci 1 = 1")
11. n0 = 0
12. n1 = 1
13. for i in range(2,fib+1):
14. aux = n0 + n1
15. n0 = n1
16. n1 = aux
17. print("Fibonacci", i, "=", auxiliar)
Figura 18: Python para solução do ex. 02 de Iteração Controlada por Variável.

Introdução à Computação Módulo Programação Básica pág 19/22


Curso de Engenharia Civil – Unioeste / Cascavel

4.9. Módulos
Em algumas soluções em algoritmos, é demandado o uso de uma operação, ou
conjunto de operações, diversas vezes. Desta forma, o algoritmo pode se tornar muito
longo, já que vários comandos, ou sequências de comandos, são repetidas ao longo
deste. Para tornar a implementação mais “enxuta”, usa-se as funções.
Uma função é definida apenas uma vez no algoritmo, e pode ser usada
diversas vezes durante a execução deste. A definição em Fluxograma usa do símbolo de
conector entre fluxogramas, e em P-E é dado pela palavra reservada func. Abaixo são
mostrados estas definições.

Figura 19: Fluxograma geral para função.

Por P-E:
1. programa exemploFuncao0
2. <tipo> func <nome> (<p1>:tipo, <p2>:tipo,…)
3. <Comandos da Função>
4. retorno <valor>
5. fim_func
6. #linha apenas para separar declaração da função de código principal
7. início
8. <Comandos do Programa Principal>
9. fim
Figura 20: P-E geral para função.

Observe que o Fluxograma de uma função pode ser considerado um


subfluxograma à parte. Já em P-E, a definição da função deve aparecer entre as palavras
reservadas programa e início.
As funções em Python são descritas com algumas diferenças em relação ao P-E.
Como Python usa inferência de tipos, não indicado o <tipo> de retorno. A palavra
reservada fun é trocada por def. Na lista de parâmetros, novamente devido à inferência
de tipos, só é alocado, em ordem, os nomes das variáveis. E por fim, a assinatura finaliza
com : (dois-pontos). O conjunto de <Comandos da Função> é posicionado indentado,
como um bloco de comandos especiais em um laço de repetição ou condicional. Para
finalizar, o retorno é alterado para return. Veja um exemplo na Figura 21.

Em Python:
1. def <nome> (<p1>, <p2>,…):
2. <Comandos da Função>
3. return <valor/variável>
Figura 21: Código Python geral para função.

Introdução à Computação Módulo Programação Básica pág 20/22


Curso de Engenharia Civil – Unioeste / Cascavel

Funções já utilizadas nos exemplos anteriores.


Durante a aplicação dos conceitos anteriores, foram utilizadas algumas funções.
Este é o momento destas funções serem melhor detalhada.

print(var1, var2, …)
escreve na saída padrão o conteúdo das variáveis var1, var2, etc de forma
concatenada. É possível criar um texto unificado de outros textos utilizando o operador
+.

input(texto1)
solicita uma entrada de dados, normalmente pelo teclado. Antes, porém,
escreve na saída padrão o conteúdo de texto1.

int(texto)
transforma um texto que contém somente algarismos em um número
operável pelos operadores e funções numéricas de inteiros.

float(texto)
transforma um texto que contém somente algarismos e um “.” (ponto)
como separador de decimais em um número operável pelos operadores e funções
numéricas de ponto-flutuante.

str(int)
transforma um número em uma sequência de algarismos, isto é,
transforma o tipo número em tipo texto (string).

Existem diversas outras funções nativas em Python, também conhecidas como


Build-in Functions. A lista destas funções e suas operações são encontradas no seguinte
link: https://docs.python.org/3/library/functions.html.

Também existem diversas bibliotecas que contém várias funções extras, que
podem ser importadas e usadas para facilitar a programação. Um exemplo de biblioteca
muito utilizada é a math, que contém funções matemáticas que variam de
trigonométricas, raízes, logarítmicas e algumas constantes. A lista destas funções
matemáticas e suas operações são encontradas em
https://docs.python.org/3/library/math.html.
Para usar qualquer função da biblioteca math, é necessário importá-la no início do
código, através da linha:
1. import math

Para o exemplo seguinte, será necessário usar a função sqrt(x), que retorna a raiz
quadrada do número x passado como único parâmetro. Exemplo básico:
1. import math
2. r = math.sqrt(25)
3. print(r)
Figura 22: exemplo de uso da biblioteca math do Python.

Porém, se apenas uma função da biblioteca math é necessária em um


código, é possível importar apenas esta função, alterando a linha 1 e a
forma da chamada da função na linha 2 (Figura 22). Como mostrado na
Figura 23.

Introdução à Computação Módulo Programação Básica pág 21/22


Curso de Engenharia Civil – Unioeste / Cascavel

1. from math import sqrt # somente função sqrt de math!


2. r = sqrt(25) # math.sqrt(25)
3. print(r)
Figura 23: exemplo de uso da função sqrt da biblioteca math do Python.

Exercício de Funções 01:


 Ler dois catetos e apresentar a hipotenusa.
→ Observação:
- os catetos são do tipo real e devem ser entrados pelo usuário
- apresentar a mensagem: “hipotenusa = <valor>”
- o nome da Função deverá ser calcHip

Veja a solução em Fluxograma e P-E na Seção 6 do arquivo 04   –   Programação


Básica na pasta Notas de Aulas no DropBox.

Em Python:
1. import math
2. def calcHip(a,b)
3. h = a**2 + b**2
4. h = math.sqrt(h)
5. return h
6.
7. cat1 = float(input(“Entre com Cateto 1: “))
8. cat2 = float(input(“Entre com Cateto 2: “))
9. hip = calcHip(cat1, cat2)
10. print(“Hipotenusa = “, hip)
Figura 24: solução para o exercício de Funções 01.

Exercício de Funções 02:


 Considerando o Exercício de Funções 01, crie uma Função para elevar um número à
qualquer outro número e use-a na Função calcHip

Escopo de variáveis
Ver documento \Notas de Aulas\Aula 04\04 – Programação básica.pdf, Seção 6.3.

End of the file!!!

Introdução à Computação Módulo Programação Básica pág 22/22

You might also like