• Nenhum resultado encontrado

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS"

Copied!
5
0
0

Texto

(1)

U

NIVERSIDADE

L

USÓFONA DE

H

UMANIDADES E

T

ECNOLOGIAS

C

URSO DE

E

NGENHARIA

E

LECTROTÉCNICA

1º Semestre 2003/2004

Introdução à Programação

21/2/2004

Correcção

1. Qual o objectivo dos comentários em C++ e o que é que o compilador faz com eles?

R: Os comentários têm como destinatários leitores humanos e destinam-se a

facilitar as tarefas de manutenção dos programas. Os comentários são

ignorados pelo compilador.

2. Dadas as seguintes declarações:

int i = 1, j = 2, k = 3;

double x = 3.5, y = 8.25;

Diga qual o valor de cada uma das expressões que se seguem:

2.1.

i + 4 * j - 2

2.2.

x + y / j

2.3.

k / 2 * j

2.4.

k / j + i

R: 7

7.675

2

2

Multiplicações e divisões realizadas primeiro. Operações com operandos

inteiros têm resultado inteiro. Operações com pelo menos um operando em

virgula flutuante têm resultado em virgula flutuante.

3. Identifique e corrija os erros nos seguintes fragmentos de programa. Assuma que

todas as variáveis foram previamente declaradas.

3.1.

if (10 < valor < 20) cout << “OK”; else

cout << “ERRADO”;

R:

if (10 < valor && valor < 20)

cout << “OK”; else

cout << “ERRADO”;

3.2.

if (valor >= 0);

cout << “Positivo ou Nulo”; else

cout << “Negativo”;

R:

if (valor >= 0)

cout << “Positivo ou Nulo”;

else

cout << “Negativo”;

3.3.

void func(int m, int n) { return (3.0 * n + m); }

R:

double func(int m, int n) {

return (3.0 * n + m); }

3.4.

sum = 0; i = 1; while (i < n) sum = sum + i; i++;

cout << “A soma e’ ” << sum << endl;

(2)

R:

sum = 0; i = 1; while (i < n) { sum = sum + i; i++; }

cout << “A soma e’ ” << sum << endl;

4. Escreva um conjunto de instruções if-else que seja equivalente a:

switch (letra) { case 'p':

cout << "Escolheu papel" << endl; break;

case 't': case ‘T’:

cout << "Escolheu tesoura" << endl; break;

default:

cout << "Não conheço essa" << endl; break;

}

R:

if (letra == ‘p’) {

cout << "Escolheu papel" << endl; }

else if (letra == ‘t’ || letra == ‘T’) { cout << "Escolheu tesoura" << endl; }

else {

cout << "Não conheço essa" << endl; }

5. Considere os dois fragmentos de programa que de seguida se ilustram. Assuma que x

y

e z são variáveis inteiras:

// fragmento 1 | // fragmento 2

if (x > 0) | if (x > 0) z = z + 1; | z = z + 1; else if (y > 0) | if (y > 0) z = 8; | z = 8;

5.1. Desenhe um diagrama de fluxo para cada um dos fragmentos.

R:

// fragmento 1 | // fragmento 2

5.2. Escolha valores de x e y de modo que os fragmentos sejam equivalentes?

R: Por exemplo x = 0, y = 1

5.3. Escolha valores de x e y de modo que os fragmentos não sejam equivalentes?

R: Por exemplo x = 1, y = 1

X > 0 N S S X > 0 N z = z + 1 z = 8 z = z + 1 N S y > 0 z = 8

(3)

6. Considere os o seguinte ciclo de repetição:

for (i = 0; i < 10; i++) {

if ((i % 2) == 0) {

cout << i << endl;

}

}

6.1. Identifique neste ciclo for as seguintes secções:

Inicialização, Teste, Incremento, Corpo do ciclo.

R:

Inicialização:

i = 0;

Teste:

i < 10

Incremento:

i++;

Corpo:

if ((i % 2) == 0) {

cout << i << endl;

}

6.2. Qual o resultado no ecrã da execução deste ciclo?

R:

0

2

4

6

8

6.3. Rescreva o ciclo utilizando um while.

R:

i = 0;

while (i < 10) {

if ((i % 2) == 0) {

cout << i << endl;

}

i++

}

7. Diga qual o resultado produzido no ecrã pelos seguintes programas. Represente

