Apostila C
275 pág.

Apostila C


DisciplinaMétodos e Técnicas de Programação22 materiais161 seguidores
Pré-visualização45 páginas
do programa,
pois fica dif\u131´cil saber onde ele e´ inicializada, para que serve, etc. Ale´m
disso, varia´veis globais ocupam memo´ria durante todo o tempo de execuc¸a\u2dco
do programa e na\u2dco apenas quando elas sa\u2dco necessa´rias.
Ja´ uma varia´vel local e´ declarada dentro de um bloco de comandos de-
limitado pelo operador de chaves {}(escopo local). Essas varia´veis sa\u2dco
vis\u131´veis apenas no interior do bloco de comandos onde ela foi declarada,
ou seja, dentro do seu escopo.
Um bloco comec¸a quando abrimos uma chave {e termina
quando fechamos a chave }.
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 void func1 ( ) {
4 i n t x ; / / v a r i a´ v e l l o c a l
5 }
6 void func2 ( ) {
7 i n t x ; / / v a r i a´ v e l l o c a l
8 }
9 i n t main ( ) {
10 i n t x ;
11 scanf ( \u2018 \u2018%d \u2019 \u2019 ,&x ) ;
12 i f ( x == 5){
13 i n t y =1;
14 p r i n t f ( \u2018 \u2018%d\n \u2019 \u2019 , y ) ;
15 }
16 system ( \u2018 \u2018 pause \u2019 \u2019 ) ;
17 return 0;}
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:
46
Note, no exemplo acima, que a varia´vel x e´ declarada tre\u2c6s vezes. Cada
declarac¸a\u2dco dela esta´ em um bloco de comandos distinto (ou seja, delimi-
tado por um operador de chaves {}). Desse modo, apesar de possuiremos
o mesmo nome, elas possuem escopos diferentes e, consequentemente,
tempos de vida diferentes: uma na\u2dco existe enquanto a outra existe. Ja´ a
varia´vel y so´ existe dentro do bloco de comandos pertencente a instruc¸a\u2dco
if(x == 5), ou seja, outro escopo local.
47
Quando um bloco possui uma varia´vel local com o mesmo
nome de uma varia´vel global, esse bloco dara´ prefere\u2c6ncia a`
varia´vel local. O mesmo vale para duas varia´veis locais em
blocos diferentes: a declarac¸a\u2dco mais pro´xima tem maior
precede\u2c6ncia e oculta as demais varia´veis com o mesmo
nome.
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t x = 5;
4 i n t main ( ) {
5 p r i n t f ( \u2018 \u2018 x = %d\n \u2019 \u2019 , x ) ;
6 i n t x = 4;
7 p r i n t f ( \u2018 \u2018 x = %d\n \u2019 \u2019 , x ) ;
8 {
9 i n t x = 3;
10 p r i n t f ( \u2018 \u2018 x = %d\n \u2019 \u2019 , x ) ;
11 }
12 p r i n t f ( \u2018 \u2018 x = %d\n \u2019 \u2019 , x ) ;
13 system ( \u2018 \u2018 pause \u2019 \u2019 ) ;
14 return 0;
15 }
Sa\u131´da x = 5
x = 4
x = 3
x = 4
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 e como um escopo oculta os
demais:
48
Note, no exemplo acima, que a varia´vel x e´ declarada tre\u2c6s vezes. Cada
declarac¸a\u2dco dela esta´ em um escopo distinto: uma e´ global e duas sa\u2dco
locais. Na primeira chamada do comando printf() (linha 5), a varia´vel glo-
bal x e´ acessada. Isso ocorre porque, apesar de estarmos em um escopo
local, a segunda varia´vel x ainda na\u2dco foi criada e portanto na\u2dco existe. Ja´
na segunda chamada do comando printf() (linha 7), a segunda varia´vel x
ja´ foi criada, ocultando a varia´vel global de mesmo nome. Por isso, esse
comando printf() imprime na tela de sa\u131´da o valor x = 4. O mesmo acon-
tece com a terceira chamada do comando printf() (linha 10): esse co-
mando esta´ dentro de um novo bloco de comandos, ou seja, delimitado
por um operador de chaves {}. A declarac¸a\u2dco da terceira varia´vel x oculta
a declarac¸a\u2dco da segunda varia´vel x. Por isso, esse comando printf() im-
prime na tela de sa\u131´da o valor x = 3. No fim desse bloco de comandos, a
terceira varia´vel x e´ destru\u131´da, o que torna novamente vis\u131´vel a segunda
varia´vel x, a qual e´ impressa na tela pela quarta chamada do comando
printf() (linha 12).
Como o escopo e´ um assunto delicado e que pode gerar
muita confusa\u2dco, evita-se o uso de varia´veis com o mesmo
nome.
2.4 CONSTANTES
No´s aprendemos que uma varia´vel e´ uma posic¸a\u2dco de memo´ria onde po-
demos guardar um determinado dado ou valor e modifica´-lo ao longo da
execuc¸a\u2dco do programa. Ja´ uma constante permite guardar um determi-
49
nado dado ou valor na memo´ria do computador, mas com a certeza de
que ele na\u2dco se altera durante a execuc¸a\u2dco do programa: sera´ sempre o
mesmo, portanto constante.
Para constantes e´ obrigato´ria a atribuic¸a\u2dco do valor no mo-
mento da declarac¸a\u2dco.
Isso ocorre por que apo´s a declarac¸a\u2dco de uma constante, seu valor na\u2dco po-
dera´ mais ser alterado: sera´ constante. Na linguagem C existem duas ma-
neiras para criar constantes: usando os comandos #define e const. Ale´m
disso, a pro´pria linguagem C ja´ possui algumas constantes pre´-definidas,
como as seque\u2c6ncias de escape.
2.4.1 COMANDO #DEFINE
Uma das maneiras de declarar uma constante e´ usando o comando #de-
fine, que segue a seguinte forma geral:
#define nome da constante valor da constante
O comando #define e´ uma diretiva de compilac¸a\u2dco que informa ao compila-
dor que ele deve procurar por todas as ocorre\u2c6ncias da palavra definida por
nome da constante e substituir por valor da constante quando o pro-
grama for compilado. Por exemplo, uma constante que represente o valor
de pi pode ser declarada como apresentado a seguir:
#define PI 3.1415
2.4.2 COMANDO CONST
Uma outra maneira de declarar uma constante e´ usando o comando const,
que segue a seguinte forma geral:
const tipo da constante nome da constante = valor da constante;
Note que a forma geral do comando const se parece muito com a da
declarac¸a\u2dco de uma varia´vel. Na verdade, o prefixo const apenas informa
50
ao programa que a varia´vel declarada na\u2dco podera´ ter seu valor alterado.
E, sendo uma varia´vel, esta constante esta´ sujeita as mesmas regras que
regem o uso das varia´veis. Por exemplo, uma constante que represente o
valor de pi pode ser declarada como apresentado a seguir:
const float PI 3.1415
2.4.3 SEQU¨E\u2c6NCIAS DE ESCAPE
A linguagem C possui algumas constantes pre´-definidas, como as seque\u2c6ncias
de escape ou co´digos de barra invertida. Essas constantes As seque\u2c6ncias
de escape permitem o envio de caracteres de controle na\u2dco gra´ficos para
dispositivos de sa\u131´da.
A tabela abaixo apresenta uma relac¸a\u2dco das seque\u2c6ncias de escape mais
utilizadas em programac¸a\u2dco e seu significado:
Co´digo Comando
\a bip
\b retorcesso (backspace)
\n nova linha (new line)
\v tabulac¸a\u2dco vertical
\t tabulac¸a\u2dco horizontal
\r retorno de carro (carriage return)
\\u2019 apo´strofe
\\u201d aspa
\\ barra invertida (backslash)
\f alimentac¸a\u2dco de folha (form feed)
As sequ¨e\u2c6ncias de escape permitem que o comando printf() imprima ca-
racteres especiais na tela de sa\u131´da, como tabulac¸o\u2dces e quebras de linha.
Veja o exemplo abaixo:
51
Exemplo: seque\u2c6ncias de escape
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 p r i n t f ( \u2018 \u2018 He l lo World\n \u2019 \u2019 ) ;
5 p r i n t f ( \u2018 \u2018 He l lo \nWorld\n \u2019 \u2019 ) ;
6 p r i n t f ( \u2018 \u2018 He l lo \\ World\n \u2019 \u2019 ) ;
7 p r i n t f ( \u2018 \u2018 \ \u201d He l lo World \ \u201d\n \u2019 \u2019 ) ;
8 system ( \u2018 \u2018 pause \u2019 \u2019 ) ;
9 r e t u r n 0 ;
10 }
Sa\u131´da Hello World
Hello
World
Hello \World
\u201cHello World\u201d
2.5 OPERADORES
2.5.1 OPERADOR DE ATRIBUIC¸A\u2dcO: \u201c=\u201d
Uma das operac¸o\u2dces mais utilizadas em programac¸a\u2dco e´ a operac¸a\u2dco de
atribuic¸a\u2dco \u201c=\u201d. Ela e´ responsa´vel por armazenar um determinado valor em
uma varia´vel. Em linguagem C, o uso do operador de atribuic¸a\u2dco \u201c=\u201d segue
a seguinte forma geral
nome da varia´vel = expressa\u2dco;
Por expressa\u2dco, entende-se qualquer combinac¸a\u2dco de valores, varia´veis,
constantes ou chamadas de func¸o\u2dces utilizando os operadores matema´ticos
+,-, *, / e %, que resulte numa resposta do mesmo tipo da varia´vel definida
por nome da varia´vel. Veja o exemplo abaixo:
52
Exemplo: operador de atribuic¸a\u2dco \u201c=\u201d
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 #include <math . h>
4 const i n t z = 9;
5 i n t main ( ) {
6 f l o a t x ;
7 / / dec lara y e a t r i b u i um va lo r
8 f l o a t y = 3;
9 / / a t r i b u i um va lo r a x
10 x = 5;
11 p r i n t f ( \u2018 \u2018 x = %f \n \u2019 \u2019 , x ) ;
12 / / a t r i b u i uma constante a x
13 x = z ;
14 p r i n t f ( \u2018 \u2018 x = %f \n \u2019 \u2019 , x ) ;
15 / / a t r i b u i o resu l tado de uma
16 / / expressa\u2dco matema´tica a x
17 x = y + 5;
18 p r i n t f ( \u2018 \u2018 x = %f \n \u2019 \u2019 , x ) ;
19 / / a t r i b u i o resu l tado