INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.

P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

EFA Tecnológico - Técnico de Informática e Sistemas

UFCD: 0782 – Programação em C – C++ - Conceitos Fundamentais
UFCD: 0783 – Programação em C – C++ - Ciclos e Decisões
Formador: João Leitão

Grupo I - 0782
Atenção! Se apresentar mais de uma resposta, ou resposta ambígua, a questão será
anulada.
(20 valores)
Desenvolva um programa (em pseudocódigo C ou linguagem C) que receba três
números que representam, por ordem, valor do recibo, taxa normalizada de IVA e taxa
normalizada de IRS e no final o programa devolve ao utilizador qual o valor a receber
sabendo que:
Valor a receber = valor do recibo + (valor do recibo*taxaIVA) – (valor do
recibo*taxaIRS)
As taxas normalizadas apresentam um intervalo de dados entre 0 e 1.
Seria possível utilizar o mesmo tipo de dados para as variáveis que recebem os três
números inseridos? Justifique
Grupo II - 0783
Atenção! Se apresentar mais de uma resposta, ou resposta ambígua, a questão será
anulada.

(20 valores)
Considere o problema definido no Grupo I – 0782. Acrescente o que for necessário ao
seu programa para que seja garantido o correto funcionamento do programa, isto é,
acrescentar as validações necessárias para que as taxas estejam no intervalo entre 0
e 1 (IVA e IRS). Deverá ainda verificar situações de erro (valores do recibo negativos).
Indique também as alterações ao programa para que seja possível ao utilizador, ficar a
utilizar a aplicação até carregar na opção para sair (0). De notar que o utilizador só
pode escolher duas opções (1 – para utilizar o seu programa. 0 – sair). Deverá realizar
a validação de erros para as restantes opções.
Indique também as alterações ao programa para que seja possível ao utilizador, antes
de inserir o valor do recibo, taxa de IVA e taxa de IRS seja perguntado quantos recibos
deseja verificar. A aplicação irá receber então os 3 valores (valor, IVA e IRS) N vezes,
em que N representa o número que o utilizador inseriu aquando dessa mesma
pergunta.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

Escreva um algoritmo em C para as seguintes situações:

1. Programa que pede ao utilizador uma temperatura em graus Celsius e devolve ao
utilizador uma análise qualitativa da temperatura com base nas seguintes condições:

Temperatura

Análise qualitativa

<5 graus

Muito Frio

>=5 graus e <10 graus

Frio

>=10 graus e <20 graus

Ameno

>=20 graus e <30 graus

Calor

>=30 graus

Muito Calor

2.

Programa que calcula qual o menor de três números (dados pelo utilizador).

3. Programa que pede ao utilizador um salário bruto e devolva ao utilizador o salário
liquido tendo em conta as seguintes situações:

Salário Bruto

Taxa Aplicada

<1000€

10%

>=1000€ e <2000€

20%

>=2000€

30%

De notar que a taxa aplicada tem como objetivo realizar um corte no salário bruto,
isto é, o salário liquido = salário bruto - taxa.
a. Altere o programa anterior para que caso o utilizador insira um salário bruto
negativo, o programa não deixe avançar enquanto esses mesmos valores
forem negativos.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

Escreva um algoritmo e respectivo programa em C para as seguintes situações:

1. Programa que pede ao utilizador uma taxa de iva (somente o número sem o símbolo
da percentagem) e devolve a descrição dessa taxa consoante o quadro abaixo:

Taxas de
IVA

Descrição

IVA devido pelo
0% adquirente
6% Taxa reduzida de IVA
Taxa intermédia de
13% IVA
23% Taxa normal de IVA

De notar que caso o utilizador introduza qualquer outra taxa deverá receber uma mensagem a
indicar que essa taxa não é válida.

2.

Programa que verifica se um aluno está aprovado ou reprovado consoante a nota que
é inserida. O utilizador deverá inserir uma nota entre 0 e 20 e caso essa nota seja
superior ou igual a 9,5 valores então estará APROVADO. Caso contrário estará
REPROVADO. Se a nota for fora dos parâmetros (menor que 0 e maior que 20) deve
enviar mensagem de erro personalizada (diferente nos dois casos).

3.

Altere o programa anterior para indicar também a descrição da nota que inseriu (Fraco,
Insuficiente, Bom ou Muito Bom)

4. Altere os seus programas para que o utilizador tenha um menu antes de
iniciar o seu programa. Assim, caso o utilizador insira a opção 1, vai para o
seu programa, senão, se inserir o código 99 este termina, dizendo “Obrigado
por utilizar este programa. NOME_FORMANDO”.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

1. Indique qual o resultado final das variáveis: A, B e C após a execução do seguinte
fragmento de código:
(…)
DECLARA X;
DECLARA Y;
DECLARA W;
DECLARA A;
DECLARA B;
DECLARA Z;
Z=0;
X=3;
X=10;
Y=2;
Y=12;
If (X < 2 || Y>5) {
A=X+Y;
B=A-Y;
Y=0;
X=1;
}
Else{
A=X+(Y*2);
B=Y-1;
Y=1;
X=1;

A=10+12=22
B=22-12=10
Y=0
X=1

}
do{
w = z+1;
z=z+1;
}while(z<2);
A=A+1; 23
B=B+1; 11

