Você está na página 1de 23

INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1

*Exercícios de provas anteriores escolhidos para você estar


preparado para qualquer questão na prova. Resoluções em
simplificaaulas.com

Conceitos fundamentais de Python


Variáveis
Nos referimos a valores (como 4 ou “Olá!”) como objetos que são
classificados em classes ou tipos de dados diferentes:
 int : números inteiros (como o 4 mencionado acima)
 Float : números com ponto decimal (e não vírgula
decimal).
 str: string ou texto cadeia de caracteres. Pode-se
identificar strings pois estes estão envolvidos por aspas.
Strings em Python podem ser delimitados por apóstrofos (')
aspas ("), ou três de cada (''' ou """). Pode até mesmo conter
aspas/ apóstrofos dentro de uma strimg, como em: “O símbolo ‘
é um apóstrofo”.
Comandos de atribuição (assignment statement) criam uma
nova variável e também fornecem a elas o valor ao qual farão
referência.
Exemplos:
Nome = “Janaína”
n = 23
O operador de atribuição, =, não deve ser confundido
com igualdade, para a qual usamos ==.
Se você pedir para que o valor de uma variável seja impresso,
Python exibirá o valor que está atualmente associado à variável.
Em outras palavras, ao imprimir uma variável será exibido o
valor ao qual a variável se refere.

www.simplificaaulas.com
Reatribuição
A reatribuição faz com que a variável existente se refira a um
novo valor (e pare de se referir ao valor antigo).

Atualização de variáveis
Uma das forma mais comuns de reatribuição
é atualização (update) onde o novo valor da variável depende do
antigo. Por exemplo: x=x+1

Nomes de variáveis (o que pode e o que não pode)


Nomes de variáveis podem conter letras e dígitos, mas eles
devem começar com uma letra (sempre minúscula para este
curso) ou um caractere underscore (vamos evitar começar com
underscore (_) pois alguns nomes iniciados assim tem
significado especial) e poderá ser seguida por outras letras
minúsculas e números. Apesar de ser possível usar letras
maiúsculas, por convenção não usaremos.
O caractere underscore (_) pode aparecer no nome. Ele é usado
frequentemente em nomes formados por mais de uma palavra,
como em nome_da_escola.
Python tem pouco mais de trinta palavras reservadas (e uma vez
ou outra melhorias em Python introduzem ou eliminam uma ou
duas):
and as assert break class continue

def del elif else except exec

finally for from global if import

in is lambda nonlocal not or

pass raise return try while with

yield True False None

www.simplificaaulas.com
Funções
Funções são usadas para converter valores de um tipo para o
outro.
 int pode converter para inteiro um número “quebrado”
(float) ou um string. Para números quebrados, a parte
decimal do número é descartada - um processo que
chamarems de truncamento.
 float transforma um inteiro, um float ou um string
representado em um float de maneira sintaticamente legal
em um float.
 str transforma os seus argumentos em um string. Lembre-
se que quando imprimimos um string, os apóstrofes ou
aspas que o delimitam são removidos. Entretanto, se
imprimimos o tipo de um string vemos que ele é str.
 type retorna a classe a que pertence um valor.
 eDivisivel retorna ou True ou False para indicar se um
número (ou variável) é ou não divisível por outro.Essa
função é booleana, ou seja, resulta em um valor booleano
(True ou False).

 Input recebe valores do usuário.

Exemplo: n = input(“Digite a sua idade:”)


A função input permite que apresentemos um texto
ou prompt ao usuário (prompt string). Quando a função é
executada o texto é exibido, como a mensagem do exemplo
acima. O usuário do programa pode digitar a idade e pressionar
a tecla enter. Quando isto ocorre o texto que foi digitado é
retornado pela função input e atribuído a uma variável (n no
caso).
Mesmo o usuário digitando um número, você receberá como
resposta um string que deve ser convertida de string para int ou
float.

www.simplificaaulas.com
Operadores e operandos (valores sobre os quais o operador
trabalha)
 + soma
 - subtração
 * multiplicação,
 ** exponenciação.
 / divisão podendo resultar não inteiro
 // divisão resultando sempre um inteiro
 % operador módulo ou operador resto : devolve o resto da
divisão do primeiro operando pelo segundo. Podemos
utilizá-lo para verificar se um número é divisível por outro,
você pode extrair o dígito ou dígitos mais à direita de um
número. Por exemplo, x %10 é o dígito mais a direita
de x (na base 10). Similarmente x % 100 é o número
formado pelos dois último dígitos de x.O operador resto
também é extremamente útil para fazermos conversões,
digamos, de segundos para horas, minutos e segundos.

Ordem das operações


Regras de precedência (rules of precedence) - da mesma forma
que em matemática.

1. Parenteses
2. Exponeciação
3. Multiplicação e ambas as divisões (operadores com
a mesma precedência são executados da esquerda
para a direira).
4. Adição/ Subtração
5. Relacional (==, !=, <=, >=, >, <)
6. Not
7. And
8. Or

www.simplificaaulas.com
Operadores Lógicos
 and é verdadeiro se ambas as condições são verdadeiras
 or é verdadeiro se uma das condições é verdadeira
 not nega uma expressão booleana, de forma
que not x > y é verdadeiro se x > y é falso, isto é, se x é
menor ou igual a y.

Condicional: If

Exemplo:

if A < B:

print(“A é menor do que B")

elif A> B:

print(“A é maior do que B")

else:

print(“A e B são iguais.")

A expressão booleana depois do if (A < B) é chamada


de condição. Se é verdadeira, então os comandos são
executados. Se não, então os comandos tabulados depois
do else são executados.
O else também pode ser omitido, quando assim for conveniente.
Neste caso, quando a condição tem valor True, os comando são
executados. Caso contrário, o fluxo de execução continua no
comando depois do if.
Um condicional pode também ser aninhado dentro de outro.

www.simplificaaulas.com
Python provê uma forma alternativa de escrever seleções
aninhadas como as mostradas na seção anterior. Isto é
chamado algumas vezes
Para simplificar ainda mais o código de programas com if-
else aninhados, o Python oferece o comando if-elif-else.
O elif é apenas uma contração do else if que torna mais claro o
tratamento das várias alternativas, encadeando as condições.
Blocos de elif podem ser repetido várias vezes.
Ou seja, o if-elif-else pode ter um ou mais blocos com elif, cada
um com a sua condição específica. Cada bloco (condição) é
testado um de cada vez, até que uma condição seja satisfeita e
apenas os comandos dentro desse bloco são executados.
Quando nenhuma condição é satisfeita, os comandos dentro
do else são executados. Assim, não é necessário que haja
um else no final.

Repetição: while

while (= enquanto) permite repetir instruções enquanto uma


condição for verdadeira.
A condição é em geral definida na forma de uma expressão
lógica. O resultado de uma expressão lógica é
sempre True ou False.
Quando o comando while é executado, a condição é testada e,
caso verdadeira, o seu corpo é executado (podem ser vários
comandos, um de cada vez), a condição volta a ser testada e,
caso verdadeira, o processo se repete. O while termina quando,
ao testar a condição, o resultado do teste for False.

www.simplificaaulas.com
EXERCÍCIOS (vídeos de resoluções destes exercícios em
simplificaaulas.com)

1) (P1 2017) Simule o código abaixo e selecione a opção


correspondente à saída impressa do programa. Ignore as
quebras de linhas geradas pelo comando print.
def main() :
n=3
div = 2
ehprimo = True
while (div < n and ehprimo) :
if (n % div == 0) :
ehprimo = False
div = div + 1
print(div)
if (not ehprimo):
print(n, "nao eh primo"):
else:
print(n, "eh primo"):
main()

 9 8 7 6 'nao eh primo'
 6 'nao eh primo'
 3 'nao eh primo'
 7 7 5 'nao eh primo'
 8 'nao eh primo'
 5 'nao eh primo'
 4 4 'nao eh primo'

www.simplificaaulas.com
 6 'nao eh primo'
 9 'nao eh primo'
 3 3 'eh primo'
 9 'nao eh primo'
 3 'nao eh primo'
 8 'nao eh primo'
 5 'nao eh primo'
 4 'nao eh primo'
 7 'nao eh primo'

2) (P1 2017) Esta é uma questão com vários itens, cada item
com 5 ou 6 opções, para ser selecionada a única opção correta.
Será apresentado um enunciado de um algoritmo a ser
construído e será fornecido um arcabouço do código, ou seja,
será apresentada a estrutura do código com várias lacunas,
como no modelo abaixo.
def main() :
n = int(input())
div = 2
ehprimo = True
while L1
if L2
ehprimo = False
L3
if L4
L5
else:
print(n, "eh primo"):

www.simplificaaulas.com
main()

L1:
a) d <= b + b
b) d > a + a
c) V1>0 and algo!=False
d) (div<n and ehprimo)
e) V1!=0
L2:
a) a = b + c
b) b = d + 1
c) (n % div ==0)
d) b = b // 10
e) c = c % 10
L3:
a) b = a + c
b) a = a + 1
c) v1 = v1%10
d) div = div + 1
e) b = a
L4:
a) b = a
b) (not ehprimo):
c) div = div + 1
d) v1 = v1%10
e) b = a + c
L5:

