Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Ciência de Computação DCC003 -- Algoritmos e Estruturas de Dados 1 -- 2013/1 -- Turma F Prática 1 -- Ambiente de programação, compilação e execução de programas ############################################################################### Nesta atividade prática iremos executar nossos primeiros programas. Nosso objetivo é exercitar a compilação e execução de programas. Nos nossos programas, iremos exercitar operações aritméticas com diferentes tipos de variáveis e entrada e saída de dados. Exercício 1 -- Alô mundo! ############################################################################### Nosso primeiro programa será o programa mostrado abaixo. Este programa apenas imprime na tela a mensagem "alow mundo". ----- Exemplo ----- #include int main(void) { printf("alow mundo\n"); /* o '\n' equivale a uma quebra de linha */ return 0; } ------------------ Escreva (copie) esse programa em um arquivo chamado "alow.c" usando um editor de texto como o Textpad. Depois abra o prompt de comandos do Window (cmd.exe) e compile seu programa com o seguinte comando: ----- Exemplo ----- C:\Users\Cunha\Desktop> gcc -Wall -o alow.exe alow.c ------------------- O termo "gcc" é o nome do programa que vamos executar (GCC é abreviação de "GNU C Compiler"). O termo "-Wall" é uma opção que liga todos os avisos de erros e problemas no código do programa. O termo "-o alow.exe" fala que o executável compilado deve chamar-se "alow.exe". Por fim, o termo "alow.c" é o arquivo que vamos compilar. Se seu programa não tiver nenhum erro de compilação, o compilador irá gerar o arquivo alow.exe que você pode executar. ----- Exemplo ----- C:\Users\Cunha\Desktop>alow.exe alow mundo C:\Users\Cunha\Desktop> ------------------- Experimente com o programa alow.c, por exemplo, imprimindo mais ou menos linhas em branco adicionando ou removendo '\n' no texto do printf(). Tente também mudar a mensagem impressa na tela. Exercício 2 -- Calculando com C ############################################################################### Neste exercício iremos criar umas variáveis do tipo ponto flutuante, fazer operações aritméticas, e imprimir os resultados. ----- Exemplo ----- #include int main(void) { double PI = 3.1415; double r = 15; double area = PI*r*r; printf("uma pizza grande tem %lf cm2\n", area); double fatias = 8; printf("cada fatia tem aproximadamente %lf cm2\n", area/fatias); double um_terco = area / 3; double dois_tercos = area - um_terco; if(dois_tercos != 2*um_terco) { printf("dois_tercos != 2*um_terco\n"); printf("diferença = %g\n", dois_tercos - (2*um_terco)); } return 0; } ------------------- Compile e execute o programa acima. Veja que ele imprime que dois_tercos é diferente de 2*um_terco. Isto acontece devido a erros de arredondamento nas variáveis do tipo double. A maneira segura de testar se duas variáveis do tipo double têm o mesmo valor é testar se a diferença absoluta entre elas é menor que uma constante pequena. Modifique o programa acima usando esse teste seguro para comparar dois_tercos e 2*um_terco. Salve seu programa como "pizza.c". Entrega: Você deve entregar o código do seu programa (o arquivo "pizza.c") via Moodle. Coloque um comentário na primeira linha do arquivo contendo os nomes dos alunos da dupla. (Um comentário em C é qualquer texto entre /* e */.) Exercício 3 -- Lendo do teclado e calculando a área de um retângulo ############################################################################### Para lermos do teclado, usaremos a função scanf(). A função scanf() recebe como parâmetros um texto especificando os valores a serem lidos, e as variáveis onde os valores serão armazenados. ----- Exemplo ----- #include int main(void) { int inteiro = 0; double flutuante = 0.0; printf("digite um numero inteiro: "); scanf("%d", &inteiro); printf("agora digite um numero ponto flutuante: "); scanf("%lf", &flutuante); printf("voce digitou %d e %lf\n", inteiro, flutuante); return 0; } ------------------- Entrega: Faça um programa que lê o tamanho dos lados de um retângulo (dois números de ponto flutuante) e imprime a área do retângulo. Salve seu programa num arquivo chamado "retangulo.c" e entregue no Moodle. Coloque um comentário na primeira linha do arquivo contendo os nomes dos alunos da dupla. (Um comentário em C é qualquer texto entre /* e */.) Exercício 4 -- Arredondamento de números ############################################################################### Faça um programa para ler um ponto flutuante do teclado e arredondar esse número para o inteiro mais próximo. Seu programa pode usar qualquer construção da linguagem C (como if/else e conversão entre tipos), mas não deve usar nenhuma função que não seja scanf() e printf(). Entrega: Salve seu programa num arquivo "arredonda.c" e entregue no Moodle. Coloque um comentário na primeira linha do arquivo contendo os nomes dos alunos da dupla. (Um comentário em C é qualquer texto entre /* e */.) Exercício 5 -- Produtório com do/while ############################################################################### Modificar o exemplo do produtório (slide 14, aulas 5-6) para utilizar do/while em vez de while. Discuta se o programa original com while e a modificação com do/while dão o mesmo resultado quando o primeiro número lido é zero. Entrega: Salve seu programa num arquivo "produtorio.c" e entregue no Moodle. Coloque um comentário no início do arquivo com a discussão do caso quando o primeiro número lido é zero. Coloque um comentário na primeira linha do arquivo contendo os nomes dos alunos da dupla. (Um comentário em C é qualquer texto entre /* e */.) Exercício 6 -- Potências de dois ############################################################################### Faça um programa para verificar se um número é uma potência de dois. Se for, imprima qual a potência de dois que ele é. (Seja X uma potência de dois e Y o logaritmo de X na base 2. Y é inteiro porque X é uma potência de dois. Seu programa deve imprimir Y.) Entrega: Salve seu programa num arquivo "potencia2.c" e entregue no Moodle. Coloque um comentário na primeira linha do arquivo contendo os nomes dos alunos da dupla. (Um comentário em C é qualquer texto entre /* e */.)