W=Z+1=1
Z=0+1=1

W=1+1=2
Z=1+1=2

A=22
B=10
Y=0
X=1

SAI A;
SAI B;
SAI X;
SAI Y;
SAI Z;
SAI W;
(…)

2. Introduza o programa anterior no compilador de C, Quincy e verifique os
resultados obtidos.

A=22
B=12
Y=0
X=1

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

Escreva um algoritmo e respectivo programa em C para as seguintes situações:

1. Programa que recebe um valor referente à radiação UV e atribui uma descrição para
essa radiação tendo em conta o seguinte quadro:

Radiação
UV

Descrição

Entre 0 e 2 Radiação UV Baixa
Radiação UV
Entre 3 e 5 Moderada
Entre 6 e 7 Radiação UV Alta
Entre 8 e Radiação UV Muito
10 Alta
Radiação UV
> 11 Extrema

De notar que a radiação UV não pode ser negativa.

2. Altere os seus programas para que estes só terminem quando o utilizador
insere o código 99. Pode assumir que caso o utilizador insira a opção 1, vai
para o seu programa, senão, se inserir o código 99 este termina.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

1. Alterar o programa anterior para:
a. Caso o utilizador escolha a opção 1, após o uso do programa, aparece
uma mensagem a perguntar se o utilizador quer utilizar novamente o
programa. Se SIM, volta ao inicio do programa. Se NÃO, termina o
programa.
b. No caso de escolher a opção 99, sai imediatamente do programa.

c. No caso de inserir qualquer outra opção diferente de 1 ou 99 o
programa dá mensagem de erro e volta a solicitar a inserção de opção

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Média das temperaturas

Formador: João Leitão

Descrição

(os valores limites estão incluídos no
intervalo)
Classificação
Entre 10 graus negativos e 10 graus positivos D
Classificação
Entre 11 graus positivos e 20 graus positivos C
Classificação
Entre 21 graus positivos e 30 graus positivos B
Classificação
Entre 31 graus positivos e 35 graus positivos A
Classificação
Senão A+
Crie um programa que receba dois valores de temperaturas (valor mínimo
registado e valor máximo) e um nome de uma cidade e deverá retornar ao
utilizador qual a descrição referente à média das temperaturas, tendo em conta o
seguinte quadro:
De notar que as médias das temperaturas não podem ser abaixo dos 10 graus
negativos nem acima dos 40 graus positivos. Nestas situações o utilizador deve ser
informado com uma mensagem de erro.

3. Crie um menu em que:
a. Caso o utilizador insira a opção 1, testa o seu programa.
b. Caso o utilizador insira a opção 2, recebe um texto com o seu nome.
c. Caso o utilizador insira a opção 3, recebe uma mensagem a dizer:
Opção brevemente disponível.
d. Caso o utilizador insira a opção 5 recebe uma mensagem a dizer:
Obrigado por utilizar o nosso programa. A sair…
e. Caso o utilizador insira qualquer outro número deverá receber uma
mensagem a dizer que a opção é inválida.
4. Altere o menu criado no ponto anterior para ficar em ciclo até o utilizador escolher
a opção para sair.
5. Altere o programa anterior para que, NO MOMENTO DA INSERÇÃO DAS
TEMPERATURAS, se inserir uma temperatura inválida, o programa volte a pedir a
inserção.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

EFA Tecnológico - Técnico de Informática e Sistemas
UFCD:0783 – Programação em C – C++ - Ciclos e Decisões

Nome Formando: _______________________

Data: ___/___/___ Formador: João Leitão

Classificação: ________________________________________________________________

1. Crie um programa para a seguinte situação:
O utilizador deverá inserir um nome de um atleta e inserir a sua altura (em
centímetros) e o seu peso (em Kg).
Caso a altura seja inferior a um metro e meio e o peso superior a 60kg deve receber
uma mensagem “Cuidado com a alimentação”.
Caso o peso seja superior a 60kg e a altura inferior a 1,80m deve receber a seguinte
mensagem “Altura e peso compatível.
No entanto, sempre que o utilizador exceder os 100kg independentemente da altura
deve receber uma mensagem a dizer: “Muito cuidado com a alimentação”.
Nos restantes casos deverá receber “Peso equilibrado para a estatura apresentada”.
De notar que não é possível ter alturas e pesos negativos sendo que neste caso o
utilizador recebe uma mensagem de erro.
3. Crie um menu em que:
a. Caso o utilizador insira a opção 1, utilize o programa criado no ponto 1.
deste grupo.
b. Caso o utilizador insira a opção 2, recebe uma mensagem a dizer:
Opção brevemente disponível.
c. Caso o utilizador insira a opção 0 recebe uma mensagem a dizer:
Obrigado por utilizar o nosso programa. A sair…
d. Caso o utilizador insira qualquer outro número deverá receber uma
mensagem a dizer que a opção é inválida.

4. Altere o programa anterior para ficar em ciclo até o utilizador escolher a opção
para sair.´
5. Altere o programa anterior para ficar em ciclo quando o utilizador inserir alturas e
cm negativos.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