www.simplificaaulas.com
a) Print(n, “nao eh primo”
b) div = div + 1
c) v1 = v1%10
d) b = a
e) b = a + c

www.simplificaaulas.com
3) (P1 2017) Este é um exemplo SIMPLES de um dos modelos de
questão da prova. Nesta questão você deve elaborar um
programa que, dado um número diga se ele é primo. Para isso
você deve usar APENAS os trechos de código indicados
abaixo. Assinale a alternativa que contém os blocos corretos
na ORDEM correta. ATENÇÃO: os blocos não estão identados
assim o nal do laço é indicado por um '*', após o número de
bloco que contém o último comando do laço. DICA 1: As
variáveis do programa são APENAS: e_primo; n; div. DICA 2:
Não tente usar todas as combinações, tente codicar o
programa na área de rascunho e depois escolha os trechos
adequados. O RASCUNHO NÃO SERÁ CONSIDERADO NA
NOTA

 5,9,2,11,13,*,4
 5,9,2,11, 10,*, 4
 6,8,2,11,13,10,4,*
 5,9,2,11,13,*,4
 6,8,2,11,10,4,*
 5,9,2,11,13,10,*,4

www.simplificaaulas.com
4) (P1 2017) Esta é uma questão para selecionar afirmações
corretas. Nela daremos alguns trechos de código e você
deverá analisar as afirmações sobre cada trecho e marcar
APENAS os corretos.
Existem hipóteses sobre o tipo de valores que o usuário digitará
e as afirmações corretas são aquelas para as quais qualquer
que seja a entrada válida, a afirmação se verifica.
Note que devido ao tipo de questão: para cada afirmação
correta marcada, um valor positivo será computado para a nota
do exercício, mas de forma inversa, se for marcada uma
afirmação falsa, será descontado um valor parcial da nota.

