Você está na página 1de 5

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

EXAME FINAL D E
ALGORIT MOS E LÓGICA DE P RO GRAMAÇ ÃO
ENUNCI ADO
Curso: LEIT/LEE 1ª Época
Turma: Data: 06-Julho-2021
Ano Lectivo: 2021 – 1º Semestre Duração: 100 min.
Nome do Docente: Grupo da disciplina Pontuação: 450

Importante:
1) A fraude no exame de uma disciplina tem como consequência a reprovação na disciplina, sem possibilidade do
infractor participar no exame de recorrência nem no exame especial (se existir) da disciplina em causa (alínea b,
artigo 1 da ADENDA AO RPL).
2) O aluno que se fizer à sala de exame ciente de problemas administrativos (dívidas), terá a nota anulada sem
possibilidade de negociação a posterior.

_______________________________________________________________________________

Exercício 1 [60]

a) Explique a diferença entre while e for. [30]


A estrutura while é utilizada quando não sabemos quantas vezes as instruções devem ser
repetidas, enquanto a estrutura for é utilizada quando sabemos a quantidade de vezes as
instruções deverão ser repetidas ou se estamos diante de um intervalo de valores.
b) Qual e a necessidade de utilização de Módulos em um programa python. [30]
Os módulos em python, por possuírem funções pré-definidas, eles nos permitem de evitar recriar
instruções já definidas em alguma função existente num determinado módulo, fazendo que
evitemos a repetição de códigos e permitindo realizar códigos mais curtos e desenvolver mais
rápido. Assim reutilizamos as funções já definidas, nos ajudando a resolver problemas
específicos em nosso programa.

Exercício 2 [80]

a) Escreva uma gramática em notação BNF que permite de criar uma expressões contendo ou não
parênteses e realizando todas as operações (adição, subtracção, divisão e multiplicação) sobre as
variáveis A, B, C, D, E. [40]
Expressões validas:
a) A + B - C / D * E
b) (A – B) * C + (D / E)
c) A * B
d) (C – D)

Pág. 1 de 5
INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Solução:

b) Considere a seguinte gramática em notação BNF: [40]


<programa> ::= begin <lista_stmt> end
<lista_stmt> ::= <stmt> | <stmt> ; <lista_stmt>
<stmt> ::= <var> := <expressao>
<espressao> ::= <var> + <var> | <var> - <var> | <var>
<var> ::= A | B | C
i. Indique os símbolos terminais e os símbolos não terminais da gramática.
ST: <programa>, <lista_stmt>, <stmt>, <var>,<expressao>
SNT: A, B, C, begin, end, ; , :=, + , -

ii. Indique quais das expressões seguintes pertencem e não pertencem à linguagem
definida pela gramática.
begin A := B + C end : pertence
begin B := B - C ; C := C end : pertence
begin A := B + C ; C := A - B end : pertence
begin A := B + C ; C := A - B ; C := C end : pertence
begin A := B + C ; C := A - B ; C := C + 1end : não pertence

Exercício 3
Pelo nascimento do seu filho, o Manuel Mangue criou uma conta a prazo para seu filho com o valor
de 10.000,00Mt que terá o aumento do valor depositado com à taxa de 1,25% (a cada mês a conta é
aumentada em 2,25%). [100]
a) Desenvolva um algoritmo (PseudoCodigo e fluxograma) para exibir o valor existente na
conta do filho de Manuel Mangue ao longo de cada aniversário durante 17anos.
Solução pseudoCodigo

Pág. 2 de 5
INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Solução Fluxograma

Pág. 3 de 5
INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Exercício 4 [80]

Escreve um algoritmo (em python) que permite de ler uma frase, crie uma função que recebe a frase
e uma posição em argumento. A função deverá devolver os caracteres que se encontram desde o início
da frase até a posição indicada
Exemplo: “Informática é uma ciência de tratamento automático de informação”
Posição: 5 frase:”Inform”
def retirar(frase, posicao, tamanho):
nova = ""
tam = 0
while tam < tamanho:
nova = nova + frase[posicao]
posicao = posicao + 1
tam = tam + 1
print(nova)
frase = input("insira uma frase: ")
pos = eval(input("insira posicao: "))
tam = eval(input("insira o tamanho: "))
retirar(frase,pos,tam)

Exercício 5
Escreve um algoritmo (em python) que permite de: [130]
a) Criar uma lista contendo os nomes de cursos do ISUTC, [20]
b) Criar uma lista contendo os nomes de candidatos a cursos do ISUTC, [20]
c) Criar uma lista contendo os nomes dos 3 candidatos, escolhidos aleatoriamente (função
random) e o curso que o sistema escolhe de forma aleatória para cada estudante. Exemplo:
{“Edvaldo Mahesh”,”LECT”,“Helton General”,”LEIT”, “Ricardo Bunguel”,”LEE”} [90]
Nota: As duas listas (candidato e curso) devem conter 100 elementos.
from random import *
#Criar uma lista contendo os nomes de cursos do ISUTC
C = []
for i in range(100):
C.append(input("curso: "))
#Criar uma lista contendo os nomes de candidatos a cursos do ISUTC

Pág. 4 de 5
INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

CA = []
for i in range(100):
CA.append(input("Nome Completo: "))
#criar uma lista contendo os nomes dos 3 candidatos, escolhidos
aleatoriamente
E = []
for i in range(3):
ca = CA[int(random()*100)]
if ca not in E:
E.append(ca)
E.append(C[int(random()*100)])
print("**O Sistema escolheu**")
print(E)

Pág. 5 de 5

Você também pode gostar