EFA Tecnológico - Técnico de Informática e Sistemas
UFCD:0783 – Programação em C – C++ - Ciclos e Decisões
Duração: 150 minutos
Nome Formando: _______________________

Data: ___/___/___ Formador: João Leitão

Classificação: ________________________________________________________________

1. Crie um programa que receba um valor para a medida de classificação energética
(R) de um prédio e devolva a Classe energética que este possui.

R

Classe

(os valores limites estão incluídos no intervalo)

Energética

Menor que 0,25

A+

Entre 0,26 e 0,50

A

Entre 0,51 e 0,75

B

Entre 0,76 e 1

B-

Superior a 1 | Inferior a 0

Erro.

2. Crie um menu em que:
a. Caso o utilizador insira a opção 1, o programa termina (mas antes envia
uma mensagem a dizer: Obrigado por utilizar o meu programa.
b. Caso o utilizador insira a opção 10, utilize o programa criado no ponto
anterior
c. Caso o utilizador insira qualquer outro número deverá receber uma
mensagem a dizer que a opção é inválida.
3. Altere o menu criado no ponto anterior para só seja possível terminar o seu
programa com a opção para sair (no caso contrário e após as ações a realizar
para uma opção, volta ao menu anterior).

4. Altere o programa anterior para que, no momento de inserção de R, caso dê erro,
solicite a inserção de novos valores.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

1. Indique qual o resultado final da variável i e x após a execução do seguinte
fragmento de código:
(…)
int i;
int x;

0 3 6 9 12

15

for(i=0;i<10;i=i+3){
Printf(“%d”,i);
}
Printf(“%d”,i);

2. Indique qual o resultado final das variáveis após a execução do seguinte
fragmento de código:
(…)
int x;
int y;
x=0;
x=10;
y=x;
int i;
for(i=0;i<2;i=i+2){
x=x+i;
y=3;
}

x =0+2=2
0 2

X=4
Y=7

int res;
res = x-y;
printf(“%d”,i); 4
printf(“%d”,res); -3
printf(“%d”,x); 4
printf(“%d”,y); 7

3. Introduza o programa anterior no compilador de C, Quincy e verifique os
resultados obtidos.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

1. Crie um programa para a seguinte situação:
a. O utilizador insere um número impar e mostra todos os números
impares até esse valor.
2. Crie um programa para a seguinte situação:
a. O utilizador insere três números (utilizando um ciclo for) e o programa
indica quantos números inseridos estão acima de 10. De notar que o
utilizador pode não inserir qualquer número acima de 10 como pode
inserir um, dois ou até mesmo os três valores acima de 10.
3. Crie um programa para a seguinte situação:
a. O utilizador insere 5 números (utilizando um ciclo for) e o programa
realiza a soma do dobro de cada número inserido e mostra ao
utilizador esse valor (apenas).
4. Crie um menu em que caso o utilizador insira a opção 1, testa o seu programa
criado no ponto 1. Se o utilizador inserir a opção 2, testa o programa criado no
ponto 2. Se o utilizador inserir a opção 3, testa o programa criado no ponto 3. Se
inserir a opção 0, sai do programa. Se inserir qualquer outro número deverá
receber uma mensagem de erro.

4. Altere o programa anterior para ficar em ciclo até o utilizador escolher a opção
para sair.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

1. Crie um programa para a seguinte situação:
a. Receber do utilizador um número e mostrar o factorial desse número.
O factorial é calculado multiplicando o número pelos números inteiros
anteriores a esse mesmo número. Exemplo:
Factorial de 4 = 4*3*2*1
Factorial de 10 = 10*9*8*7*6*5*4*3*2*1

2. Crie um menu em que caso o utilizador insira a opção 1, testa o seu programa
anterior. Se inserir a opção 0, sai do programa. Se inserir qualquer outro número
deverá receber uma mensagem de erro.

3. Altere o programa anterior para ficar em ciclo até o utilizador escolher a opção
para sair.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

1. Indique qual o resultado final da variável x e y após a execução do seguinte
fragmento de código:
(…)
int x;
int y;
int z;
x=1;
y=0;
z=x+y; z=1+0= 1
x=z; =1
y=x; =1
if(z<0 && y>0){
x=1;
y=1;
}
Else if(z<0){
x=0;
y=0;
}
Else{
x=2;
y=2;
}

x 1 12
y0124
z1
i23456

int i;
for(i=x;i<6;i=i+1){
y=y+i;
}
do{
z = i+1;
}while(z<10); Ciclo Infinito
Printf(“%d”,x);
Printf(“%d”,y);
Printf(“%d”,z);
Printf(“%d”,i);

2. Introduza o programa anterior no compilador de C, Quincy e verifique os
resultados obtidos.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

1. Crie um programa para cada uma das seguintes situações (UTILIZAR FOR!):
A. Receber do utilizador um número inteiro positivo e calcular a soma
de todos os números inteiros positivos até a esse número. Caso
essa soma seja superior a 10, então recebe uma mensagem a dizer:
“Soma superior a 10”. Caso contrário: “Soma inferior ou igual a 10”
Exemplo: 5
15
Soma superior a 10

2. Crie um menu em que caso o utilizador insira a opção 1, testa o seu programa
anterior. Se inserir a opção 0, sai do programa. Se inserir qualquer outro número
deverá receber uma mensagem de erro.

3. Altere o programa anterior para ficar em ciclo até o utilizador escolher a opção
para sair.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha Formativa
Técnico de Informática e Sistemas | UFCD: 0783
Nome Formando: _____________________

Data: __/__/__

Formador: João Leitão

1. Crie um programa para cada uma das seguintes situações:
A. Programa para, dado um número N, calcule a soma de todos os números
positivos pares, inferiores ou iguais a esse número N.
Insira numero: 10
Resultado = 10 + 8 + 6 + 4 + 2
B. Um estacionamento cobra uma taxa mínima de 3€ para estacionar por três
horas. É cobrado um adicional de 1,50€ por hora, mesmo que não seja a
hora completa após as três primeiras horas.
O valor máximo para qualquer período de 24 horas é de 20€. Suponha que
nenhum carro fica estacionado por mais de 24 horas por vez. Desenvolva
um programa para calcular e mostrar as taxas do estacionamento para
cada cliente que estacionou nesse parque.
O programa deve solicitar ao utilizador o número de horas que o veiculo
esteve estacionado e devolve o valor a pagar.

2. Crie um menu em que caso o utilizador insira a opção 1, testa o seu primeiro
programa. Caso insira a opção 2, testa o segundo programa. Se inserir a opção
99, sai do programa. Se inserir qualquer outro número deverá receber uma
mensagem de erro.

3. Altere o programa anterior para ficar em ciclo até o utilizador escolher a opção
para sair.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

EFA Tecnológico - Técnico de Informática e Sistemas
UFCD:0783 – Programação em C – C++ - Ciclos e Decisões
Duração: 150 minutos
Nome Formando: _______________________

Data: ___/___/___ Formador: João Leitão

Classificação: _______________________________________________________________

Grupo I
Atenção! Se apresentar mais de uma resposta, ou resposta ambígua, a questão será
anulada.

1. Indique, para cada afirmação, se é verdadeira ou falsa, justificando no caso de ser
falsa:
a)
Na estrutura de decisão If, é obrigatório a colocação de uma condição
para o próprio If.
Verdadeiro é obrigatorio
_______________________________________________________________

