A maior rede de estudos do Brasil

Grátis
120 pág.
ApostilaANSI-C

Pré-visualização | Página 16 de 27

de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
71 
se queira, por algum motivo, sair destes loops e ifs todos de uma vez, ele pode 
ser útil. Nesse caso um goto resolve o problema mais elegantemente que vários 
breaks, sem contar que os breaks exigiriam muito mais testes. Ou seja, neste 
caso o goto é mais elegante e mais rápido. 
O exemplo anterior (Programa 28) pode ser reescrito usando-se o goto: 
#include <stdio.h> 
#include <stdlib.h> 
 
/**************************************************************************** 
Programa 29 
Este programa solicita ao usuário que introduza uma constante 
Inteira através do teclado. Se a constante não estiver no intervalo 
pré determinado, o programa usa o comando goto para retornar 
ao inicio do loop do-while,repetindo a solicitação, Caso contrário 
o programa segue normalmente. 
 
******************************************************************************/ 
int main () 
{ 
 int mes; 
 char temp[10]; 
 
 do 
 { 
 SOLICITA: 
 printf("\n Digite o numero correspondente ao mês do seu\n”); 
 printf(“ aniversario (1 a 12) e descubra o seu horóscopo\n "); 
 printf(“\tOu digite qualquer outra tecla para sair: "); 
 
 scanf("%s",& temp); 
 mes=atoi(temp); 
 if ((mes < 0) || (mes >12)) 
 goto SOLICITA; /* Opcao invalida: o programa volta ao rotulo 
 SOLICITA */ 
 switch (mes) 
 { 
 case 1: 
 printf("\n\t – Capricórnio (22/12 a 19/01) \n"); 
 break; 
 case 2: 
 printf("\n\t – Aquários (20/01 a 18/02) \n"); 
 break; 
 case 3: 
 printf("\n\t – Peixes (19/02 a 20/03) \n"); 
 break; 
 case 4: 
 printf("\n\t – Áries (21/03 a 19/04) \n"); 
 break; 
 case 5: 
 printf("\n\t – Touro (20/04 a 20/05) \n"); 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
72 
 break; 
 case 6: 
 printf("\n\t – Gêmeos (21/05 a 21/06) \n"); 
 break; 
 case 7: 
 printf("\n\t – Câncer (22/06 a 22/07) \n"); 
 break; 
 case 8: 
 printf("\n\t – Leão (23/07 a 22/08) \n"); 
 break; 
 case 9: 
 printf("\n\t – Vírgem (23/08 a 22/09) \n"); 
 break; 
 case 10: 
 printf("\n\t – Libra (23/09 a 22/10) \n"); 
 break; 
 case 11: 
 printf("\n\t – Escorpião (23/10 a 21/11) \n"); 
 break; 
 case 12: 
 printf("\n\t – Sagitário (22/11 a 21/12) \n"); 
 break; 
 } 
 } while (mes != 0); 
 printf("\n\n"); 
 system("PAUSE"); 
 return(0); 
} 
 
 
ATIVIDADES 
 
8.1 Elabore um programa em C que solicite ao usuário três números inteiros, 
correspondentes a dia , mês e ano, até que os valores obtidos estejam na faixa 
correta (dias entre 1 e 31, mês entre 1 e 12 e ano entre 1900 e 2100). Verifique se 
o mês e o dia estão coerentes (incluindo verificação de anos bissextos). O 
programa deve imprimir o seguinte relatório final: 
A data __ __ __ é válida. 
 
8.2 Melhore o Programa 29, pedindo ao usuário que introduza o dia e o mês de 
seu aniversário através do teclado e alterando a estrutura condicional switch de 
tal maneira que em cada case seja testado o dia e determinado o horóscopo do 
usuário. O dia e o mês introduzidos devem ser verificados e caso não sejam 
coerentes o programa NÃO deve seguir adiante. Para executar essa verificação 
transforme o programa do irem 8.1 em uma função que retorna “0” se a data existir 
ou “1” se NÃO existir.1 
 
 
1
 O exercício 8.2 foi sugerido pelo aluno Pedro Henrique de Oliveira Santos do ELC-2A em 
fevereiro de 2008. 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
73 
8.3 Elabore um programa em C de uma função que receba dois números como 
parâmetros e verifica se o primeiro número é divisível pelo segundo. Os números 
são introduzidos através do teclado pelo usuário. Se o dividendo for zero envie 
uma mensagem de erro ao usuário e permita que ele insira novos números. 
 
8.4 Elabore um programa em C de uma função que calcule o MDC entre dois 
números passados como parâmetros. O usuário deve introduzir através do teclado 
os dois números, e o programa deve imprimir na tela o seguinte relatório: 
 
O MDC entre os números ___ e ___ é ____. 
 
Dica:Dica:Dica:Dica: 
� Suponha que você queira calcular o MDC entre 232 e 24. 
 
Dividendo = 232 24 16 
Divisor = 24 16 8 � MDC 
Quociente = 9 1 2 
Resto = 16 8 0 
 
� Considere a possibilidade de um dos operandos ou os dois serem zero. 
 
8.5 Elabore um programa em C de uma função que receba como parâmetros três 
números que correspondem aos valores de dia, mês e ano de uma data e retorne 
o número de dias já transcorridos no ano corrente. 
 
Dica:Dica:Dica:Dica: 
� Em um ano bissexto o mês de fevereiro possui 29 dias. 
� Faça uma função que determine se o ano é ou não bissexto. 
� Faça uma função que verifique se os dados introduzidos pelo usuário 
estão na faixa correta, caso não estejam, solicita ao usuário que digite 
valores corretos. 
� Use o comando switch sem break para determinar os dias transcorridos. 
 
8.6 Elabore um programa em C de uma função que receba como parâmetro dois 
número inteiro (N e B) e retorne o número N na base B. Os números devem ser 
introduzidos através do teclado pelo usuário e o programa deve verificar a 
coerência dos dados e não deve prosseguir enquanto não estiverem corretos. 
 
8.7 Verifique como foi implementada a leitura de dados no Programa 28 e 
Programa 29 e explique as diferenças. E também explique função atoi(). 
 
 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
74 
AULA PRÁTICA 09 
 
OBJETIVO: 
 
� Estudar o acesso aos dispositivos de entrada e saída (I/O). 
 
 
INTRODUÇÃO 
 
Através da programação em C já realizamos operações com alguns periféricos. 
Conseguimos fazer uma operação de leitura no teclado usando a função scanf e 
de escrita no monitor de vídeo através da função printf. Até agora não precisamos 
entender maiores detalhes sobre o hardware, pois estas funções pertencem à 
biblioteca padrão do C. Imagine que você queira acionar um dispositivo que não 
seja um dos periféricos presentes no seu computador (teclado, monitor de vídeo 
etc...), mas seja por exemplo: um led, ou uma daquelas chaves de duas posições 
usadas em Sistemas Digitais, um display de cristal líquido etc. 
 
Inicialmente, poderíamos pensar numa interface comunicação, uma vez que os 
dispositivos a serem acionados são todos externos. As interfaces poderiam ser: 
USB, Interface Serial (RS-232) ou Interface Paralela. Mas considerando a maior 
facilidade de uso e de adequação à nossa aplicação, escolhemos a interface 
paralela. Quanto às outras, vocês terão oportunidades de estudá-las em outra 
ocasião. 
 
Além disso, è importante mencionar que para acessar dispositivos de I/O é 
necessário saber: 
 
È importante mencionar que para acessar dispositivos de I/O é necessário saber: 
� as funções C disponíveis no compilar em uso, caso não existam funções 
adequadas é necessário criá-las; 
� os endereços de acesso das interfaces