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
Download

Introdução à Programação - Área Científica de Computadores