T1
 Verifica se o número é composto
 Imprime não se o número não é primo
 Verifica se o número é primo

www.simplificaaulas.com
 Falha ao tentar verificar se o número é primo
 Pode imprimir sim em alguns casos
T2
 Pode imprimir sim em alguns casos
 Falha ao tentar verificar se o número é primo
 Imprime não se o número não é primo
 Verifica se o número é primo
 Verifica se o número é composto
T3
 Imprime não se o número não é primo
 Pode imprimir sim em alguns casos
 Falha ao tentar verificar se o número é primo
 Verifica se o número é primo
 Verifica se o número é composto
T4
 Imprime não se o número não é primo
 Verifica se o número é primo
 Pode imprimir sim em alguns casos
 Falha ao tentar verificar se o número é primo
 Verifica se o número é composto

www.simplificaaulas.com
5) (P1 2016)
Sejam a, b e c números inteiros tais que a ≥ b ≥ c > 0. Sabe-se
que os valores a, b e c são comprimentos dos lados de um
triângulo se a < b + c. Suponha que a, b e c são comprimentos
dos lados de um triângulo. Quanto aos ângulos diz-se que um
triângulo é
se a2 = b2 + c2;
se a2 > b2 + c2 ou
se a2 < b2 + c2.
Quanto aos lados diz-se que um triângulo é
se os três lados têm o mesmo comprimento;
se exatamente dois lados têm o mesmo comprimento; ou
se os três lados têm comprimentos diferentes.
Escreva um programa que lê 3 números inteiros positivos e
imprime uma mensagem indicando se eles são ou não
comprimentos dos lados de um triângulo. No caso deles serem
comprimentos de um triângulo o programa deve ainda imprimir
mensagens indicando a classificação do triângulo quanto aos
ângulos e quanto aos lados.
A seguir estão 4 exemplos de execução do programa. A saída
do seu programa deve ser igual às mostradas nos exemplos. Os
valores em vermelho foram digitados pelo usuário.

www.simplificaaulas.com
www.simplificaaulas.com
6) (P1 2016)
Esta questão consiste na implementação de 3 funções.
a) Suponha que s e c são inteiros, s ≥ 0 e c ≥ 0, com o mesmo
número de dígitos. Zeros à esquerda são levados em
consideração.
Uma mesma posição em que s e c têm um mesmo dígito é
chamada de posição certa.
Por exemplo, se considerarmos inteiros com 3 dígitos, temos
que
s = 123 e c = 123 têm 3 posições certas;
s = 12 (= 012) e c = 123 têm 0 posições certas;
s = 111 e c = 1 (= 001) têm 1 posição certa;
s = 50 (= 050) e c = 505 têm 0 posições certas; e
s = 708 e s = 8 (= 008) têm 2 posições certas.
Escreva uma função posicoes_certas() como especificada a
seguir.

