4. Índice C parte 1
CONCEITOS BÁSICOS rf
Estruturas Condicionais rf
Matrizes rf
Ponteiros JULIANA DANELETI
Funções saulo
Tipos de Dados do usuário rf
Entrada e Saída ju
Arquivos selma
Diretivas de pré-processadores saulo
Comentários saulo
Units selma
5. Visão Geral de C
C é uma linguagem de médio nível.
C é uma linguagem estruturada.
C é uma linguagem compilada.
C pode ser compilada em separada.
7. Identificadores
Os identificadores em C devem começar
com uma letra ou _ ( sublinhado )
Os identificadores podem conter letras,
números ou _ ( sublinhado)
As primeiras 31 letras são significativas
8. Variáveis
Forma geral da declaração de uma variável
tipo ListaDeVariáveis
As variáveis podem ser inicializadas na
definição
Variáveis globais
Variáveis locais
9. Especificadores de tipo de classe de armazenamento
Extern - Referenciar variáveis globais em
módulos compilados separadamente.
Static - Mantém o valor de uma variável
entre chamadas
Register - Acesso mais rápido possível (
usando registradores em vez da memória )
EspDeArmazenamento tipo NomeDaVariável
10. Operadores e Atribuição
= comando de atribuição
- Menos
+ Mais
* Multiplicação
/ Divisão
% Resto da Divisão
-- Decremento
++ Incremento
13. Conversão de tipos
Quando duas variáveis de tipos diferentes
são misturadas, o compilador converte
todos os operandos no tipo do maior
operando.
14. Índice C parte 1
Conceitos Básicos
ESTRUTURAS CONDICIONAIS
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
15. Comando If
If ( expressão ) comando;
Else comando;
ex: if (x > y) x = y;
else x = 0;
16. Comando Switch
Switch ( expressão ){
Case Comando1:
seqüência de comandos
Break
.....
Default
seqüência de comandos
}
17. Exemplo
Switch ( x ){
Case 1: escreve(x);
break;
Case 2: Registra(x);
break;
Default
apaga(x);
}
21. Índice C parte 1
Conceitos Básicos
Estruturas Condicionais
MATRIZES
Ponteiros
Funções
Tipos de Dados do usuário
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
23. Matrizes como parâmetros
Como ponteiro
ex: func1(int* x)
Como matriz dimensionada
ex: func1(int x[10]
Como matriz adimensional
ex: func1(int x[])
Mesmo resultado pois a função recebe apenas um
ponteiro e não cria de fato a matriz
24. Strings
Matriz de caracteres terminados com o
caractere nulo “/0”
Constantes strings são declarados entre
aspas duplas
ex: “Olha eu aqui!”
26. Índice C parte 1
Conceitos Básicos
Estruturas Condicionais
Matrizes
PONTEIROS
Funções
Tipos de Dados do usuário
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
27. Ponteiros
Forma Geral de Declaração:
tipo *nome;
Operadores:
&: devolve o endereço na memória do
seu operando – “recebe o endereço de”
*: devolve o valor da variável localizada
no endereço que o segue – “recebe o valor
que está no endereço de”
28. Ponteiros – Continuação
Operações:
Adição
Subtração
Não limitado a apenas incremento e
decremento. Pode-se somar ou subtrair
inteiros de ponteiros.
Comparação:
Em expressões relacionais
29. Ponteiros – Continuação
Ponteiros e Matrizes:
Para acessar elementos de matrizes usa–
se aritmética de ponteiros ou indexação
de matrizes
Matrizes de Ponteiros:
tipo *nome[num];
30. Ponteiros - Continuação
Inicialização de Ponteiros: é necessário para
evitar erros
Alocação Dinâmica
Malloc(): aloca memória
Free(): libera memória
31. Índice C parte 1
Conceitos Básicos
Estruturas Condicionais
Matrizes
Ponteiros
FUNÇÕES
Tipos de Dados do usuário
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
32. Funções
EspTipo Nome ( ListaParâmetros ) {
corpo da função
}
C não aceita funções dentro de funções
35. Índice C parte 1
Conceitos Básicos
Estruturas Condicionais
Matrizes
Ponteiros
Funções
TIPOS DE DADOS DO USUÁRIO
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
36. Tipos de dados do usuário
Estrutura (Struct)
Campo de bit
União (Union)
Enumeração
typedef
37. Struct
Forma geral
NomeVar {
tipo NomeVar
tipo NomeVar
} ListaDeVariáveis
Declaração de variáveis
Struct NomeStruct NomeVar
Struct podem ser passadas inteiras como
argumentos
Ponteiros para estruturas Struct também podem ser
usados
38. Campos de Bit
Usado para acessar um único bit dentro de um
byte
Forma Geral
Struct nome {
tipo nome1: comprimento;
tipo nome2: comprimento;
...
} Lista de variáveis
39. Uniões
Posição de memória que é compartilhada
por duas ou mais variáveis em momentos
diferentes.
Forma Geral
Union nome {
tipo NomeDaVariável;
...
} ListaVariáveis
42. Índice C parte 1
Conceitos Básicos
Estruturas Condicionais
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário
ENTRADA E SAÍDA
Arquivos
Diretivas de pré-processadores
Comentários
Units
44. E/S pelo Console - Continuação
%c
%d
%i
%e
%E
%f
%g
%G
Caractere
Inteiros decimais com sinal
Inteiros decimais com sinal
Notação Científica
Notação Científica
Ponto flutuante decimal
Usa %e ou %f, o que for mais curto
Usa %E ou %F, o que for mais curto
45. E/S pelo Console - Continuação
%o
%s
%u
%x
%X
%p
%n
%%
Octal sem sinal
String de caracteres
Inteiros decimais sem sinal
Hexadecimal sem sinal (letras minúsculas)
Hexadecimal sem sinal (letras maiúsculas)
Apresenta um ponteiro
Escreve o símbolo %
46. Índice C parte 1
Conceitos Básicos
Estruturas Condicionais
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário
Entrada e Saída
ARQUIVOS
Diretivas de pré-processadores
Comentários
Units
47. E/S com Arquivos
Para se iniciar a utilização das funções de arquivos
em C é necessário saber a diferença entre Streams
e Arquivo.
Arquivo é um dispositivo real, que pode ser
desde de um arquivo em disco até um terminal ou
impressora.
Streams é um dispositivo lógico criado pelo
sistema de arquivos, sendo associada a um arquivo
para que possamos trabalhar com diferentes tipos
de dispositivos de uma mesma maneira.Existem
dois tipos de Streams: texto e binária.
48. Considerações iniciais
Para se utilizar as funções de E/S com arquivos é
necessário que o cabeçalho STDIO.H esteja
presente no programa.
O arquivo de cabeçalho STDIO.H fornece
protótipos para as funções e define três tipos:
size_t, ftpos_t e FILE, onde size_t e ftpos_t são do
tipo unsigned e FILE é um ponteiro para arquivo.
A macro EOF definida em STDIO.H indica fim de
arquivo e é definida como –1.
49. Ponteiro de Arquivo
Um ponteiro de arquivo é um ponteiro para
informações que definem várias coisas
sobre o arquivo como o nome, status e a
posição atual. Um ponteiro de arquivo é do
tipo FILE.
FILE *fp;
50. Funções
Fopen() – abre arquivo
FILE *fopen(const *char nomearq,
const *char modo);
Fclose() – fecha arquivo
int fclose(FILE *fp);
51. Modos de abertura
r – Abre arquivo texto para leitura
w – Cria arquivo texto para escrita
a – Anexa a um arquivo texto
rb – Abre um arquivo binário para leitura
wb – Cria um arquivo binário para escrita
ab – Anexa a um arquivo binário
OBS: Acrescentando + nos modos anteriores o
arquivo trabalha tanto com leitura como com
escrita.
53. feof(), rewind() e ferror()
Testa fim de arquivo
int feof (FILE *fp);
Reposiciona indicador de posição no início
do arquivo
void rewind (FILE *fp);
Determina se operação de arquivo produziu
erro
int ferror (FILE *fp)
54. Funções de string
fputs()
int fputs (const char *str, FILE *fp);
fgets()
char *fgets (char *str, int lenght,FILE *fp);
55. remove() e fflush()
remove() – apaga arquivo
int remove (char *filename);
fflush() – esvazia stream
int fflush (FILE *fp);
57. fprintf() e fscanf()
fprintf()
int fprintf (FILE *fp, const char
*control_string,...);
fscanf()
int fscanf (FILE *fp, const char
*control_string,...);
58. fseek()
fseek()
int fseek (FILE *fp, long
numbytes, int origin);
Origin Nome da macro
Inicío do arquivo SEEK_SET
Posição atual SEEK_CUR
Final do arquivo SEEK_END
59. Índice C parte 1
Conceitos Básicos
Estruturas Condicionais
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário
Entrada e Saída
Arquivos
DIRETIVAS DE PRÉ-PROCESSADORES
Comentários
Units
61. Índice C parte 1
Conceitos Básicos
Estruturas Condicionais
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário
Entrada e Saída
Arquivos
Diretivas de pré-processadores
COMENTÁRIOS
Units
62. Comentários
/* ... */
ex: /* Isto é um comentário! */
Obs: Todos os comentários são ignorados
pelo compilador C.
63. Índice C parte 1
Conceitos Básicos
Estruturas Condicionais
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
UNITS
67. Índice C++ parte 2
CLASSES
Dados Privados e Públicos
Função Construtora e Destrutora
Sobrecarga de Operador
Funções e Dados-membro estáticos
Herança
Classe Amiga
68. Classes de C++
Ferramenta principal para Programação
Orientada a Objetos
Similar a Struct no sentido de agrupar
membros (dados do objeto + funções)
Permite definir atributos (características) ao
objeto
Simplifica programação e amplia
reutilização do código
69. Classes de C++
Objeto, em um sentido mais simples, é um
objeto mesmo, uma “coisa”, como por
exemplo, um telefone, um arquivo
Num sentido de programação, objeto é uma
variável do tipo classe
Classe dados n° fone, tipo
métodos discar, atender
Objeto telefone
70. Classes de C++ - Estrutura
Class nome_classe {
tipo dado_membro; // Dados do Objeto
void exibe_membro; // Métodos
};
// No programa principal
Nome_classe objeto_um, objeto_dois;
71. Classes de C++ - Métodos
A medida que os métodos se tornarem
maiores, defini-los dentro da classe poderá
congestionar a definição de classe
Solução: colocar o protótipo dentro da
classe e definir o método fora dela
72. Classes de C++ - Métodos
Ex: class funcionario {
void exibe_func(void); //Protótipo
};
void funcionario::exibe_func(void)
{
};
Nome da classe
Nome do método
73. Índice C++ parte 2
Classes
DADOS PRIVADOS E PÚBLICOS
Função Construtora e Destrutora
Sobrecarga de Operador
Funções e Dados-membro estáticos
Herança
Classe Amiga
74. Dados Públicos e Privados
Se não colocar o rótulo public, pressupõe-se que
todos os membros são privados
Sendo privados, os programas não podem acessar
os membros da classe usando o operador ponto
objeto.alguma_variável = valor
Somente as funções (métodos) de membro da
classe podem acessar os membros de classe
privados
75. Dados Públicos e Privados
Ex:
class funcionario {
public:
int atribui_valores(char*, long, float);
void exibe_funcinario(void);
private:
char nome[64];
long func_id;
float salario;
};
76. Índice C++ parte 2
Classes
Dados Privados e Públicos
FUNÇÃO CONSTRUTORA E DESTRUTORA
Sobrecarga de Operador
Funções e Dados-membro estáticos
Herança
Classe Amiga
77. Função Construtora
Métodos que facilitam aos programadores a
inicialização dos dados-membro da classe
Tem o mesmo nome da classe, porém, não
precede o nome dela com a palavra-chave
void
Não retorna tipo
É chamada quando se cria um objeto
78. Função Destrutora
É chamada para descartar um objeto,
liberando a memória que estava sendo
usada
Tem o mesmo nome da classe, porém,
precedido do caractere til (~)
Não retorna tipo, nem precede o nome dela
com a palavra-chave void
79. Índice C++ parte 2
Classes
Dados Privados e Públicos
Função Construtora e Destrutora
SOBRECARGA DE OPERADOR
Funções e Dados-membro estáticos
Herança
Classe Amiga
80. Sobrecarga de operador
Ao sobrecarregar um operador para uma
classe, especifica-se uma função que C++
chama toda vez que a classe usa o operador
sobrecarregado. O significado do operador
muda somente para a classe, não para o
programa todo.
81. Sobrecarga de operador
Exemplo:
void operator +(char *str) //na classe string
{ strcpy(data, str); }
string titulo(“aprendendo ”); //func. constr.
titulo + “C++”;
82. Índice C++ parte 2
Classes
Dados Privados e Públicos
Função Construtora e Destrutora
Sobrecarga de Operador
FUNÇÕES E DADOS –MEMBRO ESTÁTICOS
Herança
Classe Amiga
83. Funções e dados-membro estáticos
Para objetos de uma mesma classe
compartilharem um ou mais dados-membro:
public ou private:
static tipo membro_compartilhado;
Então, definir o membro como uma
variável global, fora da classe:
tipo nome_classe membro_compartilhado;
84. Funções e dados-membro estáticos
Se a classe define, por exemplo:
public:
static int conta-pagina; /*definido depois
como variável global*/
static void limpa_tela(void);
os membros declarados podem ser usados
pelo programa mesmo que não existam
objetos da classe.
85. Índice C++ parte 2
Classes
Dados Privados e Públicos
Função Construtora e Destrutora
Sobrecarga de Operador
Funções e Dados-membro estáticos
HERANÇA
Classe Amiga
86. Herança
É a capacidade de uma classe derivada
herdar as características de uma classe-base
existente.
A classe derivada acessa membros public
(todo o programa acessa) e membros
protected (só ela acessa) da classe-base.
87. Herança múltipla
Acontece quando uma classe deriva de mais de
uma classe-base.
Exemplo:
class computador : public tela_computador,
public placa_mae
Na derivação de uma classe por herança múltipla,
a construtora da classe derivada precisa chamar
funções construtoras para cada uma das classes-
base.
88. Cadeia de herança
Acontece quando uma classe é derivada de uma
classe-base que já foi derivada de uma ou mais
outras classes. Exemplo:
Tela_computador
Placa_mae
Computador Estacao_trabalho
Neste caso, a classe estacao_trabalho herda as
características das três classes.
89. Índice C++ parte 2
Classes
Dados Privados e Públicos
Função Construtora e Destrutora
Sobrecarga de Operador
Funções e Dados-membro estáticos
Herança
CLASSE AMIGA
90. Classe amiga
Permite o acesso aos membros privados
entre classes não-relacionadas
A classe cujos membros privados terão o
acesso permitido declara uma outra classe
como amiga na sua definição através do
comando friend
91. Restringindo o acesso de uma amiga
friend ProtótipoDaFunção
Onde ProtótipoDaFunção define que
funções a classe amiga terá acesso.