espaços com ∪ e mudanças de linha com ↵.

7.1.

#include <iostream> using namespace std; void main() { int items = 6; int caixasCheias = 0; int j;

while (items > 0 && caixasCheias <= 3) { for (j = 0; j < 2; j++) {

items --; }

caixasCheias++;

cout << caixasCheias << " caixa"; if (caixasCheias > 1) { cout << "s"; } cout << " cheia"; if (caixasCheias > 1) { cout << "s, "; } else { cout << ", "; }

cout << items << " items restantes" << endl;

} }

R:

1 caixa cheia, 4 items restantes

2 caixas cheias, 2 items restantes

3 caixas cheias, 0 items restantes

(4)

7.2.

#include <iostream> using namespace std;

void misterio(int m, int n) { int i, j; for (i = 1; i <= m; i++) { for (j = 1; j <= n; j++) { if (i == 1 || i == m || j == 1 || j == n) { cout << "*"; } else { cout << " "; } } cout << endl; } } int main(void) { misterio(6, 4); }

R:

**** * * * * * * * * ****

7.3.

#include <iostream> using namespace std; void main() { int i, j; for (i = 1; i <= 3; i++) { for (j = 1; j <= 5 - i; j++) { cout << "O"; } cout << endl; } }

R:

**** *** **

7.4.

#include <iostream> using namespace std; void main() { int num = 3; while (num > 1) { cout << num << endl; if (num % 2 == 0) { num = num / 2; } else { num = 3 * num + 1; } } }

(5)

R:

3

10

5

16

8

4

2

8. Escreva um fragmento de código em C++ que declare, inicialize e preencha um

array de inteiros. Depois de o seu código executar, o array deverá ter o seguinte

aspecto:

0 2 4 6 8 10

12

14

16

18

R:

int ArrayInt[] = {0, 2, 4, 6, 8, 10, 12, 14, 16, 18};

9. Escreva uma função chamada

Inverte()

que aceita dois parâmetros – um array

de caracteres e o número de caracteres existente nesse array – e inverte os

caracteres existentes no array (o primeiro passa a último, o segundo a penúltimo,

etc.).

R:

void Inverte(int a[], int n)

{

int tmp;

for (int i = 0; i < n/2; i++) {

tmp = a[i];

a[i] = a[n-1-i];

a[n-1-i] = tmp;

}

}

10. O sen x pode ser calculado utilizando a expansão da série de Taylor:

⋅⋅

+

+

=

!

7

!

5

!

3

7 5 3

x

x

x

x

x

sen

Escreva a função double MeuSeno(double x) que calcula o sen x, utilizando um

ciclo de repetição for. A sua função apenas deverá calcular os primeiros 10 termos,

isto é, até ao termo x

19

/19!.

R:

double MeuSeno(double x) {

int i;

double term, sinx; sinx = term = x; for (i = 1; i < 10; i++) { term *= -1*x*x / ((2*i)*(2*i+1)); sinx += term; } return sinx; }

Referências

Documentos relacionados

1 Instituto de Física, Universidade Federal de Alagoas 57072-900 Maceió-AL, Brazil Caminhadas quânticas (CQs) apresentam-se como uma ferramenta avançada para a construção de

Os saberes elementares matemáticos que se destacaram nas provas são: subtração de inteiros, multiplicação de frações mistas, divisão de números com

do sistema e-Pinch II, obtidos pela bobina de Rogowski.. Posteriormente essa figura usada para análise da difusão de densidade campomagnético do item IV.B.. em

* Mestrando em História Social pela UFC – vicentemoreiramaia@hotmail.com.. entre escritores, jornalistas, torcedores, times e jogadores, naquilo que consiste o processo de construção

A construção do Plano de Capacitação iniciou com a identificação das necessidades de capacitação por parte dos gestores da DTIC a partir de discussão interna com os

Foram nossos interesses específicos: identificar a história do lugar para que possamos situar temporalmente e espacialmente os nossos sujeitos, procurando

momento, apenas Lisboa, mas com fortes probabilidades de ser expandido para outro(s) locais no país), aquilo que tem sido também testado com sucesso noutros países: a integração

No que se refere a primeira modelagem, foi construído um modelo para estimar de que maneira a inovação é percebida a partir dos aspectos inovadores dos serviços (administração,