_______________________________________________________________

b)
No ciclo do…While é obrigatório colocar a condição de paragem
imediatamente à frente do do.
FALSO É NECESSARIO FICAR A FRENTE DO WHILE
_______________________________________________________________

_______________________________________________________________

c)
A estrutura de decisão If…Else If…Else utiliza-se quando temos dois
casos possíveis.
Falso quando é tres casos
_______________________________________________________________

_______________________________________________________________

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

d)
Dentro das chavetas ( { …} ) de um ciclo for é obrigatório colocar um
printf.
Falso !
_______________________________________________________________
NAO SOU OBRIGADO!
_______________________________________________________________

Grupo II
1. Indique qual o último valor assumido pela variável i e qual o último valor a ser
mostrado ao utilizador dentro do ciclo for.
(…)
int i;
For(i=9;i<20;i=i+4){
Printf(“%d”,i);
}
(…) 21

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA
2. Indique qual o resultado final da variável x, y e z após a execução do seguinte
fragmento de código:
(…)
int x;
int y;
int z;
x=0;
z=2
x=z;
y=x;
z=y+x;
if(x>y || x>z){
x=x+1;
y=y+1;
z=z+1
}
Else if(x=y && x<z){
x=x+2;
y=y+2;
z=z+2
}
Else{
x=x+2;
y=y+2;
z=z+2
}
z=x-1;
y=x+1;
x=y-z;
Printf(“%d”,x);
Printf(“%d”,y);
Printf(“%d”,z);

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha de Avaliação Sumativa
EFA Tecnológico - Técnico de Informática e Sistemas
UFCD:0783 – Programação em C – C++ - Ciclos e Decisões
Duração: 150 minutos
Nome Formando: _______________________

Data: ___/___/___ Formador: João Leitão

Classificação: ________________________________________________________________

Notas Gerais:
Esta prova de natureza teórico-prática divide-se em quatro grupos e tem a duração de
150 minutos sem tolerância.
Utilize apenas caneta ou esferográfica de tinta indelével, azul ou preta.
Não é permitido o uso de corrector. Em caso de engano, deve riscar, de forma
inequívoca, aquilo que pretende que não seja classificado.
Não é permitido o uso de auxiliares.
As respostas ilegíveis ou que não possam ser identificadas são classificadas com zero
pontos.
Rubrique no canto superior direito todas as folhas da prova.
Qualquer tentativa de cópia será punida com a anulação da prova.
As cotações dos itens encontram-se descritas no quadro seguinte:
Grupo

Grupo I

Grupo II

Grupo III

Questão

Alínea

Cotação
(Pontos)

TOTAL

1.

0,5

2.

0,5

3.

0,5

4.

0,5

1.

2

2.

2

1.

2

2.

3

3.

3

4.

3

5.

2

2

4

14

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA
6.

1
20

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Grupo I
Atenção! Se apresentar mais de uma resposta, ou resposta ambígua, a questão será
anulada.

