Departamento de Engenharia Electrotécnica e de Computadores Instituto Superior Técnico - Universidade Técnica de Lisboa Programação- MEAer 1º Semestre 2011/2012 Programação 2011/2012 - 1º Semestre Aula de Laboratório nº 3 Objectivos: 1- Análise e desenvolvimento de programas simples que fazem uso de funções printf e scanf, expressões numéricas, instruções de selecção (if) e de repetição (while). I. Análise e desenvovimento de programas 1) Efectue a análise do programa seguinte e depois confirme o resultado no computador. #include <stdio.h> int main (void) { int xi = 11; float yf = 12.12; char zc = '*'; char str[10] = "operacao"; printf("Teste do printf:\n"); printf("%s %c: %d*%f=%.2f\n", str, zc, xi, yf, xi*yf); return 0; } 2) Desenvolva um programa que lê um número real e determina se é positivo ou se é negativo. 3) Desenvolva um programa que lê um número inteiro e determina se é par ou se é ímpar. 4) Pretende-se calcular o volume e a área da superfície de um cilíndro. Análise o código fonte seguinte, complete-o e teste o funcionamento do programa. /****************************************************************************** * Este programa deve calcular o volume de um cilindro de altura * 'altura' e raio 'raio'. * O programa ******************************************************************************/ #include <stdio.h> /* Utilizacao das funcoes printf() e scanf() */ #include <________> /* E’ necessa’rio utilizar a funcao - pow( ) */ int main(void) { float PI = 3.1415; int scan_res; /* Para guradar o valor de retorno da função scanf */ float altura, raio; /* altura do cilindro e raio da sua base */ float area, volume; /* área da base e volume do cilindro*/ _Bool valores_invalidos; /* verificação de valores negativos, tipo lógico*/ printf("Este programa calcula o volume de um cilindro\n"); printf("Introduza a altura do cilindro e o raio da base:\n"); /* le os dois valores, altura e o raio */ scan_res = scanf(________________________________); /* Mostra os valores lidos */ printf(________________________________); if (scan_res != ________________________________) { printf("Erro na introdução dos valores!\n"); printf("Fim do programa\n"); return -1; } /* valores_invalidos deve ficar com o valor lógico verdadeiro se a altura for menor que zero ou se o raio for menor que zero 1/2 Departamento de Engenharia Electrotécnica e de Computadores Instituto Superior Técnico - Universidade Técnica de Lisboa */ valores_invalidos = Programação- MEAer 1º Semestre 2011/2012 ________________________________; if (valores_invalidos) { printf("As dimensões do cilindro têm de ser positivas\n"); printf("Fim do programa\n"); return -1; } area = ________________________________; volume = ________________________________; printf______________________________________); printf________________________________); return 0; } 5) Determine o output do programa seguinte (o que é escrito no ecrã). Teste o funcionamento do programa: #include <stdio.h> int main(void) { char ch = '*'; int Nc = 10; int conta = 0; while (conta < Nc) { printf("%c", ch); conta = conta + 1; } printf("\n"); return 0; } O que acontece se a instrução conta=conta + 1; for eliminada do programa? 6) Considere o cálculo do valor factorial de n, que é definido como n! = n*(n-1)*…*3*2*1. Desenvolva um programa que lê o valor de n e calcula o n! utilizando a instrução de ciclo while. 7) Desenvolva um programa para calcular b f (i, a, b) i 2 i a Em que a e b são números inteiros e a <=b. 8) Desenvolva um programa que calcule a divisão inteira e o resto da divisão inteira usando a instrução de ciclo while e os operadores de comparação , + e -. 9) Desenvolva um programa que calcule o valor da função seguinte utilizando o processo iterativo de multilicações sucessivas, xi = x(i-1) * x. Utilize a instrução de ciclo while e os operadores de comparação , + e -. g ( x, n) x n Nota: Comece por assumir n é um número inteiro positivo. Depois considere a situação em que n=0 e n é um número inteiro negativo. 10) Desenvolva um programa para calcular h( x, n) 1 x1 x 2 ... x n No cálculo só pode utilizar uma instrução while. Deve guardar os resultados parciais em duas variáveis. Uma variável é deve ser utilizada para guardar h(x,i) = h(x,i-1)+xi e a outra para guardar xi = x(i-1) * x. 2/2