Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


c-02 linguagem C, Notas de estudo de Engenharia Telemática

Logica de Programação e Algoritmos

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 26/11/2010

samuel-santos-22
samuel-santos-22 🇧🇷

4.6

(41)

262 documentos

1 / 7

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E
TECNOLOGIA DA PARAÍBA – CAMPUS CAMPINA GRANDE
CURSO: CURSO SUPERIOR DE TECNOLOGIA EM TELEMÁTICA
PERÍODO: P1 TURMA: N
DISCIPLINA: ALGORITMOS E LINGUAGEM DE PROGRAMAÇÃO
PROFESSOR: CÉSAR ROCHA VASCONCELOS SEMESTRE LETIVO
2009.2
Módulo 02 – VARIÁVEIS EM C
1. TÓPICOS ABORDADOS
1. Fundamentos no tocante à criação e uso de variáveis.
2. Conceitos e uso dos tipos básicos da linguagem C.
3. Declaração e uso de variáveis locais, globais, estáticas, variáveis register, parâmetros
formais, parâmetros reais, constantes, etc.
4. Exemplos de códigos a serem feitos em laboratório.
2. VARIÁVEIS
Sabe-se que uma variável consiste num local da memória do computador onde podemos
armazenar dados utilizados pelos programas. Na linguagem C, todas as variáveis devem ser
explicitamente declaradas. Além disso, C é uma linguagem fortemente tipada, ou seja, na
declaração de uma variável, obrigatoriamente, devem ser especificados seu tipo e seu nome. Assim,
o nome da variável serve de referência ao dado armazenado no espaço de memória e, por sua vez, o
tipo da variável determina a natureza do dado que será armazenado (numérico, caractere, etc.).
2.1 Tipos básicos de C
Há cinco tipos básicos em C (char, int, float, double e void). Todos os outros tipos de dados
existentes são baseados nestes tipos fundamentais[2]. Ao contrário de algumas linguagens modernas
como Java, o tamanho que cada tipo declarado em um programa em C ocupará na memória depende
da implementação do compilador e do processador da máquina. Entretanto, para fins diticos,
vamos assumir que um caractere ocupará apenas 01(um) byte; um mero inteiro ocupará 02(dois)
bytes de memória e, finalmente, um mero com casas decimais ocupará 04(quatro) bytes da
memória do computador. Embora o tipo char possa guardar um valor numérico, ele é quase sempre
usado apenas para representar códigos de caracteres. Conforme dito pouco, estes tipos diferem
entre si pelo espaço de memória que ocupam e, conseqüentemente, pelo intervalo de valores que
podem representar. O tipo char, por exemplo, se assumirmos o tamanho de ocupação de 1 byte de
memória (8 bits), poderemos representar até 28
(=256) valores distintos. Todos estes tipos podem
ainda ser modificados para representarem apenas valores positivos, o que é feito precedendo o tipo
com o modificador “sem sinal” – unsigned. A tabela abaixo compara os tipos para todos os valores e
suas representatividades[2].
Tabela 1: tipos de dados em C. Tabela obtida de [2]
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe c-02 linguagem C e outras Notas de estudo em PDF para Engenharia Telemática, somente na Docsity!

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E

TECNOLOGIA DA PARAÍBA – CAMPUS CAMPINA GRANDE

CURSO: CURSO SUPERIOR DE TECNOLOGIA EM TELEMÁTICA

PERÍODO: P1 TURMA: N

DISCIPLINA: ALGORITMOS E LINGUAGEM DE PROGRAMAÇÃO

PROFESSOR: CÉSAR ROCHA VASCONCELOS SEMESTRE LETIVO 2009.

Módulo 02 – VARIÁVEIS EM C

1. TÓPICOS ABORDADOS

1. Fundamentos no tocante à criação e uso de variáveis.

2. Conceitos e uso dos tipos básicos da linguagem C.

3. Declaração e uso de variáveis locais, globais, estáticas, variáveis register , parâmetros