1. Qual a condição a colocar, em linguagem C, para dizer se uma variável (n) é igual
a 10?

(A)if(n!=10)
(B)else(n!=10)
(C)if(n=10)
(D)Nenhuma das anteriores.

2. Qual a condição a colocar, em linguagem C no ciclo Do While, para realizar um
conjunto de ações enquanto a variável (n) não for igual a 10?
(A) do(n=10);

(B)while(n=10);
(C)while(n!=10);
(D)Nenhuma das anteriores.

3. Qual das seguintes afirmações é verdadeira?

(A)É obrigatório que dentro de um else exista um if.
(B)É obrigatório um if ter uma condição
(C)É obrigatório um else ter uma condição
(D)Nenhuma das anteriores

4. “É possível que a variável a utilizar na condição de qualquer ciclo (for, do…while)
seja declarada dentro do próprio ciclo”?

(A)Verdadeiro
(B)Falso

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Grupo II
1. Indique todos os resultados enviados como output deste programa:
int i;
int j;
for (i=5;i>=0;i=i-1) {
printf("\n%d",i);
j=i-1;
i=j;
}
int res;
res=i+1+j;
if (res>10) {
printf("\n%d",i);
} else {
printf("\n%d",res);
}

1
i =5, 3,
j 4 2 0 -1

I=4, 2

0

Obrigatório mostrar cálculos intermédios!
para ambos os exercícios

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA
2. Indique todos os resultados enviados como output deste programa:
A=0,1
int a;
B=1,=1+1=2
int b;
a=0;
b=1;
A=0
a=b;
B=1
b=a+a;
C=0+1=1
if (a>b || b>a) {
a=0;
B=1+1=2
b=1;
C=1+1=2
} else {
A=1+2=3
C=2+1=3
if (a==b && b==a) {
a=10;
b=5;
C=5
} else {
A=3
a=3;
B=2
5+3+2=
b=7;
B=2+1=3
}
C=5+1=6
}
A=3+6=9
int c;
C=6+1=7
c=a+b;
do {
A=9
b=b+1;
B=3
c=c+1;
C=7
a=b+c;
c=c+1;
} while (a<5);
printf("\na: %d",a);printf("\nb: %d",b);printf("\nc: %d",c);

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Grupo III
Todas as questões devem de ser respondidas em linguagem C.
1. Crie um programa para calcular potências. O utilizador insere a base (x) e o
expoente (y) e o programa devolve xy.
Exemplo:
23 = 2*2*2 = 8
43 = 64
Nota: Base e expoente têm de ser positivos.
2.

Crie um programa que receba um valor para a medida de classificação energética
(R) de um prédio e devolva a Classe energética que este possui.

R

Classe

(os valores limites estão incluídos no
intervalo)

Energétic
a

Menor que 0,25

A+

Entre 0,26 e 0,50

A

Entre 0,51 e 0,75

B

Entre 0,76 e 1

B-

Superior a 1 | Inferior a 0

Erro.

Nota: O utilizador no caso de Erro deve receber mensagens personalizadas.
3. Crie um programa para calcular a soma de todos os números pares ou ímpares
(consoante a escolha inicial do utilizador) até um determinado número (que o
utilizador insere).
Assim, o utilizador escolhe inicialmente (1 – Somar ímpares ou 2 – Somar pares) e
de seguida insere o número até ao qual pretende somar. No final recebe a soma.
De notar que as únicas opções iniciais disponíveis é 1 ou 2 recebendo o utilizador
uma mensagem de erro no caso contrário.
Nota: Só pode utilizar um ciclo for apenas.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

4. Crie um programa para a seguinte situação:
O utilizador pretende um programa que dado 2 cidades (nomes) e as temperaturas do
ano de 2013 de cada mês (para cada cidade), o programa calcula qual a cidade
vencedora tendo em conta os seguintes critérios:
Se a média das temperaturas for inferior a 15 então é realizado um acréscimo de 15%
à média. Caso a média seja igual ou superior a 15 e menor que 20, então é realizado
um acréscimo de 10% à média. Caso seja igual ou superior a 20 é realizado um
acréscimo de 7,5%.
Este acréscimo feito em cada média tem como objetivo de lhe atribuir uma pontuação.
Para ter a pontuação final deve multiplicar o valor da média (já com acréscimo) por 5.
A cidade vencedora será a cidade que apresenta maior pontuação.
Surge ainda uma mensagem no ecrã a informar qual a classificação textual da cidade
vencedora, isto é, se a pontuação final for inferior a 100 surge a seguinte mensagem:
“AAAA - Cidade vencedora com classificação suficiente”. Caso a pontuação seja entre
100 e 150: “AAAA - Cidade vencedora com classificação de Bom”. Caso seja superior
a 150 surge: “AAAA - Cidade vencedora com classificação Muito Bom”.
Nota: AAAA – representa o nome da cidade vencedora.

