As funções gets( ) e puts( ) permitem a leitura e escrita de strings de caracteres no console. O protótipo das funções é encontrado em stdio.h .
A função gets( ) lê uma string de caracteres através do dispositivo padrão de entrada (teclado). Para corrigirmos erro de digitação usamos a tecla Back Space antes de pressionar <enter>. Após a leitura, coloca a string no endereço apontado por seu argumento ponteiro de caracteres. Espaços e tabulações são aceitos por gets( ). Exemplo de programa: /* Programa Exemplo_1 */ # include <stdio.h> # include <conio.h> main( ) { char nome [50]; int idade;
printf (“Qual seu nome ?\n”); gets (nome);
printf (“\nQual sua idade?\n”); scanf (“%d”,&idade);
printf(“\nOlá %s, em seu último aniversário você completou %d dias de vida !”,nome,idade*365);
getch( ); }
No exemplo, o programa utiliza a diretiva stdio.h pois contém os protótipos para as funções printf( ) , gets( ) e scanf( ). Os protótipos para as funções clrscr( ) e getch( ) estão em conio.h .
84 Através de printf( ) pergunta-se o nome ao Usuário que será digitado e associado à variável chamada “nome” do tipo char que possibilita um número máximo de 50 caracteres, e também a visualização no vídeo. Em seguida, através de scanf( ) é inserido um novo dado à uma variável do tipo int chamada idade. Se por exemplo a variável nome for: João da Cruz e a variável idade for 21, teremos na tela impresso o seguinte resultado:
Olá João da Cruz, em seu último aniversário você completou 7665 dias de vida!
A função puts( ) é utilizada quando deseja-se um código altamente otimizado, de fácil uso ! Esta função é o complemento de gets( ) e imprime na tela uma única string por vez seguido por uma nova linha. Reconhece os códigos de escape de printf( ) assim como o
null (\0) como fim de string.
Uma chamada a puts( ) requer menos tempo do que a mesma chamada a printf( ) pelo fato de puts( ) escrever apenas strings caractere. Exemplo de programa: /* Programa Exemplo_2 */ #include <stdio.h> #include <conio.h> main( ) { char nome [50]; clrscr( );
puts (“Qual o seu nome ?”); gets (nome);
puts;
puts (“Olá”); puts (nome);
puts (“tudo bem ?”); getch( );
}
O exemplo de programa, solicitará através de um texto o nome do usuário, que por sua vez será lido por gets( ). Se, por exemplo, o nome digitado for RONALDO o programa imprime:
Qual o seu nome ? RONALDO
85
Olá
RONALDO tudo bem ?
Comparando printf( ) com puts( ) :
Exemplo: printf(“%s\n”,nome);
... é o mesmo que: puts(nome);
Obs: A função puts( ) imprime somente uma string. Para a impressão
de um número maior de strings é necessário o uso de printf( ).
Podemos utilizar o operador de endereço em puts( ). Se acrescentarmos ao programa Exemplo_2 as linhas:
puts(“Seu apelido é”); puts(&nome[2]);
puts(“?”);
....será visualizado:
Qual o seu nome? RONALDO Olá RONALDO Tudo bem? Seu apelido é NALDO ?
O operador nos possibilita a determinar o número de caracteres iniciais que não deverão ser impressos.
Exercícios
1 – Defina Operador de Endereço:
________________________________________________________ ________________________________________________________ _____________________________________________________
86 2 – Qual a sintaxe da função scanf( ) ?
________________________________________________________ ______________________________________________________ 3 – Por que uma string é finalizada pelo caractere null ?
________________________________________________________ ______________________________________________________ 4 – Dê 5 exemplos de especificadores de formato scanf( ) e explique a sua utilização. ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ___________________________________________________
5 – Por que a função scanf( ) é considerada limitada para a leitura de strings ?
________________________________________________________ ______________________________________________________ 6 – O programa funciona corretamente? Por que ?
#include <stdio.h> #include <conio.h> main( ) { char PALAVRA [50]; clrscr( );
puts(“Escreva uma palavra:”); scanf(“%c”,PALAVRA); puts(PALAVRA); getch( ); } ________________________________________________________ ________________________________________________________ ________________________________________________________ ____________________________________________________ 7 – Qual a principal diferença entre getch( ) e getche( ).
________________________________________________________ ________________________________________________________
87 ________________________________________________________ ____________________________________________________
8 – Para ler uma string de caracteres qual função deve ser utilizada: getchar( ) ou gets( ) ? Explique:
________________________________________________________ ________________________________________________________ ________________________________________________________ ____________________________________________________
9 – Se for digitada a palavra FUNÇÃO, o que será visualizado na tela após a execução do programa ?
#include <stdio.h> #include <conio.h> main( ) { char palavra; clrscr( );
puts(“Digite uma palavra:”); palavra = getchar( ); putchar(palavra); getch( ); } ________________________________________________________ ________________________________________________________ ________________________________________________________ ____________________________________________________
10-No exercício anterior, se utilizássemos gets( ), quais as modificações necessárias para o correto funcionamento? O que seria impresso ? ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ _________________________________________________
88 11-Elabore um programa que calcule a quantidade de combustível gastos em uma viagem. O programa deve solicitar ao usuário os seguintes dados: Qual distância(em Km)o veículo faz por litro de combustível, tempo (em horas) gasto na viagem e a velocidade média (em Km) durante a mesma.
________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ _________________________________________________
12-Crie um programa que seja capaz de converter e apresentar a idade de uma pessoa em dias e em horas.
________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ _______________________________________________
Capítulo 7
89
Decisões e
Seleção
múltipla
•
O comando if•
Bloco de comando com if•
O comando if-else•
O comando if-else-if•
O operador alternativo “ ? “•
Operadores lógicos•
O comando switchComandos de Seleção
Em C, os comandos de seleção direcionam o fluxo de um programa utilizando expressões relacionais que controlam quais comandos serão executados com base em uma ou em outra condição. Muitos comandos em C contam com um teste condicional que determina o curso da ação. Uma condição, poderá ser falsa ou
90 verdadeira; ou seja, diferente de zero ou zero. Esse método, para verdadeiro e falso, permite que rotinas sejam codificadas com eficiência.
Um comando de decisão executa uma série de instruções, se for necessário repete a seqüência até que uma certa condição seja encontrada e decide entre ações alternativas.
O comando if
Utilizamos esse comando quando deseja-se tomar uma decisão simples. Se a expressão é verdadeira (diferente de 0), o comando ou bloco que forma o “corpo “ do if é executado uma única vez. Se a expressão for falsa, o programa não executa a instrução iniciada por if . Exemplo: . . main( ) { clrscr( ); int x;
printf(“Digite um número:”); scanf(“%d”,&x);
if (x>=0) if (x<100)
puts(“O número é menor que uma centena ! “); getch( );
}
Neste exemplo, ao executar o programa, é solicitado um número. A função scanf( ) possibilita a entrada através do teclado, de um número que será atribuído à variável x . O comando if efetuará a seqüência de condições até que encontre a verdadeira.
91 if( x<100 ) e menor que cem... “
Se o número digitado satisfaz a condição, então será impresso: O número é menor que uma centena ! uma única vez, caso contrário não imprimirá nada e aguardará pressionarmos uma tecla para finalizar o programa ( através de getch( ) ).
Sintaxe :
if ( expressão de controle ) comando ;
Obs: comando pode ser um bloco de comandos, um único comando
ou nada ( comandos vazios ).