Instituto Politécnico de Setúbal Escola Superior de Tecnologia Departamento de Sistemas e Informática Laboratório 4 Correcção de erros sintácticos e tipos de dados primitivos Disciplina de Introdução à Programação Ano Lectivo 2006/2007
Série 4 Correcção de erros sintácticos e tipos de dados primitivos Objectivos da Série: Com esta série de problemas pretende-se que o aluno: 1. Conheça a sintaxe da linguagem C; 2. Aprenda a escolher o tipo de dados elementar mais apropriado à representação de quantidades inteiras; 3. Domine a utilização de tipos primitivos de dados. Exercício 1 Indique os erros de compilação que seriam detectados nos seguintes programas: 1.1 Main() 1.2 main 1.3 print ( Olá mundo! ); 1.4 printf( Olá )( mundo! );
1.5 1.6 Programação com C 1.7 printf(olá mundo!); 1.8 ; printf( Olá mundo! ) 1.9 include <stdio.h> 1.10 printf('olá mundo!');
Exercício 2 Das seguintes declarações de variáveis, algumas estão correctas e outras não. Indique as que não estão correctas, e porquê, e que valores possuem as variáveis nas declarações correctas. a) y int; b) int ; c) integer x; d) inta, b; e) float f, g, c; f) char ch1=ch2='a'; g) char ch1 = 'A', ch2 = 'A'; h) double a, b, c = 0.14; Exercício 3 Indique na seguinte lista, quais os identificadores correctos e incorrectos de variáveis: a) Valor b) &xvar c) dez% d) a+b e) _Var f) MENOS g) 10a h) a10 i) main j) F1 k) unsigned Exercício 4 O programa seguinte utiliza o tipo primitivo short: #include <sdtio.h> short valor = 32; printf( Um short: %d, valor); 4.1 Crie um ficheiro denominado short.c, compile-o e corra-o. Verifique a sua saída. 4.2 Edite o programa e altere o valor 32 para um outro valor inteiro relativamente baixo, digamos 356. Compile e corra o programa.
4.3 Altere o valor para 90000 e tente compilar o programa. O que é que acontece? Porquê? Edite o programa e altere o tipo de dados short para int. Compile e corra o programa. Qual a diferença entre esta e a alínea anterior? Exercício 5 O programa seguinte utiliza o tipo primitivo double: #include <sdtio.h> double pi = 3.14157; printf( Valor de PI: %d, pi); 5.1 Compile e corra o programa. A saída do programa é a esperada? Porquê? Altere o programa de modo a que a saída seja a esperada. Agora mostre-o na notação científica. 5.2 Altere o valor da variável pi para um valor que seja demasiado grande para uma variável do tipo double. Vai precisar de utilizar notação científica para o conseguir. Exercício 6 O programa seguinte usa o tipo de dados primitivo char: #include <sdtio.h> char ch = 'A'; printf( Um char: %c, ch); Experimente o seguinte: a) Troque o 'A' por 'Z' compile e corra o programa. b) Troque o 'A' por 'AA' tente compilar o programa. c) Troque o 'A' por ' ' compile e corra o programa. Note que existe um espaço entre as duas plicas. d) Troque o 'A' por '' tente compilar o programa. Note que não existe nada entre as duas plicas. e) Troque o 'A' por "A" tente compilar o programa. Exercício 7 Examine seguinte programa: long horastrabalho = 40; double quantiahora = 10.0, imposto = 0.10; printf("horas de Trabalho: %d\n", horastrabalho ); printf("montante Pago : %f\n", (horastrabalho * quantiahora) ); printf("montante de Imposto : %f\n", (horastrabalho * quantiahora * imposto) );
7.1 Modifique-o de modo a que cada variável seja declarada individualmente e não seja inicializada aquando da declaração. Em seguida escreva três instruções de atribuição para associar o valor a cada uma das variáveis. Compile, corra o programa e examine a sua saída. 7.2 Agora vamos tentar quebrar o programa. a) Remova uma das declarações de variáveis. Consegue compilar o programa? b) Agora remova uma das instruções de atribuição que inicializam uma das variáveis. Quando é que o problema é detectado? Exercício 8 Escreva um programa em C que solicite ao utilizador dois inteiros e apresente o resultado da realização das operações aritméticas tradicionais (i.e. soma, substracção, multiplicação e divisão). Como exemplo, se os inteiros introduzidos forem 10 e 5, a saída do programa deverá ser a seguinte: Números lidos: 10 5 10 + 5 = 15 10 5 = 5 10 * 5 = 50 10 / 5 = 2 Experimente agora introduzir os números 3 e 5. O resultado da divisão está correcto? Se reparar a divisão efectuada foi a divisão inteira. Altere o programa de modo a que o resultado seja o esperado (3 / 5 = 0.6). Exercício 9 Escreva um programa que calcule o perímetro e a área de uma circunferência. O programa deverá pedir ao utilizador o raio e calcular os valores pedidos. Exercício 10 Durante os últimos exercícios utilizamos vários tipos de dados primitivos. Cada um destes tipos consegue guardar uma gama de valores diferentes. Escreva um programa num ficheiro tipos.c que escreva o espaço, em Bytes, ocupado por cada um dos seguintes tipos primitivos: short, int, long, float e double. (Dica: A atribuição int tamanhointeiro = sizeof(int), coloca na variável o espaço ocupado por um inteiro).