Grupo Paralelismo – Unesp RC
C / C++
Juliana Danelute
Rafael Amaro
Saulo Ricardo Guerra
Selma Haruyo Shimono
Grupo Paralelismo - Unesp RC
Parte 1 – C
Parte 2 – C++
PARTE 1
C
Índice C
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
parte 1
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.
Tipos de Dados
Char
Int ( Integer )
Float ( Real )
Double
Void
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
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
Especificadores de tipo de classe de armazenamento
EspDeArmazenamento tipo NomeDaVariável
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 )
Operadores e Atribuição
= comando de atribuição
- Menos
+ Mais
* Multiplicação
/ Divisão
% Resto da Divisão
-- Decremento
++ Incremento
Operadores Relacionais
> Maior
< Menor
>= Maior igual
<= Menor igual
= = Igual
!= Diferente
Operadores Lógicos
&& And
|| Or
! Not
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.
Índice C
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
parte 1
Comando If
If ( expressão ) comando;
Else comando;
ex: if (x > y) x = y;
else x = 0;
Comando Switch
Switch ( expressão ){
Case Comando1:
seqüência de comandos
Break
.....
Default
seqüência de comandos
}
Exemplo
Switch ( x ){
Case 1: escreve(x);
break;
Case 2: Registra(x);
break;
Default
apaga(x);
}
Comando For
For( inicialização; condição; Incremento)
comando;
For( i = 0;i < 100; i++) j += i;
Comando while
While ( condição ) comando;
ex: while (x<12) {
y += x
y = y*y }
Comando do-while
Do {
comando;
} while ( condição );
Do {
y += x;
} while (x < 12);
Índice C
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
parte 1
Matrizes Unidimensionais
Matrizes unidimensionais
Tipo NomeVar[tamanho]
Ponteiros para matrizes
Apenas o nome leva ao 1º elemento
var == &var[0]
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
Strings
Matriz de caracteres terminados com o
caractere nulo “/0”
Constantes strings são declarados entre
aspas duplas
ex: “Olha eu aqui!”
Matrizes Bidimensionais
tipo NomeVar [tamanho][tamanho]
Matrizes multidimensionais
tipo NomeVar[tamanho][tamanho]...[tamanho]
Índice C
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
parte 1
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”
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
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];
Ponteiros - Continuação
Inicialização de Ponteiros: é necessário para
evitar erros
Alocação Dinâmica
 Malloc(): aloca memória
 Free(): libera memória
Índice C
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
parte 1
Funções
EspTipo Nome ( ListaParâmetros ) {
corpo da função
}
C não aceita funções dentro de funções
Parâmetros Formais
Chamadas por valor
ex: func1(int x)
Chamadas por referência
ex: func1(int *x)
Funções
Programa principal
Arquivo separado
Biblioteca
Índice C
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
parte 1
Tipos de dados do usuário
Estrutura (Struct)
Campo de bit
União (Union)
Enumeração
typedef
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
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
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
Enumerações
enum Nome {ListaEnumeração} NomeVar
É possível atribuir valores a seqüência criada
Typedef
Typedef tipo nome
Onde nome é o novo nome do tipo
Índice C
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
parte 1
E/S pelo Console
Lendo:
Escrevendo:
Getch();
Putchar();
ch=getch();
putchar(ch);
Gets();
Puts();
gets(str);
puts(“alo”);
Scanf();
Printf();
scanf(“%t”,&variável); printf(“texto %t texto”,
variável);
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
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 %
Índice C
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
parte 1
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.
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.
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;
Funções
Fopen() – abre arquivo
FILE *fopen(const *char nomearq,
const *char modo);
Fclose() – fecha arquivo
int fclose(FILE *fp);
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.
Funções de caractere
putc() ou fputc()
int putc( int ch, FILE *fp);
getc() ou fgetc()
int getc( FILE *fp);
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)
Funções de string
fputs()
int fputs (const char *str, FILE *fp);
fgets()
char *fgets (char *str, int lenght,FILE *fp);
remove() e fflush()
remove() – apaga arquivo
int remove (char *filename);
fflush() – esvazia stream
int fflush (FILE *fp);
fread() e fwrite()
fread()
size_t fread (void *buffer, size_t
numbytes, size_t count, FILE *fp);
fwrite()
size_t fwrite (void *buffer, size_t
numbytes, size_t count, FILE *fp);
fprintf() e fscanf()
fprintf()
int fprintf (FILE *fp, const char
*control_string,...);
fscanf()
int fscanf (FILE *fp, const char
*control_string,...);
fseek()
fseek()
int fseek (FILE *fp, long
numbytes, int origin);
Origin
Nome da macro
Inicío do arquivo
Posição atual
Final do arquivo
SEEK_SET
SEEK_CUR
SEEK_END
Índice C
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
parte 1
Diretivas de pré-processador
#define
#include
#error
#undef
Índice C
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
parte 1
Comentários
/* ... */
ex: /* Isto é um comentário! */
Obs: Todos os comentários são ignorados pelo
compilador C.
Índice C
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
parte 1
Protótipo de função
TipoDeRetorno NomeDaFunção
(DeclaraçãoDeParâmetros);
Arquivos-cabeçalho
Cabeçalho = header ; arquivos “.h”
Contêm protótipos de funções
Código em outro programa
Compilação conjunta (projeto)
Ex: stdio.h, conio.h
PARTE 2
C ++
Índice C++
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
parte 2
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
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
Classes de C++ - Estrutura
Class nome_classe {
tipo dado_membro;
void exibe_membro;
};
// Dados do Objeto
// Métodos
// No programa principal
Nome_classe objeto_um, objeto_dois;
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
Classes de C++ - Métodos
Ex: class funcionario {
void exibe_func(void); //Protótipo
};
Nome do método
void funcionario::exibe_func(void)
{
Nome da classe
};
Índice C++
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
parte 2
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
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;
};
Í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
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
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
Índice C++
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
parte 2
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.
Sobrecarga de operador
Exemplo:
void operator +(char *str) //na classe string
{ strcpy(data, str); }
string titulo(“aprendendo ”); //func. constr.
titulo + “C++”;
Í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
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;
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.
Índice C++
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
parte 2
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.
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 classesbase.
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
Computador
Estacao_trabalho
Placa_mae
Neste caso, a classe estacao_trabalho herda as
características das três classes.
Índice C++
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
parte 2
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
Restringindo o acesso de uma amiga
friend ProtótipoDaFunção
Onde ProtótipoDaFunção define que
funções a classe amiga terá acesso.
Bibliografia
Schildt, Herbert
C, Completo e Total; 1990; Editora Makron
Books
Jamsa, Kris
Aprendendo C++; 1999; Editora Makron
Books
Download

C/C++ - Unesp