Programação Elementar de Computadores Jurandy Soares

Propaganda
Programação Elementar de
Computadores
Jurandy Soares
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Básico de Computadores
Computador:
dispositivos físicos + programas
Dispositivos físicos:
hardware
Programas:
as instruções que dizem aos dispositivos físicos o que fazer
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Modelo Básico de um Computador
• Processador (CPU)
• Unidade Central de Processamento
• Interpreta e executa as instruções
• Memória
• principal e auxiliar
• mantém os dados e as instruções em uso
• Dispositivos de entrada
• mouse, teclado, microfone, webcam, etc
• Dispositivos de saída
• monitor de vídeo, impressora, autofalantes, etc
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Executando um Programa
Programa:
um conjunto de instruções que um computador deve seguir
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Linguagens de Programação
Necessárias para escrever programas
Linguagens de alto nível (ex, Python):
• relativamente fáceis para as pessoas escreverem e compreenderem
• não são entendidas diretamente pelos computadores
Linguagens de baixo nível (linguagem de máquina):
• diretamente entendidas pelo computador
• dependente do computador
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
O Compilador
Um programa escrito em uma linguagem de alto nível (conhecido como o código fonte)
não pode ser executado diretamente pelo computador
Um compilador é um programa que traduz o código fonte em código de máquina que faz
a mesma coisa (conhecido como código objeto)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Tradução e Execução de um Programa em
Python
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Tradução e Execução de um Programa em
Python
O código em byte (bytecode) do Python é portátil (independente do dispositivo físico)
A máquina virtual do Python executa o código-byte em uma máquina real
O compilador Python é chamado pelo comando python -c
O interpretador do Python pode ser chamado pelo comando python
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Raciocínio Algoritmico
Algoritmo
Um conjunto de instruções ou passos para resolver um problema.
• deve ser preciso
• deve ser finito
• pode ser escrito em uma notação arbitrária (ex.: linguagem natural, linguagem de
programação, diagrama, misto dos anteriores, etc)
Raciocínio algoritmico é fundamental para ciência da computação e programação
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Exemplo de um Algoritmo
Algoritmo que determina o custo total de uma lista de itens:
1. Escreva o número 0 no quadro.
2. Faça o seguinte para cada item da lista:
a. Adicione o custo do item ao número no quadro.
b. Substitua o número antigo no quadro pela soma.
3. Anuncie que a resposta é o número escrito no quadro.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Primeiro Programa em Python
# Arquivo: primeiroprograma.py
print('Olá para quem estiver aí!')
print('Como estão as coisas?')
print('Espero que esteja tendo um bom dia.')
print('Tchau!')
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Sintaxe da Linguagem
• A sintaxe de uma linguagem é um conjunto de regras (gramática) que descreve a
maneira correta de escrever sentenças (programas) naquela linguagem.
• As linguagens de programação tem uma sintaxe bem precisa: se você quebrar as
regras, você obterá um ou mais erros.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Estrutura de um Programa em Python
# importação das bibliotecas necessárias
# comandos virão aqui para descrever
# as ações a serem tomadas pelo programa
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Um comando em Python
print('alguma mensagem aqui')
Exibe a mensagem entre parênteses na tela (sem as aspas)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
O que primeiroPrograma faz?
• Dê uma olhada no programa e veja se você consegue descobrir o que o programa
faz.
• Ele exibe o seguinte:
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Erros de Programação
Erros de sintaxe (Syntax error)
Violação das regras de sintaxe da linguagem. Por exemplo, digitar erroneamente
uma palavra, esquecer de por vírgula (','), esquecer de fechar parênteses, etc.
Capturado pelo compilador!
Erros em tempo de execução (Runtime error)
Erros em tempo de execução. Por exemplo, divisão por zero, entrada de uma cadeia
de caracteres quando o sistema espera um inteiro.
Erros de lógica
O programa compila e executa sem nenhum erro, mas ele não faz o que se supõe
que ele deva fazer.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Segundo Programa em Python
# Arquivo: cestadeovos.py
print('Entre o número de ovos que deverá ter em cada cesta: ')
ovosPorCesta = int(input())
print('Entre com o número de cestas: ')
numeroDeCestas = int(input())
totalOvos = numeroDeCestas * ovosPorCesta
print(ovosPorCesta, 'ovos por cesta.')
print(numeroDeCestas, 'cestas.')
print('Número total de ovos é', totalOvos)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
O Que o Programa Cesta de Ovos faz?
• Dê uma olhada no programa e veja se você consegue descobrir o que ele faz.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
O Que é uma Variável de um Programa
ovosPorCesta = int(input())
numeroDeCestas = int(input())
totalOvos = numeroDeCestas * ovosPorCesta
• Isto é a criação de três variáveis inteiras
• Uma variável uma localização nomeada para armazenar dados, isto é, um container
para dados
• É desejável que cada variável mantenha somente dados de um determinado tipo;
por exemplo, somente números inteiros (int), somente números em ponto flutuante
(real)
• Todas as variáveis do programa devem ter um valor atribuído antes de serem
usadas
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
• O último valor atribuído à variável indicará o tipo dela
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
O Que é o Tipo de uma Variável?
• O tipo de uma variável determina o tipo de valores que uma variável pode conter e
que operações podem ser aplicadas a ela.
• Alguns tipos primitivos de Python:
• int (inteiro, valores completos, tais como, 0, 1, -31, 123)
• float (valores reais, tais como, 0.0, 3.1415, -2.72)
• str (valores com cadeias de caracteres, tais como, ‘asa’, ‘34’, ‘R$ 25,00’)
• bool (valores lógicos, como somente um dos dois valores: True, False)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Como Podemos Associar/Alterar o Valor de
uma Variável?
ovosPorCesta = int(input())
totalOvos = numeroDeCestas * ovosPorCesta
Comando de atribuição:
variável = expressão
Associa o valor da expressão do lado esquerdo do sinal de = à variável do lado esquerdo.
Não significa o "igual" de comparação da matemática!
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
O Que é uma Expressão?
numeroDeCestas * ovosPorCesta
• Expressões de programação são muito parecidas com as expressões aritméticas
que estamos acostumados (operadores usuais, parênteses, regras de precedência,
etc).
• Expressões podem ser avaliadas para produzir um valor e elas tem um tipo (o tipo
do valor da expressão).
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Operadores numéricos
Alguns operadores comuns para inteiros:
• + (óbvio)
• - (óbvio)
• * (óbvio)
• // (divisão inteira, por exemplo, 6//2=3, 5//2=2, 19//5=?)
• % (operador módulo ou o resto da divisão inteirar, por exemplo, 6%2=0,
5%2=1, 19%5=?)
Alguns operadores comuns para reais:
+, -, *, / (divisão real)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Algumas Expressões: Quais são Seus Valores?
# Seja
i = 12; j = 5; k = -3
# Seja
x = 2.1; y = -1.5; z = 3.0
# Informe qual o valor das expressões abaixo
(i + j + k) / 3
(i / j) * j + (i % j)
x * x + y * y
(x + y + z) / (x – y – z)
2.0 * z – (x + y)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Comando de Saída
print(saída1,
print(saída1,
print(saída1,
print(saída1,
saída2,
saída2,
saída2,
saída2,
...,
...,
...,
...,
saídaN)
saídaN, end='')
saídaN, sep='')
saídaN, end='', sep='')
• Concatena (junta) as várias saídas (cadeia de caracteres entre aspas, variáveis,
constantes e números), exibe-as na tela separadas por um espaço e põe o cursor
na próxima linha (print(..., end='') não adiciona uma nova linha).
• O que faz o seguinte comando de saída?
dia = 15
print(dia, 'de Novembro de', 1889,
'é a data da proclamação da República Federativa do Brasil')
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Comando de Entrada
Entrada de um valor inteiro:
i = int(input())
Entrada de um valor real:
x = float(input())
Entrada de uma linha inteira (uma cadeia de caracteres sem quebra de linha):
s = input()
A função de entrada input aceita opcionalmente uma mensagem como arqumento:
i = int(input('Entre com um número inteiro: '))
x = float(input('Entre com um número real: '))
s = input('Entre com uma cadeia de caracteres: ')
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Juntando Tudo
Até então, temos visto:
• como entrar com valores a partir do teclado
• como exibir mensagens ou valores na tela
• como criar variáveis para armazenar valores
• como armazenar valores em variáveis e calcular novos valores com expressões
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Agora é a Sua Vez!
Agora vamos juntar tudo:
escreva um programa em Python chamado calculaarea.py que pede ao usuário a
largura e a altura de um retângulo e ao final calcula e exibe a área do retângulo.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
CalculaArea Completo
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Documentação e Estilo
• Use nomes significativos para variáveis, programas, etc.
• Use endentação e espaçamento de linhas conforme mostrado nos exemplos do
texto
• Sempre inclua um prólogo (uma breve explanação do programa no início do
arquivo)
• Use letras minúsculas na identificação de variáveis, com exceção no início de
palavras internas (ovosPorCesta)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Comentários
Comentário:
texto ignorado pelo compilador na hora da compilação
Não altera o que o programa faz, somente explica o programa
Escreva comentários compreensíveis e úteis
Comente o que não for óbvio
Assuma um leitor de conhecimento razoável
# comentário de uma linha
'''
Use dois pares de três aspas no início do arquivo
para fazer uma breve descrição
sobre o que faz seu programa
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
'''
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Fluxo de Controle
• A ordem em que os comandos em um programa são executados é chamado de
fluxo de controle
• Até então temos visto somente execução sequencial: comandos executados um
após o outro e na ordem em que eles aparecem no programa
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Fluxo de Controle (cont.)
Considere as seguintes tarefas:
• Você deseja calcular o quociente de duas variáveis mas somente se o divisor for
diferente de zero
• Você entra com alguns valores (ex.: uma data) e se ela estiver no formato correto
(dd/mm/aaaa) você continua a computação, caso contrário você exibe uma
mensagem de erro
• Dada uma nota entre 0 e 100, você quer converter o valor numérico para uma nota
em letra (A para notas acima de 90, B entre 80 e 90, etc)
Questão: Como podemos verificar estas condições e executar o trecho
apropriado de código dependendo do resultado da verificação?
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Comando de Seleção
dividendo = int(input('Entre com o valor do dividendo: '))
divisor = int(input('Entre com o valor (diferente de zero) do divisor: '))
if divisor != 0:
quociente = dividendo // divisor
print(dividendo, '/', divisor, ' = ', quociente, sep='')
else:
print('Não posso dividir por zero')
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
O Tipo Lógico
• Uma variável do tipo de dados lógico ou booleano armazena um dos dois valores:
True ou False
• True ("Verdadeiro" em Inglês) e False ("Falso" em Inglês) são as únicas constantes
booleanas aceitáveis
• Valores ou expressões booleanas são utilizadas para tomar decisões em programas
• Por exemplo:
if x > 0: # expressão booleana
print(x, 'é um número positivo')
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Expressões Booleanas
Há várias tipos de expressões booleanas válidas:
• Uma variável booleana ou constante, como:
fuma = input('Fuma?(S/N) ') in ['s', 'S']
if fuma:
comando
• Uma expressão aritmética seguida de um operador relacional seguido de uma
expressão aritmética, como:
varInt = int(input())
if varInt > 0:
comando
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Operadores Relacionais
== (igual)
x == y
!= (diferente)
x != y
>
x>y
<
x<y
>=
x >= y
<=
x <= y
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Operadores Booleanos
Podemos também construir expressões booleanas ao combinar duas expressões
booleanas com um operador booleano:
and (e)
(x > 0) and (x < 10)
or (ou)
(x <= 0) or (x >= 10)
not (não)
not (x == 0)
O operador de negação (não) tem prioridade sobre os outros operadores lógicos
O operador de conjunção (e) tem prioridade sobre o operador de disjunção (ou)
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Operadores Booleanos (cont.)
• Se A e B são expressões booleanas,
A and B é verdadeiro (True) se e somente se A e B forem verdadeiros. Em
outras palavras, se A ou B ou ambos forem falsos, A and B será falso (False)
• Se A e B são expressões booleanas,
A or B é verdadeiro (True) se ou A ou B ou ambos forem verdadeiros. Em
outras palavras, A or B será falso (False) somente se A e B forem falso
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Algumas Expressões Lógicas
Pergunta:
#
x
y
a
b
c
Qual é o valor de cada uma das expressões seguintes:
Dados
= 5
= 12
= True
= False
= True
# Informe o valor das expressões booleanas abaixo
(x > 0) and (x < 10)
(x <= 0) or (x >= 10)
not (a and b and c)
not a and b and c
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
(a or b or c)
((x – 1) == ((y / 5) + (y % 5)))
((x != y) or not (x == y))
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Sua Vez
Problema:
Dadas três variáveis inteiras i, j e k, escreva um expressão
booleana para cada um dos seguintes problemas:
• i é igual a 3 ou a 5
• i está entre 1 e 7 (não incluindo o 1 e o 7)
• i é par
• i é ímpar
• i é o menor dos três
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Agora é Sua Vez
• Leia um mês no formato numérico e informe se ele é válido ou não (1..12)
• Leia um mês e informe a que semestre ele pertence (1º ou 2º)
• Leia um mês e informe a que trimestre ele pertence (1º, 2º, 3º ou 4º)
• Dadas duas datas de aniversário (dia e mês), informe qual delas é comemorada
primeiro no ano
• Faça um programa que leia um ano e informe se este ano é bissexto ou não.
Procure no Wikipedia para saber o algoritmo
• Leia uma data (dia e mês) informe a que estação ela pertence. Para o ano de 2010,
o outono começa em 20 de março, inverno começa em 21 de junho, primavera
começa em 23 de setembo e verão começa em 21 de dezembro
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Se: Sintaxe e Gráfico de Fluxo
# Se teste:
if teste:
# Bloco do SE
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Se-Senão: Sintaxe e Gráfico de Fluxo
# Se teste:
if teste:
# Bloco do SE
# Senão
else:
# Bloco do SENÃO
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Um Exemplo
Problema:
Dado um inteiro i, escreva um programa que exibe "par" ou "ímpar"
dependendo se o valor de for par ou ímpar.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Outro Exemplo
Dados dois inteiros i e j, escreva um programa que atribua a uma variável inteira max o
maior valor dos dois.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Sua Vez
Dados três inteiros i, j e k, escreva um programa que atribua a uma variável inteira max o
maior valor dos três.
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Maior de Três
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Sua Vez, Novamente
Dado um inteiro, nota, contendo uma nota entre 0 e 100, escreva um trecho de código
que converte o valor numérico da nota para uma nota em formato de letra, de acordo
com a tabela seguinte, e exiba a nota no formato de letra.
nota >= 90
A
80 <= nota < 90
B
70 <= nota < 80
C
60 <= nota < 70
D
nota < 60
E
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Conversão de Nota
© Jurandy Soares, 2010 -- http://bit.ly/jurandy
Download