formais, parâmetros reais, constantes, etc.

4. Exemplos de códigos a serem feitos em laboratório.

2. VARIÁVEIS

Sabe-se que uma variável consiste num local da memória do computador onde podemos

armazenar dados utilizados pelos programas. Na linguagem C, todas as variáveis devem ser

explicitamente declaradas. Além disso, C é uma linguagem fortemente tipada , ou seja, na

declaração de uma variável, obrigatoriamente, devem ser especificados seu tipo e seu nome. Assim,

o nome da variável serve de referência ao dado armazenado no espaço de memória e, por sua vez, o

tipo da variável determina a natureza do dado que será armazenado (numérico, caractere, etc.).

2.1 Tipos básicos de C

Há cinco tipos básicos em C ( char , int , float , double e void ). Todos os outros tipos de dados

existentes são baseados nestes tipos fundamentais[2]. Ao contrário de algumas linguagens modernas

como Java, o tamanho que cada tipo declarado em um programa em C ocupará na memória depende

da implementação do compilador e do processador da máquina. Entretanto, para fins didáticos,

vamos assumir que um caractere ocupará apenas 01(um) byte; um número inteiro ocupará 02(dois)

bytes de memória e, finalmente, um número com casas decimais ocupará 04(quatro) bytes da

memória do computador. Embora o tipo char possa guardar um valor numérico, ele é quase sempre

usado apenas para representar códigos de caracteres. Conforme dito há pouco, estes tipos diferem

entre si pelo espaço de memória que ocupam e, conseqüentemente, pelo intervalo de valores que

podem representar. O tipo char , por exemplo, se assumirmos o tamanho de ocupação de 1 byte de

memória (8 bits), poderemos representar até 2^8 (=256) valores distintos. Todos estes tipos podem

ainda ser modificados para representarem apenas valores positivos, o que é feito precedendo o tipo

com o modificador “sem sinal” – unsigned. A tabela abaixo compara os tipos para todos os valores e

suas representatividades[2].

Tabela 1: tipos de dados em C. Tabela obtida de [2]

2.2 Declaração de variáveis:

Vimos que a declaração de uma variável reserva um espaço na memória para armazenar um dado do

tipo da variável e associa o nome desta variável a este espaço de memória. C é bastante flexível na

forma de se declarar variáveis. Veja alguns exemplos:

int a; a = 5; int b = 10; float c, d = 2.99;

2.3 Formação de nomes de identificadores

Para atribuir nomes às variáveis num programa em C, a regra geral é bem simples: todo

identificador deve começar por uma letra ou sublinhado ( underscore ) ‘_’. Além disso, os

caracteres seguintes devem ser letras, dígitos ou ‘_’.

Mas lembre-se: palavras-chave não são permitidas! (Ex.: int char = 10)

2.4 Variáveis locais:

As variáveis locais são aquelas declaradas dentro de um bloco de uma função ou de um bloco de

código. Estas variáveis só “vivem” e são acessadas dentro da função ou do bloco onde foram

declaradas. Se uma variável for declarada com o mesmo nome de uma variável local, esta última irá

sobrepor a definição de uma variável global de mesmo nome (dentro da função ou do bloco).

Alem disso, variáveis locais são criadas apenas em tempo de execução quando uma função é

chamada e serão destruídas após o final da execução da mesma (pilha de chamadas). O mesmo vale

para blocos de código. Variáveis locais são também chamadas de variáveis dinâmicas ou

automáticas. Veja, abaixo, um exemplo de um código parcial em C:

int i = 5; /* variável global / void funcao(void){ int i = 10; / a variável global é alterada? / int j = 20; { // um bloco de instruções... int k = 9; / k foi declarada dentro de um bloco próprio / k = 9 + i; / qual i será usado nesta instrução? */ j = 21; printf(“I=%d e J=%d e K=%d”, i, j, k); } // k = 99; ERRO, pois k não é visível aqui. } ...

2.5 Variáveis globais

