• 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

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,

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

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

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

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

* Mestrando em História Social pela UFC – [email protected].. entre escritores, jornalistas, torcedores, times e jogadores, naquilo que consiste o processo de construção