5. Crie um menu em que:
a. Caso o utilizador insira a opção 1, o programa termina (mas antes envia
uma mensagem a dizer: Obrigado por utilizar o meu programa.
b. Caso o utilizador insira a opção 10, utilize o programa criado no ponto
1. deste grupo.
c. Caso o utilizador insira a opção 100, utilize o programa criado no ponto
2. deste grupo.
d. Caso o utilizador insira a opção 1000 utilize o programa criado no ponto
3. deste grupo.
e. Caso o utilizador insira a opção 2000 utilize o programa criado no ponto
4. deste grupo.
f. Caso o utilizador insira qualquer outro número deverá receber uma
mensagem a dizer que a opção é inválida.
Deve colocar antes de cada programa uma mensagem a dizer: “Bem-vindo ao
programa X, em que X representa o número da alínea (1,2,3 ou 4) do programa
criado.

6. Altere o menu criado no ponto anterior para só seja possível terminar o seu
programa com a opção para sair (no caso contrário e após as ações a realizar
para uma opção, volta ao menu anterior).

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha de Avaliação Sumativa
EFA Tecnológico - Técnico de Informática e Sistemas
UFCD:0783 – Programação em C – C++ - Ciclos e Decisões
Duração: 150 minutos
Nome Formando: _______________________

Data: ___/___/___ Formador: João Leitão

Classificação: ________________________________________________________________

Notas Gerais:
Esta prova de natureza teórico-prática divide-se em quatro grupos e tem a duração de
150 minutos sem tolerância.
Utilize apenas caneta ou esferográfica de tinta indelével, azul ou preta.
Não é permitido o uso de corrector. Em caso de engano, deve riscar, de forma
inequívoca, aquilo que pretende que não seja classificado.
Não é permitido o uso de auxiliares.
As respostas ilegíveis ou que não possam ser identificadas são classificadas com zero
pontos.
Rubrique no canto superior direito todas as folhas da prova.
Qualquer tentativa de cópia será punida com a anulação da prova.
As cotações dos itens encontram-se descritas no quadro seguinte:
Grupo

Grupo I

Grupo II

Grupo III

Grupo IV

Questão

Alínea

Cotação
(Pontos)

TOTAL

1.

0,5

2.

0,5

3.

0,5

4.

0,5

1.

2

2.

2

1.

1

2.

3

1.

2

2.

2

3.

2

2

4

4

10

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA
Grupo IV

4.

1

5.

2

6.

1

10

20

Grupo I
Atenção! Se apresentar mais de uma resposta, ou resposta ambígua, a questão será
anulada.

1. Indique, para cada afirmação, se é verdadeira ou falsa, justificando no caso de ser
falsa:
a)

É possível definir um if (ou else if) sem condição.

Falso apenas o Else é possivel definir sem condição
_______________________________________________________________

_______________________________________________________________

b)
A estrutura switch(…) case é utilizada quando se conhece os valores
exatos que uma determinada variável pode assumir.
_______________________________________________________________
_______________________________________________________________

c)
No ciclo do…While(…) é feita a verificação da condição antes de
executar o que está entre as {…..} (para a primeira iteração).
_______________________________________________________________
Falso a verificação da condição so é feita depois da primeira interação
_______________________________________________________________

d)
No ciclo While(…) é feita a verificação da condição antes de executar o
que está entre as {…..} (para a primeira iteração).

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

_______________________________________________________________
_______________________________________________________________

Grupo II
1. Indique todos os resultados enviados como output deste programa:
(…)

int i;
For(i=9;i<20;i=i+4){
Printf(“%d”,i); 9.13.17
}
Int res;
fora das chavetas i=21
res=i+1;
if(res>21){
printf(“%d”,i); imprimi =21
}else{
Printf(“%d”,res);
}
(…)

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA
2. Indique todos os resultados enviados como output deste programa:

int a;
int b;
int c;
a=0;
b=2;
c=a; 0
b=c; 0
c=c+a; 0
if(a>c || b>c){
a=0;
b=1;
c=2;
}
else if(a=b && a<=c){
a=1;
b=0;
c=0;
}
else{
a=1;
b=0;
c=1;
}
c=c-a; 0
do{
2
b=b+1; 1
2
c=c+1; 1
4
a=b+c; 2
3
c=c+1; 2
}while(a<3);
printf("\na: %d",a); 4
printf("\nb: %d",b); 2
printf("\nc: %d",c);
3

Obrigatório mostrar cálculos intermédios!

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Grupo III
1. Pretende-se realizar um programa que dados um número o programa calcule e
mostre qual o fatorial desse número. De notar que caso o utilizador insira um
numero negativo o programa deve de dar uma mensagem de erro.
a. A solução apresentada contém erros. Indique quais os erros que
encontra na solução apresentada.
b. Apresente uma nova solução corrigindo os erros assinaladas na alínea
anterior.

#include<stdio.h>
Int main(){
Int n;
Int i;

int num;

for(i=0;i<n;i=i+1){
scanf(“%d”,&num);
}
num=num*i;
printf(“%d”,&num);
return(0);
] }

#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int fat;
fat=1;
int i;
for (i=n;i>=1;i=i-1)
{
fat=fat*i;
}
printf ("\nO fatorial desse numero");
printf("\n%d",fat);
return(0);
}

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Grupo IV
Todas as questões devem de ser respondidas em linguagem C.
1. Crie um programa para a seguinte situação:
O programa a desenvolver recebe um nº e realiza a soma de todos os números
inteiros desse número até 5. De notar que o número que o utilizador insere, tem
de ser superior a 5. Caso não seja, deve receber uma mensagem de erro a
informá-lo desse caso.

