• Nenhum resultado encontrado

Exercício de Revisão-Cap6_7_8_9

N/A
N/A
Protected

Academic year: 2021

Share "Exercício de Revisão-Cap6_7_8_9"

Copied!
6
0
0

Texto

(1)

Ciência da Computação

Disciplina: Paradigmas de Programação Professor: Bruno Ferreira

Atividade: Exercício de Revisão Capítulo 6

1) Defina o que são tipos ordinais, enumerações e subfaixas.

2) Quais são as vantagens dos tipos enumerações, definidos pelo usuário?

3) Defina o que são tipos de matrizes estáticas, fixas dinâmicas de pilhas, dinâmicas na pilha e dinâmicas.

4) Defina e dê exemplos de "ordem de linhas maior" e "ordem de colunas maior".

5) Dê um exemplo de cálculo de endereço de posições de matrizes unidimensionais e multidimensionais atribuindo endereços de memória hipotéticos para estruturas do tipo inteiro.

7) Quais as principais operações para ponteiros? Explique como elas funcionam. 6) Quais são os problemas comuns em Ponteiros? Explique quando eles ocorrem.

7) Quais são os métodos para evitar o problema de Ponteiros soltos? Explique de forma esquemática como elas funcionam.

8) Descreva as abordagens preguiçosa e ansiosa de reivindicação de lixo na memória. 9) O que é coersão de tipo?

10) O que é tipagem forte? Quais as vantagens e desvantagens?

Capítulo 7

1) Defina precedência de operador e associatividade de operador.

2) Defina operadores pré-fixado, in-ficado e pós-fixado. Mostre uma sentença aritmética para cada exemplo.

3) Defina efeito colateral.

4)Defina conversões de estreitamento e alargamento. Essas conversões podem trazer problemas? Quais?

5) O que é um operador sobrecarregado? Quais as vantagens e desvantagens quanto a seu uso?

6) O que são atribuições de modo misto? Defina também coerção e casting.

7) Cite um erro que pode acontecer em tempo de compilação e em tempo de execução nas sentenças.

8) O que são avaliações em curto-cirtuito?

9) Um expressão aritmética do tipo A + B+ C +D é associativa segundo os fundamentos matemáticos, ou seja, não importa a ordem que as parcelas serão somadas. Você vê alguma situação em que a associatividade pode causar problemas em uma adição de inteiros em um computador? Como isso seria resolvido?

(2)

Ciência da Computação

Disciplina: Paradigmas de Programação Professor: Bruno Ferreira

Atividade: Exercício de Revisão 10) Assuma as seguintes regras de associatividade e de precedência para expressões:

Precedência Mais alta ( )

*,/,not +,-,&,mod -(uniário) =,/=,<,<=,>,>= and

Mais baixa or, xor

Associatividade Esquerda para direita

Mostre a ordem de avaliação das seguintes expressões por meio do uso de parêntese em todas as subexpressões e colocando um expoente no parêntese direito para indicar a ordem. Por exemplo, para a expressão: a + b * c + d, a ordem de avaliação seria representada como: ((a + (b * c)1)2+ d)3. a) a * b - 1 + c b) a * (b - 1) / c mod d c) (a - b) / c & (d * e / a - 3) d) -a or c = d and e e) a > b xor c or d <= 17 f) -a + b

11) Mostre a ordem de avaliação das expressões do Problema 9, assumindo que não existem regras de precedência e todos os operadores são associativos da direita para a esquerda. 12) Considere que a função fun é definida como

int fun(int *k) { *k += 4;

return 3 * (*k) -1; }

Suponha que a função seja usada em um programa, como: voide main(){

int i=10, j=10, sum1, sum2; sum1 = (i/2) + fjun (&i); sum2 = fun(&j) + (j/2); }

Quais são os valores de sum1 e sum2

a) se os operandos na expressão forem avaliados da esquerda para a direita? a) se os operandos na expressão forem avaliados da direita para a esquerda?

13) Descreva o que ocorre em cada trecho que culmina com impressões no seguinte programa em C, justificando suas afirmações.

(3)

Ciência da Computação

Disciplina: Paradigmas de Programação Professor: Bruno Ferreira

Atividade: Exercício de Revisão main () { int a, b, c; b = c = 10; a = b++ + b++; printf("%d\n", a ); printf("%d\n", b ); a = ++c + ++c; printf("%d\n", a ); printf("%d\n", c ); b = 10; a = b++ + b; printf("%d\n", a ); printf("%d\n", b ); a = 10; b = 5; if (a>b || ++b>5) printf("%d\n", b); a = 1; b = 5; if (a>b || ++b>5) printf("%d\n", b); }

14) Diga qual o valor das variáveis a e n após cada linha do seguinte trecho de código C. Justifique suas respostas.

n = 3; a = - n ++; a = - n + 1; a = - n += 1; Capitulo 8

15) Explique as três questões de projeto que envolve o seletor de dois caminhos: – Qual é a forma e o tipo da expressão que controla a seleção? – Como são especificadas as cláusulas então e senão?

