Apostila C
275 pág.

Apostila C


DisciplinaMétodos e Técnicas de Programação22 materiais161 seguidores
Pré-visualização45 páginas
\u2022 Se ocorrer um erro: a constante EOF (definida na biblioteca stdio.h)
e´ retornada.
Exemplo: putchar()
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 char c = \u2019 a \u2019 ;
5 i n t x = 65;
6 putchar ( c ) ;
7 putchar ( \u2019 \n \u2019 ) ;
8 putchar ( x ) ;
9 putchar ( \u2019 \n \u2019 ) ;
10 system ( \u2018 \u2018 pause \u2019 \u2019 ) ;
11 return 0;
12 }
Sa\u131´da a
A
Perceba, no exemplo acima, que a conversa\u2dco na linguagem C e´ direta no
momento da impressa\u2dco, ou seja, o valor 65 e´ convertido para o caractere
ASCII correspondente, no caso, o caractere \u201cA\u201d. Ale´m disso, o comando
putchar() tambe´m aceita o uso de sequ¨e\u2c6ncias de escape como o caractere
\u2018\n\u2019 (nova linha).
2.2.3 SCANF
A func¸a\u2dco scanf() e´ uma das func¸o\u2dces de entrada/leitura de dados da lingua-
gem C. Seu nome vem da expressa\u2dco em ingle\u2c6s scan formatted, ou seja,
leitura formatada. Basicamente, a func¸a\u2dco scanf() le\u2c6 do teclado um con-
junto de valores, caracteres e/ou seque\u2c6ncia de caracteres de acordo com
o formato especificado. A forma geral da func¸a\u2dco scanf() e´:
scanf(\u201ctipos de entrada\u201d, lista de varia´veis)
A func¸a\u2dco scanf() recebe 2 para\u2c6metros de entrada
40
\u2022 \u201ctipos de entrada\u201d: conjunto de caracteres que especifica o formato
dos dados a serem lidos;
\u2022 lista de varia´veis: conjunto de nomes de varia´veis separados por
v\u131´rgula, onde cada nome de varia´vel e´ precedido pelo operador &.
Os tipo de entrada especificam o formato de entrada dos dados que sera\u2dco
lidos pela func¸a\u2dco scanf(). Cada tipo de entrada e´ precedido por um sinal de
% e um tipo de entrada deve ser especificado para cada varia´vel a ser lida.
Assim, se quissessemos ler uma u´nica varia´vel com o camando scanf(),
fariamos
Se fossem duas as varia´veis a serem lidas, fariamos
e assim por diante. Note que os formatos e as varia´veis que armazenara\u2dco
o dado com aquele formato devem ser especificados na mesma ordem,
como mostram as setas.
Na linguagem C, e´ necessa´rio colocar o s\u131´mbolo de & antes
do nome de cada varia´vel a ser lida pelo comando scanf().
Trata-se de uma exige\u2c6ncia da linguagem C. Todas as varia´veis que rece-
bera\u2dco valores do teclado por meio da scanf() devera\u2dco ser passadas pelos
seus enderec¸os. Isso se faz colocando o operador de enderec¸o \u201c&\u201d antes
do nome da varia´vel.
A func¸a\u2dco scanf() pode ser usada para ler virtualmente qualquer tipo de
dado. No entando, ela e´ usada com mais frequ¨encia para a leitura de
nu´meros inteiros e/ou de ponto flutuante (nu´meros reais). A tabela abaixo
mostra alguns dos tipos de entrada suportados pela linguagem:
41
Alguns \u201ctipos de entrada\u201d
%c leitura de um caractere
%d ou %i leitura de nu´meros inteiros
%f leitura de nu´mero reais
%s leitura de va´rios caracteres
Abaixo, tem-se alguns exemplos de leitura de dados utilizando o comando
scanf():
Exemplo: leitura de dados na linguagem C
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 i n t x , z ;
5 f l o a t y ;
6 / / L e i t u r a de um va lo r i n t e i r o
7 scanf ( \u2018 \u2018%d \u2019 \u2019 ,&x ) ;
8 / / L e i t u r a de um va lo r r e a l
9 scanf ( \u2018 \u2018% f \u2019 \u2019 ,&y ) ;
10 / / L e i t u r a de um va lo r i n t e i r o e out ro r e a l
11 scanf ( \u2018 \u2018%d%f \u2019 \u2019 ,&x ,&y ) ;
12 / / L e i t u r a de dois va lo res i n t e i r o s
13 scanf ( \u2018 \u2018%d%d \u2019 \u2019 ,&x ,&z ) ;
14 / / L e i t u r a de dois va lo res i n t e i r o s com espac¸o
15 scanf ( \u2018 \u2018%d %d \u2019 \u2019 ,&x ,&z ) ;
16 system ( \u2018 \u2018 pause \u2019 \u2019 ) ;
17 return 0;
18 }
No exemplo acima, os comandos
scanf(\u201c%d%d\u201d,&x,&z);
e
scanf(\u201c%d %d\u201d,&x,&z);
sa\u2dco equivalentes. Isso ocorre por que o comando scanf() ignora os espac¸os
em branco entre os tipos de entrada. Ale´m disso, quando o comando
scanf() e´ usado para ler dois ou mais valores, podemos optar por duas
formas de digitar os dados no teclado:
\u2022 Digitar um valor e, em seguida, pressionar a tecla ENTER para cada
valor digitado;
42
\u2022 Digitar todos os valores separados por espac¸o e, por u´ltimo, pressio-
nar a tecla ENTER.
O comando scanf() ignora apenas os espac¸os em branco
entre os tipos de entrada. Qualquer outro caractere in-
serido entre os tipos de dados devera´ ser digitado pelo
usua´rio, mas sera´ descartado pelo programa.
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 i n t dia , mes , ano ;
5 / / L e i t u r a de t r e\u2c6 s va lo res i n t e i r o s
6 / / com barras ent re e les
7 scanf ( \u2018 \u2018%d/%d/%d \u2019 \u2019 ,& dia ,&mes,&ano ) ;
8 system ( \u2018 \u2018 pause \u2019 \u2019 ) ;
9 return 0;
10 }
Isso permite que o comando scanf() seja usado para receber dados for-
matados como, por exemplo, uma data: dia/me\u2c6s/ano. No exemplo acima,
o comando scanf() e´ usado para a entrada de tre\u2c6s valores inteiros sepa-
rados por uma barra \u201c/\u201d cada. Quando o usua´rio for digitar os tre\u2c6s valores,
ele sera´ obrigado a digitar os tre\u2c6s valores separados por barra (as barras
sera\u2dco descartadas e na\u2dco interferem nos dados). Do contra´rio, o comando
scanf() na\u2dco ira´ ler corretamente os dados digitados.
2.2.4 GETCHAR
A func¸a\u2dco getchar() (get character ) permite ler um u´nico caractere do te-
clado. Sua forma geral e´:
int putchar(void)
A func¸a\u2dco getchar() na\u2dco recebe para\u2c6metros de entrada. A func¸a\u2dco retorna
\u2022 Se NA\u2c6O ocorrer um erro: o co´digo ASCII do caractere lido;
\u2022 Se ocorrer um erro: a constante EOF (definida na biblioteca stdio.h)
e´ retornada.
43
Exemplo: getchar()
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 char c ;
5 c = getchar ( ) ;
6 p r i n t f ( \u2018 \u2018 Caractere : %c\n \u2019 \u2019 , c ) ;
7 p r i n t f ( \u2018 \u2018 Codigo ASCII : %d\n \u2019 \u2019 , c ) ;
8 system ( \u2018 \u2018 pause \u2019 \u2019 ) ;
9 return 0;
10 }
Perceba, no exemplo acima, que a conversa\u2dco na linguagem C e´ direta no
momento da leitura, ou seja, embora a func¸a\u2dco retorne um valor do tipo
int, pode-se atribuir para uma varia´vel do tipo char devido a conversa\u2dco
automa´tica da linguagem C.
2.3 ESCOPO: TEMPO DE VIDA DA VARIA´VEL
Quando declararamos uma varia´vel, vimos que e´ preciso sempre definir o
seu tipo (conjunto de valores e de operac¸o\u2dces que uma varia´vel aceita) e
nome (como o programador identifica essa varia´vel dentro do programa).
Pore´m, ale´m disso, e´ preciso definir o seu escopo.
O escopo e´ o conjunto de regras que determinam o uso e
a validade das varia´veis ao longo do programa.
Em outras palavras, escopo de uma varia´vel define onde e quando a
varia´vel pode ser usada. Esse escopo esta´ intimamente ligado com o local
de declarac¸a\u2dco dessa varia´vel e por esse motivo ele pode ser: global ou
local.
Uma varia´vel global e´ declarada fora de todas as func¸o\u2dces do programa,
ou seja, na a´rea de declarac¸o\u2dces globais do programa (acima da cla´usula
main). Essas varia´veis existem enquanto o programa estiver executando,
ou seja, o tempo de vida de uma varia´vel global e´ o tempo de execuc¸a\u2dco do
programa. Ale´m disso, essas varia´veis podem ser acessadas e alteradas
em qualquer parte do programa.
44
Varia´veis globais podem ser acessadas e alteradas em
qualquer parte do programa.
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t x = 5; / / v a r i a´ v e l g loba l
4 void i n c r ( ) {
5 x++; / / acesso a v a r i a´ v e l g loba l
6 }
7 i n t main ( ) {
8 p r i n t f ( \u2018 \u2018 x = %d\n \u2019 \u2019 , x ) ; / / acesso a v a r i a´ v e l
g loba l
9 i n c r ( ) ;
10 p r i n t f ( \u2018 \u2018 x = %d\n \u2019 \u2019 , x ) ; / / acesso a v a r i a´ v e l
g loba l
11 system ( \u2018 \u2018 pause \u2019 \u2019 ) ;
12 return 0;
13 }
Sa\u131´da x = 5
x = 6
Na figura abaixo, e´ poss\u131´vel ter uma boa representac¸a\u2dco de onde comec¸a e
termina cada escopo do co´digo anterior:
Note, no exemplo acima, que a varia´vel x e´ declarada junto com as bi-
bliotecas do programa, portanto, trata-se de uma varia´vel global (escopo
global). Por esse motivo, ela pode ser acessada e ter seu valor alterado
em qualquer parte do programa (ou seja, no escopo global e em qualquer
escopo local).
45
De modo geral, evita-se o uso de varia´veis globais em um
programa.
As varia´veis globais devem ser evitadas porque qualquer parte do pro-
grama pode altera´-la. Isso torna mais dif\u131´cil a manutenc¸a\u2dco