www.simplificaaulas.com
b) Suponha que s e c são inteiros, s ≥ 0 e c ≥ 0, com o mesmo
número de dígitos. Zeros à esquerda são levados em
consideração.
Diremos que pode haver um casamento entre uma posição de
s e uma posição de c se essas posições têm um mesmo dígito.
Por exemplo, se s = 123 e c = 321, então pode haver casamento
entre a unidade de s e a centena de c, a dezena de s e a dezena
de c e a unidade de s e a centena de c.
O número de dígitos casados entre s e c é o maior número
possível de casamentos entre posições de s e c em que uma
mesma posição não apareça em dois casamentos (poligamia é
proibida). Por exemplo, se considerarmos inteiros com 3
dígitos, temos que:

www.simplificaaulas.com
Escreva uma função digitos_casados() como especificada a
seguir.

c)
Escreva um programa (= função main()) que sorteia um inteiro
segredo, segredo ≥ 0, com 3 dígitos, que deverá ser adivinhado
por um jogador. Zeros à esquerda são considerados.
Em cada tentativa do jogador para adivinhar o inteiro segredo
o programa:
lê um inteiro chute digitado pelo jogador, chute ≥ 0, com 3
dígitos, zeros à esquerda são considerados;
imprime o número de posições certas de segredo e chute; e
imprime o número de dígitos casados de segredo e chute.
O programa deve parar assim que o número segredo for
adivinhado pelo jogador ou depois de 6 tentativas frustadas. Ao
final, o programa deve imprimir uma mensagem informado o
número sorteado e se o jogador adivinhou ou não o segredo.
O seu programa deve utilizar a função posicoes_certas() do
item 3(a) e a função digitos_casados() do item 3(b) . Você
pode utilizar essas funções mesmo que não as tenha feito.
A seguir estão exemplos de 3 execuções do programa. A saída
do seu programa deve ser igual às mostradas nos exemplos. Os
valores em vermelho foram digitados pelo usuário.

www.simplificaaulas.com
www.simplificaaulas.com
7) (P1 2016)
Dizemos que uma sequência com pelo menos 3 números
inteiros e sem elementos consecutivos iguais é um se tem um
pedaço inicial crescente (estritamente) depois fica
decrescente (estritamente) até o final.
[1,2,1] é um pico, pois tem o pedaço inicial crescente [1,2] e
depois decresce.
[1,5,3] é um pico, pois tem o pedaço inicial crescente [1,5] e
depois decresce.
[2, 5, 10, 46, 25, 12, 7] é um pico, pois tem o pedaço inicial
crescente [2, 5, 10, 46] e depois só decresce.
[13, 5, 4, 12, 3, 0, -3, -14] não é um pico, pois o seu pedaço inicial
[13, 5] é decrescente.
[6, 7, 8, 9, 10] não é um pico, pois tem apenas um pedaço
crescente.

www.simplificaaulas.com
[10, 9, 7, 4] não é um pico, pois tem apenas um pedaço
decrescente.
[1, 2, 1, 2, 1, 2, 1] não é um pico, pois depois do pedaço inicial
crescente [1, 2] não decresce até o final.
Escreva um programa (= função main()) que lê um inteiro n, n ≥
3, e uma sequência com n números inteiros e imprime uma
mensagem indicando se a sequência é um pico ou não. O seu
programa pode supor, sem verificar, que a sequência não tem
números consecutivos iguais.
A seguir estão 4 exemplos de execução do programa. A saída
do seu programa deve ser igual às mostradas nos exemplos. Os
valores em vermelho foram digitados pelo usuário.

www.simplificaaulas.com
8) (P1 2014)
Na figura ao lado, no plano cartesiano, a região sombreada não
inclui as linhas de bordo. Note que o eixo y cai bem no meio da
figura, e usamos o lado do quadrado para indicar as ordenadas
correspondentes.
Escreva na página do desenho um programa que lê as
coordenadas cartesianas (x, y) de um ponto (ambas do tipo
float) e imprime entro se esse ponto está na região, e fora caso
contrário.

www.simplificaaulas.com
9) (P1 2014) Escreva um programa que lê dois inteiros m e n, 0
< m < n, e determina quantos inteiros entre m e n, escritos sem
0 à esquerda, não têm dígitos repetidos. Exemplos:
para m = 10, n = 12 imprime 2 (corresponde a 10 12)
para m = 10, n = 30 imprime 19 (corresponde a 10 12 13 14 15
16 17 18 19 20 21 23 24 25 26 27 28 29 30)
para m = 989, n = 1022 imprime 0
para m = 98, n = 102 imprime 2
(corresponde a . . .)

www.simplificaaulas.com

Você também pode gostar