xMAC2166 - Introdução à Computação
x31/03/2014 - Aula 2
xNosso primeiro programa em Python
print("Olá, mundo!")
Olá, mundo!
xO programa acima tem um único comando - o print, que escreve mensagens na saída.
Entre os parênteses que aparecem logo depois do print, nós indicamos o que queremos escrever.
A frase "Olá, mundo!" foi colocada entre aspas para indicar ao Python que ela é um texto (e não um comando que ele deve tentar interpretar).
Veja abaixo o que acontece quando tiramos as aspas. Uma mensagem de erro é gerada pelo interpretador.
print(Olá, mundo!)
File "<ipython-input-2-108d317c9668>", line 1 print(Olá, mundo!) ^ SyntaxError: invalid syntax
xValores e tipos
xUm valor é um dos elementos básicos que um programa manipula. Um valor tem sempre um tipo.
Por exemplo, 15 é do tipo inteiro, enquanto "Olá, mundo!" é do tipo texto (= cadeia de caracteres = string).
Em Python, esses dois tipos são chamados de int e str, respectivamente. O valor 3.75 é do tipo real, chamado em Python de float.
Para consultar o tipo de um valor, você pode usar o comando type, como no exemplo abaixo.
print(type(15))
<class 'int'>
print(type('Olá, mundo!'))
<class 'str'>
print(type(3.75))
<class 'float'>
xAtenção: um valor como "3.75" parece do tipo real, mas na verdade é uma cadeia de caracteres (observe as aspas!).
print(type("3.75"))
<class 'str'>
xVariáveis
xUma variável é um nome dado a um espaço de memória reservado para guardar um valor. Em outras palavras, uma variável é um nome que referencia um valor.
Para criar uma nova variável e associar um valor a ela, usamos um comando de atribuição.
Veja a seguir exemplos de comandos de atribuição em Python; esses comandos criam uma variável chamada a com valor 3 e uma variável chamada b com valor 4.
a = 3
b = 4
xToda a vez que você usar o nome de uma variável em um programa depois que ela já tiver sido criada, o seu valor será recuperado.
Por exemplo, para escrever o valor de uma variável na saída, você pode usar o comando print.
print(a, b)
3 4
xAtenção: Podemos passar quantos valores quisermos para o print escrever. Os valores devem ser separados por vírgula.
Os programadores devem escolher os nomes das variáveis de maneira cuidadosa, de modo que eles possam facilitar a compreensão do programa. Uma boa dica é usar nomes que indiquem a função das variáveis dentro do programa.
Um nome de variável pode conter tanto letras quanto
números, mas ele deve sempre começar com uma letra. As letras podem ser
maiúsculas ou minúsculas. O caracter underscore _ também pode aparecer no nome; geralmente ele é usado em nomes compostos por mais de uma palavra (ex.: velocidade_carro e nome_rua).
xProblema 0
xDados dois inteiros, calcular a sua soma.
xSolução - Versão 1
a = 3
b = 4
soma = a + b
print("A soma ", a, "+", b, "é igual a", soma)
A soma 3 + 4 é igual a 7
xO
programa acima calcula a soma de dois números de forma correta.
Entretanto, o programa não calcula a soma de quaisquer dois inteiros,
uma vez que os valores de a e b estão fixos no código.
Para permitir que o programa calcule a soma de quaisquer dois inteiros dados, precisamos solicitar ao usuário que digite os números que ele deseja somar.
A função input lê dados digitados pelo
usuário no teclado e devolve-os ao programa. A função recebe como
parâmetro de entrada (valor passado entre parênteses) a mensagem que
será mostrada na tela, para avisar ao usuário que ele precisa digitar
alguma coisa. O valor lido do teclado e devolvido pela input ao programa é sempre do tipo string.
Para transformar um valor do tipo string para um valor do tipo inteiro, usamos a função int, como mostrado na versão 2 a seguir.
xSolução - Versão 2
a_string = input("Digite o primeiro número: ") # Suponha que o usuário digitou 3
b_string = input("Digite o segundo número: ") # Suponha que o usuário digitou 4
a = int(a_string)
b = int(b_string)
soma = a + b
print("A soma de", a, "+", b, "é igual a", soma)
A soma de 3 + 4 é igual a 7
xSolução - Versão 3
xÉ possível simplificar a versão 2 do programa que soma dois números. Veja o novo código a seguir.
a = int(input("Digite o primeiro número: ")) # Suponha que o usuário digitou 3
b = int(input("Digite o segundo número: ")) # Suponha que o usuário digitou 4
soma = a + b
print("A soma de", a, "+", b, "é igual a", soma)
A soma de 3 + 4 é igual a 7
xNa versão acima, passamos diretamente como parâmetro para a função int o valor devolvido pela função input, e com isso eliminamos a necessidade de se criar duas variáveis adicionais - a a_string e a b_string.
xProblema 1
xDada uma sequência de números inteiros diferentes de zero, terminada por um zero, calcular a sua soma. Por exemplo, para a sequência
12 17 4 -6 8 0
o seu programa deve escrever o número 35.
xSolução
num = int(input("Digite um inteiro: "))
soma = 0
while num != 0:
soma = soma + num
num = int(input("Digite um inteiro: "))
print("A soma é", soma)
xEsse programa exemplifica o uso de um outro tipo de comando, o comando while. O comando while nos permite executar um bloco de comandos repetidas vezes.
Podemos descrever o fluxo de execução do while por meio dos seguintes passos:
- Avalia a condição (expressão lógica) do
while, o que resulta em um valor que pode ser True (verdadeiro) ou False (falso). - Se a condição for falsa, sai do bloco do
whilee continua a execução a partir do comando seguinte. - Se a condição for verdadeira, executa o corpo (bloco de comandos indentados) do
whilee depois volta ao passo I.
Esse tipo de fluxo é chamado de laço (porque o terceiro passo permite uma volta ao passo inicial).
xProblema 2
xDados números inteiros n e k, com k>=0, determinar nk. Por exemplo, dados os números 3 e 4 o seu programa deve escrever o número 81.
Obs.: Esse exercício corresponde ao exercício 4 da lista de exercícios sobre inteiros.
xSolução
n = int(input("Digite o valor de n: ")) # Suponha que o usuário digitou 3
k = int(input("Digite o valor de k: ")) # Suponha que o usuário digitou 4
pot = 1
i = 0
while i < k:
pot = pot*n
i = i + 1
print("O valor de", n, "elevado a", k, "é", pot)
O valor de 3 elevado a 4 é 81
xAtenção: Python possui um operador para o cálculo da exponenciação, o **
(ver exemplo abaixo). Entretanto, ele não foi usado na primeira versão
da solução do problema para que pudéssemos exemplificar mais uma vez o
uso do comando while.
n = int(input("Digite o valor de n: ")) # Suponha que o usuário digitou 3
k = int(input("Digite o valor de k: ")) # Suponha que o usuário digitou 4
print("O valor de", n, "elevado a", k, "é", n**k)
O valor de 3 elevado a 4 é 81
xProblema 3
xDado um número inteiro n >= 0, calcular n!
Obs.: Esse exercício corresponde ao exercício 8 da lista de exercícios sobre inteiros.
xSolução
n = int(input("Digite o valor de n: ")) # Suponha que o usuário digitou 4
fat = 1
i = 2
while i <= n:
fat = fat*i
i = i + 1
print("O valor de %d! é = %d" %(n, fat))
O valor de 4! é = 24
xAtenção: A biblioteca math do Python possui uma função que calcula o fatorial de um número (veja exemplo de uso abaixo). A math
contém várias outras funções matemáticas importantes. Mas o uso de
bibliotecas em Python é um assunto que só será visto em aulas futuras.
import math
n = int(input("Digite o valor de n: ")) # Suponha que o usuário digitou 4
print("O valor de %d! é = %d" %(n, math.factorial(n)))
O valor de 4! é = 24
xTipos de erros em programas
xEm um programa, podemos ter 3 diferentes tipos de erros, que serão descritos e exemplificados a seguir.
xErros de sintaxe
xUm erro de sintaxe ocorre quando o compilador/interpretador do programa não consegue entender o que o seu programa quer que ele faça, ou seja, quando o seu programa contém instruções que não existem ou que estão num formato diferente do esperado pelo compilador/interpretador.
Veja exemplos de erro de sintaxe a seguir.
print("Olá, Mundo!"
File "<ipython-input-17-e9b01b8bce5b>", line 1 print("Olá, Mundo!" ^ SyntaxError: unexpected EOF while parsing
xNo exemplo acima, o interpretador do Python estava esperando encontrar um ), mas no lugar dele encontrou o fim do comando. Assim, o print ficou incompleto e um erro de sintaxe foi gerado.
while = 9 * 15
File "<ipython-input-18-87971cd3b122>", line 1 while = 9 * 15 ^ SyntaxError: invalid syntax
xA palavra while é uma palavra reservada da linguagem Python (ou seja, ela tem um significado especial dentro da linguagem). Como vimos anteriormente, while é um comando usado para a repetição de blocos de instruções.
Uma palavra reservada da linguagem não pode ser usada como nome de variável em um programa. É por essa razão que o comando de atribuição do exemplo acima gerou um erro de sintaxe.
xErros em tempo de execução
xUm erro em tempo de execução ocorre quando o compilador/interpretador entende o que o programa quer que ele faça, mas algum problema acontece quando as intruções são executadas, causando a interrupção do programa.
Veja um exemplo de erro de tempo em tempo de execução a seguir.
a = 9
b = "Olá, Mundo!"
soma = a + b
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-19-306a100ca7a9> in <module>() 1 a = 9 2 b = "Olá, Mundo!" ----> 3 soma = a + b TypeError: unsupported operand type(s) for +: 'int' and 'str'
xNo exemplo acima, tentamos somar o valor de duas variáveis a e b.
Não há nada de errado com a sintaxe do programa: as variáveis possuem
nomes válidos, e as instruções e seus formatos são os esperados pelo
interpretador do Python.
O problema do programa é que ele tenta somar variáveis que contêm valores de tipos diferentes (int e str) - o que não é possível de se fazer.
Um erro em tempo de execução frequente é a tentativa de divisão por 0:
print(1/0)
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-20-0f9f90da76dc> in <module>() ----> 1 print(1/0) ZeroDivisionError: division by zero
xErros de semântica (ou erros de lógica)
xDiferentemente dos erros de execução em tempo de execução, os erros de semântica não causam a interrupção da execução de um programa. Um erro de semântica acontece quando recebemos um resultado diferente do esperado para um programa porque o programa não foi implementado corretamente.
Como exemplo, considere que queremos fazer um programa que calcule a média entre dois números.
a = 6
b = 4
media = a + b / 2
print("A média entre", a, "e", b, "é:", media)
A média entre 6 e 4 é: 8.0
xNo programa acima, o valor esperado para a média era 5, mas o valor devolvido pelo programa foi 8! Portanto, o programa contém um erro semântico.
Esse erro ocorreu porque a expressão matemática usada para o cálculo da média não leve em conta que o operador de divisão /' tem maior precedência que o operador de soma+'.
A versão corrigida do programa, mostrada a seguir, usa parentêses para garantir que a operação de soma seja realizada antes da de divisão.
a = 6
b = 4
media = (a + b) / 2
print("A média entre", a, "e", b, "é:", media)
A média entre 6 e 4 é: 5.0
xTópicos vistos na Aula 1
x- tipos
intestr - variáveis
- comando de atribuição
- funções de entrada e saída
input()eprint() - expressões com operadores aritméticos
- função
int()de conversão destrparaint - comando de repetição
while - expressões lógica com
>,!=,==, ...
xReferências e outros materiais para estudo
x- Computer Science Circles >> http://cscircles.cemc.uwaterloo.ca/
- Think Python - How to Think Like a Computer Scientist >> http://www.greenteapress.com/thinkpython/thinkpython.html
- Projeto MacMulti - Listas de exercícios (Introdução à Computação) >> http://www.ime.usp.br/~macmulti/exercicios/