São aquelas variáveis declaradas fora do corpo de qualquer função. Ao contrário das variáveis

locais, as variáveis globais “vivem” durante toda a execução do programa (por este motivo, deve-se

ser tomar cuidado ao criar muitas variáveis globais dentro de um programa!).

Vale lembrar que não serão criados novos espaços de armazenamento com extern! O modificador

apenas deixa o compilador saber que as variáveis globais já foram declaradas em um outro lugar.

2.6 Variáveis com valores indefinidos

Cuidado! Um dos erros comuns em programas de computador é o uso de variáveis cujos valores

ainda estão indefinidos. Por exemplo, o trecho de código abaixo está errado, pois o valor

armazenado na variável b está indefinido^1 e tentamos usá-lo na atribuição à variável c.

int a; int b; /* qual o valor de b? / ... a = 5; int soma = a + b; / Erro! A variável b tem lixo! */

2.7 Parâmetros formais

Conforme você já deve ter visto em disciplinas anteriores, parâmetros formais são apenas

declarações dos parâmetros necessários para a execução em uma rotina. Estas variáveis, na verdade,

comportam-se como qualquer outra variável local dentro da função (visibilidade, tempo de vida,

etc).

// funcao int somar( int umNumero, int outroNumero ){ return umNumero + outroNumero; }

2.8 Variáveis static

Em poucas palavras, variáveis static são variáveis permanentes. Principais usos:

∑ Declaração de variáveis estáticas locais

∑ Declaração de variáveis estáticas globais

Variáveis estáticas locais:

São variáveis que são visíveis apenas na função onde foram declaradas, como as variáveis locais,

mas que conseguem reter seus valores entre várias chamadas de função, como as variáveis

globais. Estes tipos de variáveis locais estáticas são úteis quando se precisa reter um valor na saída

de uma função sem a necessidade de se criar uma variável global que possa ser acessada em

qualquer lugar do programa gerando riscos de efeitos colaterais desnecessários.

Exemplo:

#include <stdio.h> void func1(void);

void main(void){ int i; for (i = 0; i < 10; ++i) func1(); }

1 É comum, neste caso, dizermos que B tem um “lixo”.

void func1(void){ static int num_chamadas = 0; /* variável local estática */

printf( "Chamada = %d\n", num_chamadas); num_chamadas = num_chamadas + 1; }

Variáveis estáticas globais:

São, na verdade, variáveis globais que são visíveis apenas no módulo (arquivo-fonte) onde foram

declaradas. De maneira não tão abrangente, é possível criar uma variável em C que, apesar de

global, as rotinas de outros arquivos não podem reconhecê-la ou alterar seu conteúdo, diretamente.

Assim, você pode esconder porções de dados de outras partes do seu sistema (o que é vantajoso

em grandes aplicações).

Como uma variável global estática ficará escondida dentro do módulo que a declarou, você

inclusive pode criar uma outra variável global de mesmo nome sem prejuízos (erros de duplicação

por parte do compilador). Quer ver?

Exemplo:

/* Arquivo main.c */ #include <stdio.h>

void func1(void); void func2(void);

int global; void main(void) { global = 10; func1(); // será que o valor 20 será atribuído a nossa global(não-estática)? printf("%d\n", global); // será impresso o valor 10! func1() só enxerga a var. estática func2(); // será impresso o valor 20! }

/* Arquivo Arq1.c */

#include <stdio.h> static int global; /* variável global estática (escondida)*/

void func1(void) { global = 20; }

void func2(void) { printf("%d\n", global); }

2.9 Register

Quando uma variável local ou um parâmetro formal será referenciado inúmeras vezes dentro de um

sistema, é interessante que o acesso a esta variável seja feito da forma mais rápida possível. É nesse

3. CRÉDITOS E BIBLIOGRAFIA UTILIZADA PARA A GERAÇÃO DESTA NOTA DE AULA:

[1] CELES, W. Estruturas de Dados usando C. PUC/Rio.

[2] SCHILDT, H. C Completo e Total , Makron Books.