introduÇÃo À computaÇÃo - resumo e exercÍcios* p1 … · 2018. 3. 26. · digamos, de...

23
www.simplificaaulas.com 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.

Upload: others

Post on 12-Dec-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

www.simplificaaulas.com

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.

Page 2: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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

Page 3: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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.

Page 4: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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

Page 5: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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.

Page 6: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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.

Page 7: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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'

Page 8: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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"):

Page 9: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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:

Page 10: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

www.simplificaaulas.com

a) Print(n, “nao eh primo”

b) div = div + 1

c) v1 = v1%10

d) b = a

e) b = a + c

Page 11: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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

Page 12: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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

Page 13: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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

Page 14: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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.

Page 15: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

www.simplificaaulas.com

Page 16: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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.

Page 17: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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:

Page 18: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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.

Page 19: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

www.simplificaaulas.com

Page 20: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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.

Page 21: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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.

Page 22: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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.

Page 23: INTRODUÇÃO À COMPUTAÇÃO - RESUMO E EXERCÍCIOS* P1 … · 2018. 3. 26. · digamos, de segundos para horas, minutos e segundos. Ordem das operações Regras de precedência (rules

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