– Como o significado dos seletores aninhados deve ser especificado? 16) Explique as questões de projeto que envolve o seletor de múltiplos caminhos. 17) Faça uma comparação entre os laços controlados por contadores da linguagem C e Fortran. Use as questões de projeto para fazer essa análise.

18) O que são controles pós e pre-testes no laços controlados logicamente? 19) Explique qual a diferença entre os desvios incondicionais break e continue. 20) Modifique o seguinte trecho de código para que ele realize a semântica sugerida pela sua disposição textual.

(4)

Ciência da Computação

Disciplina: Paradigmas de Programação Professor: Bruno Ferreira

Atividade: Exercício de Revisão if ( x == 7 )

if ( y == 11) z = 13; else z = 17;

21) Analise o seguinte programa em C, identificando o que ele faz. Faça uma crítica ao estilo de programação utilizado.

main() { int i, j, k; k = 1; for (i = 0; i < 10; i++) { entra: j = 2 * i + 1; printf(“i: %d, j: %d\n”, i, j); } if (k) { k = 0; i = 7; goto entra; } }

22) O que são desvios incondicionais? Qual comando é responsável por esses desvios?

23) O comando goto é empregado para realizar desvios incondicionais no fluxo de controle de programas. Com o advento das técnicas de programação estruturada, este comando foi muito criticado e, por muitas vezes, se sugeriu que linguagens de programação não deveriam incluí-lo entre seus comandos. C é uma linguagem que adota os princípios da programação

estruturada. No entanto, C manteve o goto como um comando da linguagem. Qual a razão dessa decisão? Ele é necessário em alguma ocasião?

Capítulo 9

24) O que significa para um subprograma estar ativo?

25) O que é um perfil de parâmetro? O que é um protocolo de subprograma? 26) O que são parâmetros formais? O que são parâmetro reais?

27) Quais são os três modos semânticos de passagens de parâmetros?

28) Quais são os modos, os modelos conceituais de transferência, as vantagens e as

desvantagens dos seguintes métodos de passagem de parâmetros: por valor, por resultado, por valor-resultado e por referência?

29) Considere o programa escrito na sintaxe de C: void swap(int a, int b){

(5)

Ciência da Computação

Disciplina: Paradigmas de Programação Professor: Bruno Ferreira

Atividade: Exercício de Revisão temp = a;

a = b b = temp; }

void main( ){

int value = 2, list[5] = {1, 3, 5, 7, 9}; swap(value, list[0]);

swap(list[0], list[1]); swap(value, list[value]); }

Para cada um dos métodos de passagem de parâmetros, quais são todos os valores das variáveis value e list após cada uma das três chamadas a swap?

a) Passadas por valor b)Passadas por referência c) Passadas por valor-entrada

30) Considere o programa escrito em sintaxe C void fun (int first, int second){

first += first; second += second; } void main( ){ int list[2] = {1, 3}; fun(list[0], list[1]); }

Para cada um dos métodos de passagem de parâmetros, quais são todos os valores da matriz list após a execução?

a) Passadas por valor b)Passadas por referência c) Passadas por valor-entrada

31) Considerando que sub2 é chamado em sub4 (sub2 é passado como parâmetro). Informe o ambiente de referenciamento e o que imprime sub2. Faça isso para as seguintes vinculações: a) Rasa b) Profunda c) Ad hoc function sub1( ) { var x; function sub2( ) {

alert(x); //função de impressão };

(6)

Ciência da Computação

Disciplina: Paradigmas de Programação Professor: Bruno Ferreira

Atividade: Exercício de Revisão var x; x = 3; sub4(sub2); }; function sub4(subx) { var x; x = 4; subx(); }; x = 1; sub3(); }

Referências

Documentos relacionados

The present study evaluated the potential effects on nutrient intake, when non- complying food products were replaced by Choices-compliant ones, in typical Daily Menus, based on

29 Table 3 – Ability of the Berg Balance Scale (BBS), Balance Evaluation Systems Test (BESTest), Mini-BESTest and Brief-BESTest 586. to identify fall

Tendo em conta que os valores do teor de água que são encontrados no bacalhau que é comercializado se encontra num intervalo entre 40% e 58%, recorrendo aos ensaios anteriores e

Em estudos mais aprofundados, tem-se a análise dinâmica não linear geométrica de estruturas laminadas modeladas com elementos tridimensionais de barra considerando o efeito

13 Assim, a primeira fase no momento da dispensa de um MSRM é a validação da receita, por isso, independentemente do modo de disponibilização da prescrição, a receita

A médio/longo prazo será notória a diminuição do número de avarias, devido ao natural ajustamento do plano de manutenções preventivas implementado, a melhoria

Apesar do seu tempo de vida extremamente reduzido, de apenas 2 anos, a consola Microvision trouxe em 1979 alguns dos elementos necessários para o desenvolvimento

Both the distribution of toxin concentrations and toxin quota were defined by epilimnetic temperature (T_Epi), surface temperature (T_Surf), buoyancy frequency (BuoyFreq) and