Média das temperaturas

Descrição

(os valores limites estão incluídos no
intervalo)
Classificação
Até 10 graus positivos D
Classificação
Entre 11 graus positivos e 20 graus positivos C
Classificação
Entre 21 graus positivos e 30 graus positivos B
Classificação
Entre 31 graus positivos e 35 graus positivos A
Classificação
Senão A+
Crie um programa que receba dois valores de temperaturas (valor mínimo
registado e valor máximo) e um nome de uma cidade e deverá retornar ao
utilizador qual a descrição referente à média das temperaturas, tendo em conta o
seguinte quadro:

De notar que as médias das temperaturas não podem ser abaixo dos 10 graus negativos nem
acima dos 40 graus positivos. Nestas situações o utilizador deve ser informado com uma
mensagem de erro.

O utilizador deverá receber a seguinte mensagem:
A cidade XXXX teve como classificação: YYYY em que XXXX representa o nome da
cidade que o utilizador inseriu e YYYY representa uma das descrições do quadro
apresentado.
3. Crie um programa receba um valor do utilizador e devolva um resultado consoante
das seguintes restrições:
a. Caso o valor inserido seja inferior a 4, o resultado será 0.
b. Caso o valor inserido seja 4, o resultado será 1.
c. Caso seja qualquer outro valor superior a 4 e inferior ou igual a 10,
deverá então verificar quais os quatro valores anteriores ao número
inserido e calcular a soma desses valores. (UTILIZAR CICLO).

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA
d. Caso o valor inserido seja superior a 10, deverá realizar a multiplicação
entre o 1º, 3º e 5º valor anterior ao número inserido. (UTILIZAR
CICLO).
Exemplos:
Nº inserido: 10
Resultado: 9+8+7+6=30
-------------------------------------------Nº inserido: 12
Resultado: 11*9*7=693
4. Crie um programa para a seguinte situação:
Pretende-se criar um programa que indique qual o troco a entregar a um determinado
cliente. Para isso, o utilizador insere um valor a pagar e o dinheiro entregue pelo
cliente e o programa calcula e mostra todas as notas e moedas (do euro) a entregar
como troco ao cliente. Assuma que sempre que for possível entrega o máximo de
notas/moedas da nota/moeda mais alta e só depois passa à próxima. (ver exemplo)
Insira valor a pagar: 10,50
Insira dinheiro entregue pelo cliente: 20
Troco a entregar:
Notas de 50 euros: 0
Notas de 20 euros: 0
Notas de 10 euros: 0
Notas de 5 euros: 1
Moedas de 2 euros: 2
Moedas de 1 euro: 0
Moedas de 50 cêntimos: 1
Considere apenas as notas de 50,20,10 e 5 euros e as moedas de 2€, 1€ e 0.50€.
Teste o seu programa apenas com exemplos em que para o troco são somente
necessárias as notas/moedas supracitadas.

5. Crie um menu em que:
a. Caso o utilizador insira a opção 1, utilize o programa criado no ponto 1.
deste grupo.
b. Caso o utilizador insira a opção 2, utilize o programa criado no ponto 2.
deste grupo.
c. Caso o utilizador insira a opção 3, utilize o programa criado no ponto 3.
deste grupo.
d. Caso o utilizador insira a opção 5 recebe uma mensagem a dizer:
Obrigado por utilizar o nosso programa. A sair…
e. Caso o utilizador insira qualquer outro número deverá receber uma
mensagem a dizer que a opção é inválida.
Deve colocar antes de cada programa uma mensagem a dizer: “Bem-vindo ao
programa X, em que X representa o número da alínea (1,2 ou 3) do programa criado.

6. Altere o menu criado no ponto anterior para ficar em ciclo até o utilizador escolher
a opção para sair.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Ficha de Avaliação Sumativa
EFA Tecnológico - Técnico de Informática e Sistemas
UFCD:0783 – Programação em C – C++ - Ciclos e Decisões
Duração: 150 minutos
Nome Formando: _______________________

Data: ___/___/___ Formador: João Leitão

Classificação: ________________________________________________________________

Notas Gerais:
Esta prova de natureza teórico-prática divide-se em quatro grupos e tem a duração de
150 minutos sem tolerância.
Utilize apenas caneta ou esferográfica de tinta indelével, azul ou preta.
Não é permitido o uso de corrector. Em caso de engano, deve riscar, de forma
inequívoca, aquilo que pretende que não seja classificado.
Não é permitido o uso de auxiliares.
As respostas ilegíveis ou que não possam ser identificadas são classificadas com zero
pontos.
Rubrique no canto superior direito todas as folhas da prova.
Qualquer tentativa de cópia será punida com a anulação da prova.
As cotações dos itens encontram-se descritas no quadro seguinte:
Grupo

Grupo I

Grupo II

Grupo III

Questão

Alínea

Cotação
(Pontos)

TOTAL

1.

0,5

2.

0,5

3.

0,5

