INTRODUÇÃO À PROGRAMAÇÃO
AULA 06: LINGUAGEM DE PROGRAMAÇÃO C
Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação
O QUE É UMA VARIÁVEIS DO TIPO
ENDEREÇO?
• É uma variável que armazena endereços de memória.
– Chamada de ponteiro
• Para declarar um ponteiro temos a seguinte forma:
<tipo_ponteiro> *<nome_variável>
ESTRUTURA DE UM PROGRAMA EM C VARIÁVEIS DO TIPO ENDEREÇO
Quando um ponteiro é declarado ele aponta para um lugar de memória indefinido. Por isso, devemos sempre inicializar um ponteiro antes de utilizá-lo.
• Para saber a posição de memória (endereço) de uma variável basta usar o operador &.
int c = 10;
int *p;
p = &c; // agora o ponteiro p pode ser utilizado
ESTRUTURA DE UM PROGRAMA EM C VARIÁVEIS DO TIPO ENDEREÇO
Para atribuir um valor válido a um ponteiro podemos atribuir um endereço de memória de uma variável declarada.
int c = 10;
int *p;
p = &c; // agora o ponteiro p pode ser utilizado
ESTRUTURA DE UM PROGRAMA EM C VARIÁVEIS DO TIPO ENDEREÇO
Para alterar o valor da variável c usando o ponteiro p basta usar o operador * (*p, equivale a variável c).
*p = 12;
int main(){
int n, v;
int *p;
n = 5;
p = &n;
v = *p;
return 0;
}
ESTRUTURA DE UM PROGRAMA EM C
VARIÁVEIS DO TIPO ENDEREÇO
int main(){
int n, *p;
n = 50;
p = &n;
*p = 100;
}
ESTRUTURA DE UM PROGRAMA EM C
VARIÁVEIS DO TIPO ENDEREÇO
É POSSÍVEL FAZER OPERAÇÕES COM
PONTEIRO?
• Atribuição
– Se temos dois ponteiros, p1 e p2, e quisermos que p1 aponte para o mesmo endereço de p2, basta fazer:
P1 = p2
– Para a variável apontada por p1 ter o mesmo conteúdo da variável apontada por p2, basta fazer:
*p1 = *p2
ESTRUTURA DE UM PROGRAMA EM CA
OPERAÇÕES COM PONTEIROS
• Incremento e decremento
– Quando incrementamos um ponteiro ele passa a pontar para o próximo endereço do tipo o qual o ponteiro aponta.
p++
– O decremento funciona de forma semelhante.
p--
ESTRUTURA DE UM PROGRAMA EM CA OPERAÇÕES COM PONTEIROS
Para incrementar e decrementar o conteúdo das variáveis para as quais os ponteiros apontam basta faz:
(*p)++
• Comparação
– Para saber se dois ponteiros são iguais ou diferentes basta usar
== e !=
– Os operadores do tipo >, <, >= e <= são usados para comparar qual ponteiro aponta para uma posição mais alta na memória.
p1 == p2;
p1 > p2;
ESTRUTURA DE UM PROGRAMA EM CA
OPERAÇÕES COM PONTEIROS
BIBLIOTECA PADRÃO
• A linguagem C disponibiliza um conjunto de bibliotecas (conjunto de funções) para serem incorporadas a um programa C.
• As funções dessas bibliotecas são declaradas em um arquivo-cabeçalho.
– Os arquivos-cabeçalho são organizados por finalidade ou área de aplicação.
ESTRUTURA DE UM PROGRAMA EM C
BIBLIOTECA PADRÃO
• Os arquivos-cabeçalhos das bibliotecas são incluídos ao programa através da diretiva de pré-processamento
#include
– Para incluir arquivos-cabeçalhos do sistema (criados durante a instalação do compilador) as diretivas são referenciadas entre chaves angulares (< >).
– Os arquivos-cabeçalhos do usuário (desenvolvidos pelo programador) são referenciados através de aspas duplas (“ “).
ESTRUTURA DE UM PROGRAMA EM C
BIBLIOTECA PADRÃO
FUNÇÕES DE ENTRADA E SAÍDA
• A linguagem C disponibiliza uma biblioteca padrão de entrada e saída chamada stdio.h
– Std = standard (padrão)
– Io = input/output (entrada/saída)
– As funções da biblioteca stdio.h estão associadas a entrada e saída padrão do sistema computacional.
• Teclado
• Monitor
ESTRUTURA DE UM PROGRAMA EM CA
FUNÇÕES DE ENTRADA E SAÍDA
FUNÇÃO DE SAÍDA
• A função de saída do stdio.h é chamada de printf
– A função printf imprime mensagens e valores diretamente na saída padrão
– As mensagens impressas devem ser especificadas entre aspas duplas (sequência de caracteres)
printf(<sequencia_caracteres>);
ESTRUTURA DE UM PROGRAMA EM CA
FUNÇÃO DE SAÍDA
• Quando existe a necessidade de imprimir valores de um tipo básico, a biblioteca stdio.h oferece as diretivas de impressão para formatar tipos básicos em uma sequência de caracteres.
– As diretivas de impressão são incluídas na sequência de caracteres através do caractere %
printf(“<sequência_caractere>[%[<tamanho>.<precisão>]<esp ecificação_formato>]”, [lista_valores])
ESTRUTURA DE UM PROGRAMA EM CA
FUNÇÃO DE SAÍDA
• Especificadores de formato (inteiro)
– Usadas para imprimir valores inteiros
ESTRUTURA DE UM PROGRAMA EM CA FUNÇÃO DE SAÍDA
Especificador Descrição
%d, %i O argumento correspondente deve ser do tipo inteiro. E o valor será impresso como um inteiro no formato decimal.
%O O argumento deve ser do tipo inteiro sem sinal. O valor será impresso como um inteiro não sinalizado no formato octal.
%U O argumento deve ser do tipo inteiro sem sinal. O valor será impresso como um inteiro não sinalizado no formato decimal.
%x, %X O argumento deve ser do tipo inteiro sem sinal. O valor será impresso como um inteiro não sinalizado no formato hexadecimal.
ESTRUTURA DE UM PROGRAMA EM CA
FUNÇÃO DE SAÍDA
• Especificadores de formato (ponto flutuante)
– Usadas para imprimir valores reais
ESTRUTURA DE UM PROGRAMA EM CA FUNÇÃO DE SAÍDA
Especificador Descrição
%f, %F O argumrnto deve ser do tipo real de ponto flutuante. E o valor será impresso como um número real de ponto flutuante no formato decimal.
%e, %E O argumento deve ser do tipo real de ponto flutuante. O valor será impresso como um real de ponto flutuante no formato científico.
%g, %G O argumento deve ser do tipo real de ponto flutuante. O valor será impresso como um real de ponto flutuante no formato da diretiva F ou E, dependendo da precisão.
%a, %A O argumento deve ser do tipo real de ponto flutuante. P valor será impresso no formato hexadecimal.
ESTRUTURA DE UM PROGRAMA EM CA
FUNÇÃO DE SAÍDA
• Nas diretivas %f e %e, os valores são arredondados, sendo a quantidade de dígitos da parte fracionária determinada pela precisão (6 dígitos sem precisão).
• Na diretiva %g os zeros da parte fracionária são removidos.
ESTRUTURA DE UM PROGRAMA EM CA
FUNÇÃO DE SAÍDA
ESTRUTURA DE UM PROGRAMA EM CA
FUNÇÃO DE SAÍDA
• Especificadores de formato (caractere)
– Usadas para imprimir valores reais
ESTRUTURA DE UM PROGRAMA EM CA FUNÇÃO DE SAÍDA
Especificador Descrição
%c O argumento correspondente deve ser do tipo inteiro. E o valor é convertido no tipo caractere sem sinal e imprime o caractere
%s O argumento deve ser um ponteiro do tipo caractere que aponta para uma cadeia de caracteres. E apenas a quantidade de caracteres especificada pela precisão é impressa, e se a precisão não é fornecida é impressa toda a
cadeia.
ESTRUTURA DE UM PROGRAMA EM CA
FUNÇÃO DE SAÍDA
• Especificadores de formato (caractere %)
– Usadas para imprimir o caractere %
ESTRUTURA DE UM PROGRAMA EM CA FUNÇÃO DE SAÍDA
Especificador Descrição
%% Essa diretiva não possui argumentos correspondente. O caractere % é impressp
• Constantes de barra invertida
– Tabela simplificada
ESTRUTURA DE UM PROGRAMA EM CA FUNÇÃO DE SAÍDA
Especificador Descrição
\n Nova linha
\” Aspas
\’ Apóstofro
\0 Nulo (zero decimal)
\\ Barra invertida
\t Tabulação
\a Alerta (beep)
\b Retorno do cursor
FUNÇÃO DE ENTRADA
• A função de entrada do stdio.h é chamada de scanf
– A função scanf é o modo mais simples de ler um valor do teclado e armazená-lo em uma variável
scanf(<especificador_formato>, &<variável>);
ESTRUTURA DE UM PROGRAMA EM CA
FUNÇÃO DE ENTRADA
• Especificadores de formato
– Tabela simplificada de especificadores de formato
ESTRUTURA DE UM PROGRAMA EM CA FUNÇÃO DE ENTRADA
Especificador Descrição
%c Um caractere, para armazenar o valor em uma variável do tipo char
%d Um número inteiro decimal, para armazenar o valor em uma variável do tipo int
%f Um número de ponto flutuante decimal, para armazenar o valor em uma variável do tipo ponto flutuante.
%s Uma string, para armazenar em variáveis que possam armazenar strings.