4.

0,5

1.

2

2.

2

1.

2

2.

3

3.

3

4.

3

5.

2

6.

1

2

4

14

20

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Grupo I
Atenção! Se apresentar mais de uma resposta, ou resposta ambígua, a questão será
anulada.

1. Qual das seguintes instruções não é válida em linguagem c?

(A)if(a<10){
po
(B)else
(a>10){

(C)int a = 12;
(D)Nenhuma das anteriores.

2. Qual das afirmações é verdadeira?
(A) É possível definir um else sem um if.
(B) É possível definir um do sem um while.
(C)
É possível definir duas condições para um if.
kllkj

(D)Nenhuma das anteriores.

3. Qual das seguintes afirmações é verdadeira?

(A)É possível declarar a variável a utilizar num ciclo de repetição dentro do
próprio ciclo.
(B)É obrigatório que um ciclo possua, no máximo, uma condição
(C)É
kkk obrigatório que um ciclo possua, no mínimo, uma condição
(D)Nenhuma das anteriores

4. “É possível afirmar que tudo o que se realiza com um ciclo for pode ser feito com
um ciclo do while”?

(A)Verdadeiro
yhh
(B)Falso

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Grupo II
1. Indique todos os resultados enviados como output deste programa:
int a=0;
int b=1;
int i;
for (i=0;i<5;i=i+2) {
printf("\n%d",i);
a=i+1;
b=b+1;
i=i+1;
}
if (a>b) {
printf("\n%d",a);
} else {
b=b-i;
printf("\n%d",b);
}

a
B
C

Obrigatório mostrar cálculos intermédios!
para ambos os exercícios

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA
2. Indique todos os resultados enviados como output deste programa:
int x=0;
int y=1;
x=y+1;
y=x+1;
x=y+x;
y=y+1;
int res;
if (x>y || y>0) {
x=x+1;
y=y+1;
} else {
if (x>0 && y>0) {
x=x-1;
y=y-1;
} else {
x=x+2;
y=y+2;
}
}
res=0;
do {
y=y+1;
x=x-1
Infinito =&&in
res=res+(x-2);
} while (res<5);
printf("\nx: %d",x);printf("\ny: %d",y);printf("\nres: %d",res);

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

Grupo III
Todas as questões devem de ser respondidas em linguagem C.

1. Crie um programa que peça ao utilizador um número e o programa devolva o
seguinte resultado para os 5 números seguintes ao número inserido:
Exemplo:
Insira um valor:
3
4
5
6
7
8
Nota: O valor inserido pelo utilizador tem de ser positivo
2.

Crie um programa que receba uma cilindrada e um valor para Emissões CO2 e o
programa devolve o valor a pagar para o IUC. De notar que o valor a pagar é a
soma das duas taxas (cilindrada + emissões CO2)

Cálculo do IUC
Cilindrada

TaxaC

Emissões CO2

TaxaE

Até 1250

28,15 €

Até 120g/km

57,76 €

Entre 1250 e 1750

56,50 €

Mais de 120g/km até
180g/km

86,55 €

Entre 1750 e 2500

112,89 €

Mais de 180g/km até
250g/km

187,96 €

Mais de 2500

386,34 €

Mais de 250g/km

321,99 €

Nota: O utilizador não pode inserir valores negativos

3. Crie um programa para realizar duas operações consoante uma escolha inicial do
utilizador. Assuma que o utilizador só insere números pares.
Assim, o utilizador escolhe inicialmente (0 – cálculo do factorial ou 1 – cálculo da
multiplicação dos valores pares até ao valor inserido) e de seguida insere o
número sobre o qual pretende realizar os cálculos.
De notar que as únicas opções iniciais disponíveis é 0 ou 1 recebendo o utilizador
uma mensagem de erro no caso contrário.
Nota: Só pode utilizar um ciclo for apenas.

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL – I.E.F.P
CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA

4. Crie um programa que, dado dois valores (o primeiro é o numero de vezes para
repetir (X) e o segundo é o numero a repetir(Y)) o programa imprime X vezes o
número Y.
Exemplo:
5
2
22222
Exemplo:
2
5
55

5. Crie um menu em que:
a. Caso o utilizador insira a opção 5, o programa termina (mas antes envia
uma mensagem a dizer: Obrigado por utilizar o meu programa.
b. Caso o utilizador insira a opção 1, utilize o programa criado no ponto 1.
deste grupo.
c. Caso o utilizador insira a opção 2, utilize o programa criado no ponto 2.
deste grupo.
d. Caso o utilizador insira a opção 3 utilize o programa criado no ponto 3.
deste grupo.
e. Caso o utilizador insira a opção 4 utilize o programa criado no ponto 4.
deste grupo.
f. Caso o utilizador insira qualquer outro número deverá receber uma
mensagem a dizer que a opção é inválida.
Deve colocar antes de cada programa uma mensagem a dizer: “Bem-vindo ao
programa X, em que X representa o número da alínea (1,2,3 ou 4) do programa
criado.

6. Altere o menu criado no ponto anterior para só seja possível terminar o seu
programa com a opção para sair (no caso contrário e após as ações a realizar
para uma opção, volta ao menu anterior).