SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Autor: Maurício Moreira Neto
Universidade Federal do Ceará - UFC
Índice
 Tópicos para C:
1. Diretivas do C/C++
2. Variáveis
3. Constantes
4. Constantes de barra Invertida
5. Entrada e Saídas padronizadas
6. Operadores Aritméticos e Lógicos
7. Estrutura de Controle de fluxo
8. Vetores
9. Matrizes
10. Ponteiros
11. Abrindo e Fechando Arquivos
 Tópicos para C++:
1. Struct
2. Objeto e Classe
3. Funções e Classes “Friends”
4. Construtores/Destrutores
5. Herança
6. Herança Múltipla
7. Alocação Dinâmica em Memória
8. Polimorfismo
Breve história
 A linguagem C foi desenvolvida nos anos 70 por
Dennis Ritchie em um DEC PDP-11, usando o
Sistema Operacional UNIX.
 O C++ foi concebido após a detecção de algumas
limitações da linguagem C. Por isso, o estudioso
Bjarne Stroustrup acrescentou ao C novas intenções
e em 1983 o C++ foi criado.
Diretivas do C/C++
 São comandos que não são compilados, sendo
dirigidos ao pré-processador, que é executado pelo
compilador antes da executar o processo de
compilação propriamente dito.
 Todas as diretivas são inicializadas com #.
 Ex: #include
#ifdef
#define
Diretivas do C/C++
 #include – Diz ao compilador para incluir, na hora
compilação, um arquivo especificado.
Ex: #include <nome_arquivo> ou
#include “nome_arquivo”
- A diferença entre < > e “ ” é só a ordem de procura no
diretório.
Diretivas do C/C++
 # ifdef – É diretiva de compilação condicional.
Ex: #ifdef nome_arquivo
Sequencia_declarações
....
#endif
Variáveis
 Os tipos básicos de variáveis do C são: char, int, float, void
e double. Os long e short promovam tamanhos diferentes
de inteiros onde for preciso.
 Estrutura:
tipo_variavel lista_variaveis;
importante: O tipo de variável no C por default é o int.
Variáveis
 r
Variáveis
importante: Existe três tipos de lugares onde as variáveis
podem estar:
- Fora das funções do programa, são chamadas de var.
globais e pode ser usada em qualquer lugar no programa.
- Dentro de um bloco de código, são chamadas de var. locais
e só tem validade dentro de bloco onde foram declaradas.
- Na lista de parâmetros de uma função, são conhecidas
somente pela função onde são declaradas.
Constantes
 Constantes são valores que são mantidos fixos pelo
compilador, pode ser números e caracteres.
importante: Para inserir uma constante de
hexadecimais, basta colocar no começo “0x” e nas
constantes octais começasse em 0.
Constantes de barra invertida
 São códigos que facilitam a tarefa do programado.
A lista abaixo mostra alguns destes códigos:
Código Significado
b
f
n
r
a
0
Retrocesso(“back”)
Alimentação de folha (feed)
Nova linha (“new line”)
Retorno do carrier
Sinal sonoro (“beep”)
Nulo (0 em decimal)
Entradas e Saídas padronizadas
 O sistema de entrada e saída da linguagem C esta
estruturado na forma de uma biblioteca de funções. Na
linguagem C, um arquivo é entendido como um conceito
que pode ser aplicado a arquivos de disco, entre outros.
 Um fluxo é associado a um arquivo através da realização de
uma operação de abertura. Quando aberto, as informações
podem ser trocadas entre o arquivo e o programa.
Entradas e Saídas padronizadas
 Para ler e escrever strings:
- gets(): pede para que o usuário entre com uma string.
- puts(): coloca a string na tela.
- printf(): comando que imprime na tela, possui dois
componentes, primeiro é os caracteres a serem impressos e
o segundo é o comando de formato.
- scanf(): comando que recebe parâmetros. (também possui
dois parâmetros, primeiro é o tipo da variável e segundo é
o nome do parâmetro).
- ...
importante: o scanf recebe somente ponteiros como
parâmetros, isso significa que as variáveis que não sejam
ponteiros devem ser precedidas por &.
Entradas e Saídas padronizadas
 getch() e getche(): Espera o usuário digite uma
tecla e retorna esse caractere. A diferença entre
getche e getch é que o getche gera um “eco” na tela
antes de retornar a tecla.
importante: Elas se encontrão no arquivo conio.h e
não são definidas pelo padrão ANSI. São funções
apenas para compiladores do DOS.
Entradas e Saídas padronizadas
Código Formato
%c Um único caractere (char)
%i Um numero inteiro
%f Um ponto flutuante
%x Número octal
%s String
%p Ponteiro
%d Um número decimal (int)
Operadores aritméticos
 São usados para desenvolver operações matemáticas.
A tabela abaixo mostra os operadores do C:
Operador Função
+
-
*
/
%
++
--
Soma (inteira e ponto flutuante)
Subtração ou troca de sinal
Multiplicação
Divisão
Resto de divisão
Incremento
Decremento
Operadores Lógicos
 Realizam comparações entre variáveis.
&& AND(E) x && y x e y
|| OR(OU) x || y x ou y
! NOT(NÃO) x ! y x not y
Estruturas de controle de fluxos
 São comandos que da condições ao programador de
saltar ou repetir comandos. Sem elas o programa
executado teria de ser de cima para baixo através de
comando a comando.
 Serão vistos abaixo, alguns comandos mais
utilizados na linguagem de programação C/C++.
Estruturas de controle de fluxos
 Comando if : Condição de avaliação, se for zero, a declaração
não será executada.
 Estrutura:
if (condição) declaração;
Comando else : É o comando complementar do comando if.
Estrutura:
if (condição) declaração 1;
else declaração 2;
condição?
bloco 1 bloco 2
Estruturas de controle de fluxos
 Comando switch : Como o if , o switch também é um
comando de tomada de decisão. É utilizado para testa uma
variável em relação a diversos valores preestabelecidos.
 Estrutura:
switch (variavel)
{
case constante 1:
declaração 1;
break;
}
importante: Pode-se ter inúmeros casos e multi-
variaveis.
conjunto 1
conjunto N
conjunto 2
conjunto D
...
expressão
rotulo 1
rotulo N
rotulo D
rotulo 2
Estruturas de controle de fluxos
 Comando for : O comando for é uma estrutura de loops
de repetição. Ele repete a condição até que seja falsa.
 Estrutura:
for (inicialização;condição;incremento)
{
declaração;
}
Estruturas de controle de fluxos
 Loop infinito: é quando a condição do for é inexistente,
fazendo com que haja uma repetição infinita.
 Estrutura:
for (inicialização; ; incremento)
{
declaração;
}
importante: Para gerar tempos de espera, basta criar um
loop sem conteúdo(omitindo a declaração).
Estruturas de controle de fluxos
 Comando while : É uma estrutura que testa uma condição e gera
um loop até que esta condição seja falsa.
 Estrutura:
while (condição)
{
declaração;
}
bloco
condição?
V
F
Estruturas de controle de fluxos
 Comando break : Este comando quebra (interrompe) a
execução do loop.
 Comando continue : Este comando é o oposto do
break, quando este comando é encontrado, o loop pula
para a próxima interação.
Estruturas de controle de fluxos
 Comando do-while : É a mesma estrutura do while,
porém, este comando garante que a declaração execute
pelo menos um vez.
 Estrutura:
do{
declaração;
} while(condição);
bloco
condição? V
F
Estruturas de controle de fluxos
 Comando goto: É um comando de salto incondicional,
realiza um salto para um local especifico, determinado
pelo rótulo.
 Estrutura:
nome_rotulo:
...
goto nome_rótulo;
...
importante: deve-se declarar o nome do rótulo na posição
para qual vamos dar o salto seguido de :.
Vetores
 Vetores são matrizes unidimensionais e uma estrutura
de dados muito utilizada. É caracterizada por ter todos
os elementos pertencente ao mesmo tipo de dado.
 Estrutura:
tipo_variavel nome_variavel [tamanho];
Ex: float vetor[10];
 importante: lembrar que este vetor possui dados de 0-
19.
Matrizes
 São dados N-dimensionais.
 Estrutura:
tipo_variavel nome_variavel [tam1] [tam2]...[tam N] =
{lista_valores};
Ex: float matriz [2] [3] = {1,2,3,4,5,6};
importante: essa configuração diz que os valores 1,2,3 estão
na primeira linha e os valores 4,5,6 estão na segunda linha
(como uma matriz comum).
Matrizes - Bidimensionais
 São bidimensionais e a sua declaração é parecido
com a declaração de um vetor.
 Estrutura:
tipo_variavel nome_variavel [altura][largura];
importante: o índice a esquerda indica as linhas e a da
direita indica as colunas.
Matrizes - Strings
 São matrizes bidimensionais e se comportam como uma
lista de vetores.
 Estrutura:
char nome_variavel [numero_str][compr_strg];
importante: Para acessar uma string individual basta
determinar o índice.
Ex: char nome_variavel [indice];
Matrizes Multidimensionais
 Funciona basicamente como outro tipos de matrizes. O
índice que varia mais rapidamente é o índice da direita.
 Estrutura:
tipo_variavel nome_variavel [tam1][tam2]...[tamN];
ou
tipo_variavel nome_variavel [tam1][tam2]...[tamN] =
{valores};
Ponteiros
 Os ponteiros guardam endereços de memória. Ao
declarar um ponteiro no C, informamos ao compilador
para que tipo de variável vamos apontá-lo.
 Estrutura:
tipo_variavel *nome_variavel;
importante: O * faz com que o compilador saiba que
aquela variável não vai guardar um valor, mas sim um
endereço de tipo especificado.
Ponteiros
 importante: Todo ponteiro deve ser inicializado
(apontado para um lugar conhecido).
 O operador & é usado para saber o endereço de uma
variável.
 Estrutura:
int conta = 10;
int *pt;
pt = &conta;
Ponteiros
importante:
- Para igualar dois ponteiros basta fazer: p1 = p2.
- Para fazer com que a variável apontada de p1 tenha
o mesmo conteúdo da variável apontada em p2,
deve-se fazer: *p1 = *p2.
- Para incrementar o conteúdo da variável apontado
pelo ponteiro, basta fazer: (*p)++;
importante: Se você incrementar um *char ele anda
1 byte na memória...
Ponteiros (vetores)
 Estrutura:
nome_variavel[indice];
ou
*(nome_variavel+indice);
importante: o nome da variável que foi declarada é na
verdade um ponteiro para o tipo da variável da matriz. Pois
ele aloca na memória o espaço para a matriz e toma o nome
da variável (ponteiro), apontando para o primeiro elemento
da matriz.
Ponteiros (vetores)
importante: um ponteiro é uma variável, porem, o
nome de um vetor não é um vetor, logo não se altera
o endereço que é apontado pelo “nome do vetor”.
Ex:
int vetor[10];
int *ponto, i;
ponto = &i;
Abrindo e Fechando em Arquivo
 Abrindo Arquivo
- fopen : tem como função abertura de arquivos,
através de um ponteiro de um arquivo.
 Estrutura:
FILE *fopen (char *nome_arquivo, char* modo);
importante: o nome arquivo indica qual arquivo abrir e o
nome deve ser valido no SO, como também, que tipo de uso
fará do arquivo.
Abrindo e Fechando em Arquivo
 Fechando Arquivo
- exit : Esta função aborta a execução do programa. Pode
ser chamada em qualquer ponto no programa e faz com que
termine e retorne para o SO o código de retorno.
- fclose : Determina o arquivo a ser fechado.
 Estrutura:
void exit (int codigo_retorno);
int fclose (FILE * nome_arquivo);
importante: o exit() fecha todos os arquivos que um
programa que estiver aberto.
Abrindo e Fechando em Arquivo
 a
Abrindo e Fechando em Arquivo
 Escrevendo e Lendo Caracteres em Arquivo
- putc : É uma função de escrita de arquivos.
 Estrutura:
int putc (int ch, FILE *fp);
- getc : Retorna um caractere lido no arquivo.
 Estrutura:
int getc (FILE *fp);
Struct
 O struct é exatamente igual a uma classe. A única diferença é que o
direito de proteção "default" é public, ao contrário da classe onde é
private.
 Estrutura:
struct conta
{
float atualizacao(float saldo)
{
return saldo;
}
float deposita(float saldo, float num)
{
saldo -= num;
return saldo;
}
float saque(float saldo, float num)
{
saldo += num;
return saldo;
}
public:
float saldo, num;
};
Classe e Objeto
 O que é um objeto?
- Um objeto é entendido como uma entidade de dados dentro da
memória que, basicamente, deve ser responsável por seu conteúdo, ou
seja, um objeto deve ser capaz de gerenciar seu conteúdo
autonomamente, ou prover meios de outras entidades de código fazê-lo
de forma segura.
Classe e Objeto
 Uma das principais características da linguagem "C++" é o conceito de
objetos e de sua estrutura, a classe. Uma classe define um tipo de dados
abstrato que agrupa tanto campos de dados (da mesma forma que uma
estrutura) como rotinas.
 Uma classe é como uma declaração de tipo de dados. Assim como todas
as variáveis de um determinado tipo, todos os objetos de uma dada
classe possuem seus próprios campos de dados (atributos) e rotinas
(procedimentos), mas compartilham os nomes desses atributos e
procedimentos com os demais membros da mesma classe.
Classe
 Estrutura:
class nome_da_classe
{
public/private/protected:
tipo_argumento nome_ argumento;
assinatura_função(tipo_argumento_usado);
};
Tipo_de_retorno nome da classe::nome_da_função()
{
criação_da_função;
}
Classe
class calculadora
{
private:
int num;
public:
int calc_fat(int);
};
int calculadora::calc_fat(int)
{
int i;
for(i = num - 1; i > num; i--)
{
num = num * i;
}
}
Funções e Classes “Friends”
 Uma função que não é membro de uma classe pode acessar seus
componentes privados se for declarada como "friend" da classe.
 A grande utilidade de funções "friend" é permitir a comparação de
valores pertencentes a duas classes distintas.
 Existem também classes amigas. Uma classe amiga pode ter acesso
aos dados privados da classe que a declarou como amiga.
 A declaração "friend", embora em muitas situações seja um recurso
necessário, deve ser usada com cuidado visto que é uma forma de se
abrir exceções no "escudo" do encapsulamento das classes.
Construtores e Destrutores
 Construtor: É a função que é chamada sempre que é criado
um objeto de uma classe para fazer a inicialização.
 Destrutor: É a função que é chamada sempre que o escopo
de duração do objeto de uma classe encerra-se, fazendo a
"limpeza".
Construtores e Destrutores
 Estrutura:
class nome_classe
{
nome_classe(); construtor
~nome_classe(); destrutor
};
nome_classe::nome_classe()
{
inicializações;
}
Nome_classe::nome_classe()
{
}
Herança
 Ela fornece meios de promover uma extensão do código, a reutilização
e uma maior coerência lógica no modelo de implementação.
 Estas características nos possibilitam diversas vantagens,
principalmente quando o mantemos bibliotecas para uso futuro de
determinados recursos que usamos com muita frequência.
 Tome como exemplo uma classe “veiculo” que possui algumas
características inerentes a ele, e agora exista uma outra classe “carro”
que possua as mesmas características de “veiculo” mais as suas
características particulares .
Conclusão: Pode-se dizer que “carro” herda características básicas
de “veiculo”.
Herança
 importante: todos os elementos públicos (public) da
classe base se mantém públicos nas classes derivadas.
 imporante: todos os membros públicos da classe passam
a ser privados na classe derivada.
Herança Múltipla
 Um classe pode herdar atributos de mais de uma classe.
Para tal, se usa uma lista de entradas, separadas por
vírgulas, de classes com seus respectivos direitos de acesso,
na lista de classes base da classe derivada.
 Estrutura:
class classe_derivada: acesso classe_base1, acesso classe_base2,...
Alocação Dinâmica em Memória
Alocação Dinâmica de Vetores:
 Declara-se um vetor alocando-se uma região de memória suficiente
para armazenar a quantidade de elementos de um dado tipo que se
pretende e o endereço inicial desta área é armazenado em uma variável
ponteiro.
 O operador "new" aloca uma região de memória para conter a
estrutura de dados solicitada. Pode ser usada tanto para alocação de
vetores como de variáveis simples ou objetos. No caso de alocação de
vetores deve ser especificado o número de posições do vetor entre
colchetes após o tipo de dados base.
 importante: A liberação da área de memória alocada com "new" deve
ser feita com o uso do operador "delete".
Alocação Dinâmica em Memória
Alocação Dinâmica de Objetos:
 A única diferença entre a alocação dinâmica de uma variável
qualquer e a alocação dinâmica de um objeto, é que no caso
de objetos a utilização do operador "new" implicará na
ativação da função construtora e o uso do operador "delete"
na ativação da função destrutora.
Polimorfismo
 O polimorfismo é um conceito muito utilizado em programação
orientada objeto.
 Basicamente é o processo pelo qual diferentes implementações de
uma função que pode ser acessada pelo mesmo nome.
 O polimorfismo se caracteriza por "uma interface - múltiplos
métodos". Isto significa que se pode acessar da mesma maneira
uma classe geral de operadores, ainda que as ações específicas as
quais estão associadas a cada operação possam ser diferentes.
 O polimorfismo é suportado tanto em tempo de compilação como
em tempo de execução. A sobrecarga de operadores e funções é
um exemplo de polimorfismo em tempo de compilação.

Mais conteúdo relacionado

Mais procurados

Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem C
apolllorj
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
Mauro Pereira
 

Mais procurados (18)

Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem C
 
Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 
Visualg
VisualgVisualg
Visualg
 
Apresentação Linguagem C
Apresentação Linguagem CApresentação Linguagem C
Apresentação Linguagem C
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Perl From Vi, Part I
Perl From Vi, Part IPerl From Vi, Part I
Perl From Vi, Part I
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Programação em C
Programação em CProgramação em C
Programação em C
 
Linguagem C - Entrada e Saída
Linguagem C - Entrada e SaídaLinguagem C - Entrada e Saída
Linguagem C - Entrada e Saída
 
SubProgramas
SubProgramasSubProgramas
SubProgramas
 
Curso de Linguagem C
Curso de Linguagem CCurso de Linguagem C
Curso de Linguagem C
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Guia para traducao algoritmos x l ps
Guia para traducao algoritmos x l psGuia para traducao algoritmos x l ps
Guia para traducao algoritmos x l ps
 
Cap 2
Cap 2Cap 2
Cap 2
 
Java4
Java4Java4
Java4
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 

Semelhante a Aula de C e C++

Apostila da linguagem c
Apostila da linguagem cApostila da linguagem c
Apostila da linguagem c
ana mastrocola
 
Apostila da linguagem c
Apostila da linguagem cApostila da linguagem c
Apostila da linguagem c
ana mastrocola
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônica
Fabio Souza
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2
michellobo
 

Semelhante a Aula de C e C++ (20)

Cap 2
Cap 2Cap 2
Cap 2
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+c
 
Linguagem_C.pdf
Linguagem_C.pdfLinguagem_C.pdf
Linguagem_C.pdf
 
Java2
Java2Java2
Java2
 
Apostila da linguagem c
Apostila da linguagem cApostila da linguagem c
Apostila da linguagem c
 
Apostila da linguagem c
Apostila da linguagem cApostila da linguagem c
Apostila da linguagem c
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptx
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Aula 1
Aula 1Aula 1
Aula 1
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônica
 
2 controle fluxo
2 controle fluxo2 controle fluxo
2 controle fluxo
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Módulo 2 pascal
Módulo 2  pascalMódulo 2  pascal
Módulo 2 pascal
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2
 
Aula01
Aula01Aula01
Aula01
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
 

Aula de C e C++

  • 1. Autor: Maurício Moreira Neto Universidade Federal do Ceará - UFC
  • 2. Índice  Tópicos para C: 1. Diretivas do C/C++ 2. Variáveis 3. Constantes 4. Constantes de barra Invertida 5. Entrada e Saídas padronizadas 6. Operadores Aritméticos e Lógicos 7. Estrutura de Controle de fluxo 8. Vetores 9. Matrizes 10. Ponteiros 11. Abrindo e Fechando Arquivos  Tópicos para C++: 1. Struct 2. Objeto e Classe 3. Funções e Classes “Friends” 4. Construtores/Destrutores 5. Herança 6. Herança Múltipla 7. Alocação Dinâmica em Memória 8. Polimorfismo
  • 3. Breve história  A linguagem C foi desenvolvida nos anos 70 por Dennis Ritchie em um DEC PDP-11, usando o Sistema Operacional UNIX.  O C++ foi concebido após a detecção de algumas limitações da linguagem C. Por isso, o estudioso Bjarne Stroustrup acrescentou ao C novas intenções e em 1983 o C++ foi criado.
  • 4. Diretivas do C/C++  São comandos que não são compilados, sendo dirigidos ao pré-processador, que é executado pelo compilador antes da executar o processo de compilação propriamente dito.  Todas as diretivas são inicializadas com #.  Ex: #include #ifdef #define
  • 5. Diretivas do C/C++  #include – Diz ao compilador para incluir, na hora compilação, um arquivo especificado. Ex: #include <nome_arquivo> ou #include “nome_arquivo” - A diferença entre < > e “ ” é só a ordem de procura no diretório.
  • 6. Diretivas do C/C++  # ifdef – É diretiva de compilação condicional. Ex: #ifdef nome_arquivo Sequencia_declarações .... #endif
  • 7. Variáveis  Os tipos básicos de variáveis do C são: char, int, float, void e double. Os long e short promovam tamanhos diferentes de inteiros onde for preciso.  Estrutura: tipo_variavel lista_variaveis; importante: O tipo de variável no C por default é o int.
  • 9. Variáveis importante: Existe três tipos de lugares onde as variáveis podem estar: - Fora das funções do programa, são chamadas de var. globais e pode ser usada em qualquer lugar no programa. - Dentro de um bloco de código, são chamadas de var. locais e só tem validade dentro de bloco onde foram declaradas. - Na lista de parâmetros de uma função, são conhecidas somente pela função onde são declaradas.
  • 10. Constantes  Constantes são valores que são mantidos fixos pelo compilador, pode ser números e caracteres. importante: Para inserir uma constante de hexadecimais, basta colocar no começo “0x” e nas constantes octais começasse em 0.
  • 11. Constantes de barra invertida  São códigos que facilitam a tarefa do programado. A lista abaixo mostra alguns destes códigos: Código Significado b f n r a 0 Retrocesso(“back”) Alimentação de folha (feed) Nova linha (“new line”) Retorno do carrier Sinal sonoro (“beep”) Nulo (0 em decimal)
  • 12. Entradas e Saídas padronizadas  O sistema de entrada e saída da linguagem C esta estruturado na forma de uma biblioteca de funções. Na linguagem C, um arquivo é entendido como um conceito que pode ser aplicado a arquivos de disco, entre outros.  Um fluxo é associado a um arquivo através da realização de uma operação de abertura. Quando aberto, as informações podem ser trocadas entre o arquivo e o programa.
  • 13. Entradas e Saídas padronizadas  Para ler e escrever strings: - gets(): pede para que o usuário entre com uma string. - puts(): coloca a string na tela. - printf(): comando que imprime na tela, possui dois componentes, primeiro é os caracteres a serem impressos e o segundo é o comando de formato. - scanf(): comando que recebe parâmetros. (também possui dois parâmetros, primeiro é o tipo da variável e segundo é o nome do parâmetro). - ... importante: o scanf recebe somente ponteiros como parâmetros, isso significa que as variáveis que não sejam ponteiros devem ser precedidas por &.
  • 14. Entradas e Saídas padronizadas  getch() e getche(): Espera o usuário digite uma tecla e retorna esse caractere. A diferença entre getche e getch é que o getche gera um “eco” na tela antes de retornar a tecla. importante: Elas se encontrão no arquivo conio.h e não são definidas pelo padrão ANSI. São funções apenas para compiladores do DOS.
  • 15. Entradas e Saídas padronizadas Código Formato %c Um único caractere (char) %i Um numero inteiro %f Um ponto flutuante %x Número octal %s String %p Ponteiro %d Um número decimal (int)
  • 16. Operadores aritméticos  São usados para desenvolver operações matemáticas. A tabela abaixo mostra os operadores do C: Operador Função + - * / % ++ -- Soma (inteira e ponto flutuante) Subtração ou troca de sinal Multiplicação Divisão Resto de divisão Incremento Decremento
  • 17. Operadores Lógicos  Realizam comparações entre variáveis. && AND(E) x && y x e y || OR(OU) x || y x ou y ! NOT(NÃO) x ! y x not y
  • 18. Estruturas de controle de fluxos  São comandos que da condições ao programador de saltar ou repetir comandos. Sem elas o programa executado teria de ser de cima para baixo através de comando a comando.  Serão vistos abaixo, alguns comandos mais utilizados na linguagem de programação C/C++.
  • 19. Estruturas de controle de fluxos  Comando if : Condição de avaliação, se for zero, a declaração não será executada.  Estrutura: if (condição) declaração; Comando else : É o comando complementar do comando if. Estrutura: if (condição) declaração 1; else declaração 2; condição? bloco 1 bloco 2
  • 20. Estruturas de controle de fluxos  Comando switch : Como o if , o switch também é um comando de tomada de decisão. É utilizado para testa uma variável em relação a diversos valores preestabelecidos.  Estrutura: switch (variavel) { case constante 1: declaração 1; break; } importante: Pode-se ter inúmeros casos e multi- variaveis. conjunto 1 conjunto N conjunto 2 conjunto D ... expressão rotulo 1 rotulo N rotulo D rotulo 2
  • 21. Estruturas de controle de fluxos  Comando for : O comando for é uma estrutura de loops de repetição. Ele repete a condição até que seja falsa.  Estrutura: for (inicialização;condição;incremento) { declaração; }
  • 22. Estruturas de controle de fluxos  Loop infinito: é quando a condição do for é inexistente, fazendo com que haja uma repetição infinita.  Estrutura: for (inicialização; ; incremento) { declaração; } importante: Para gerar tempos de espera, basta criar um loop sem conteúdo(omitindo a declaração).
  • 23. Estruturas de controle de fluxos  Comando while : É uma estrutura que testa uma condição e gera um loop até que esta condição seja falsa.  Estrutura: while (condição) { declaração; } bloco condição? V F
  • 24. Estruturas de controle de fluxos  Comando break : Este comando quebra (interrompe) a execução do loop.  Comando continue : Este comando é o oposto do break, quando este comando é encontrado, o loop pula para a próxima interação.
  • 25. Estruturas de controle de fluxos  Comando do-while : É a mesma estrutura do while, porém, este comando garante que a declaração execute pelo menos um vez.  Estrutura: do{ declaração; } while(condição); bloco condição? V F
  • 26. Estruturas de controle de fluxos  Comando goto: É um comando de salto incondicional, realiza um salto para um local especifico, determinado pelo rótulo.  Estrutura: nome_rotulo: ... goto nome_rótulo; ... importante: deve-se declarar o nome do rótulo na posição para qual vamos dar o salto seguido de :.
  • 27. Vetores  Vetores são matrizes unidimensionais e uma estrutura de dados muito utilizada. É caracterizada por ter todos os elementos pertencente ao mesmo tipo de dado.  Estrutura: tipo_variavel nome_variavel [tamanho]; Ex: float vetor[10]; importante: lembrar que este vetor possui dados de 0- 19.
  • 28. Matrizes  São dados N-dimensionais.  Estrutura: tipo_variavel nome_variavel [tam1] [tam2]...[tam N] = {lista_valores}; Ex: float matriz [2] [3] = {1,2,3,4,5,6}; importante: essa configuração diz que os valores 1,2,3 estão na primeira linha e os valores 4,5,6 estão na segunda linha (como uma matriz comum).
  • 29. Matrizes - Bidimensionais  São bidimensionais e a sua declaração é parecido com a declaração de um vetor.  Estrutura: tipo_variavel nome_variavel [altura][largura]; importante: o índice a esquerda indica as linhas e a da direita indica as colunas.
  • 30. Matrizes - Strings  São matrizes bidimensionais e se comportam como uma lista de vetores.  Estrutura: char nome_variavel [numero_str][compr_strg]; importante: Para acessar uma string individual basta determinar o índice. Ex: char nome_variavel [indice];
  • 31. Matrizes Multidimensionais  Funciona basicamente como outro tipos de matrizes. O índice que varia mais rapidamente é o índice da direita.  Estrutura: tipo_variavel nome_variavel [tam1][tam2]...[tamN]; ou tipo_variavel nome_variavel [tam1][tam2]...[tamN] = {valores};
  • 32. Ponteiros  Os ponteiros guardam endereços de memória. Ao declarar um ponteiro no C, informamos ao compilador para que tipo de variável vamos apontá-lo.  Estrutura: tipo_variavel *nome_variavel; importante: O * faz com que o compilador saiba que aquela variável não vai guardar um valor, mas sim um endereço de tipo especificado.
  • 33. Ponteiros  importante: Todo ponteiro deve ser inicializado (apontado para um lugar conhecido).  O operador & é usado para saber o endereço de uma variável.  Estrutura: int conta = 10; int *pt; pt = &conta;
  • 34. Ponteiros importante: - Para igualar dois ponteiros basta fazer: p1 = p2. - Para fazer com que a variável apontada de p1 tenha o mesmo conteúdo da variável apontada em p2, deve-se fazer: *p1 = *p2. - Para incrementar o conteúdo da variável apontado pelo ponteiro, basta fazer: (*p)++; importante: Se você incrementar um *char ele anda 1 byte na memória...
  • 35. Ponteiros (vetores)  Estrutura: nome_variavel[indice]; ou *(nome_variavel+indice); importante: o nome da variável que foi declarada é na verdade um ponteiro para o tipo da variável da matriz. Pois ele aloca na memória o espaço para a matriz e toma o nome da variável (ponteiro), apontando para o primeiro elemento da matriz.
  • 36. Ponteiros (vetores) importante: um ponteiro é uma variável, porem, o nome de um vetor não é um vetor, logo não se altera o endereço que é apontado pelo “nome do vetor”. Ex: int vetor[10]; int *ponto, i; ponto = &i;
  • 37. Abrindo e Fechando em Arquivo  Abrindo Arquivo - fopen : tem como função abertura de arquivos, através de um ponteiro de um arquivo.  Estrutura: FILE *fopen (char *nome_arquivo, char* modo); importante: o nome arquivo indica qual arquivo abrir e o nome deve ser valido no SO, como também, que tipo de uso fará do arquivo.
  • 38. Abrindo e Fechando em Arquivo  Fechando Arquivo - exit : Esta função aborta a execução do programa. Pode ser chamada em qualquer ponto no programa e faz com que termine e retorne para o SO o código de retorno. - fclose : Determina o arquivo a ser fechado.  Estrutura: void exit (int codigo_retorno); int fclose (FILE * nome_arquivo); importante: o exit() fecha todos os arquivos que um programa que estiver aberto.
  • 39. Abrindo e Fechando em Arquivo  a
  • 40. Abrindo e Fechando em Arquivo  Escrevendo e Lendo Caracteres em Arquivo - putc : É uma função de escrita de arquivos.  Estrutura: int putc (int ch, FILE *fp); - getc : Retorna um caractere lido no arquivo.  Estrutura: int getc (FILE *fp);
  • 41. Struct  O struct é exatamente igual a uma classe. A única diferença é que o direito de proteção "default" é public, ao contrário da classe onde é private.  Estrutura: struct conta { float atualizacao(float saldo) { return saldo; } float deposita(float saldo, float num) { saldo -= num; return saldo; } float saque(float saldo, float num) { saldo += num; return saldo; } public: float saldo, num; };
  • 42. Classe e Objeto  O que é um objeto? - Um objeto é entendido como uma entidade de dados dentro da memória que, basicamente, deve ser responsável por seu conteúdo, ou seja, um objeto deve ser capaz de gerenciar seu conteúdo autonomamente, ou prover meios de outras entidades de código fazê-lo de forma segura.
  • 43. Classe e Objeto  Uma das principais características da linguagem "C++" é o conceito de objetos e de sua estrutura, a classe. Uma classe define um tipo de dados abstrato que agrupa tanto campos de dados (da mesma forma que uma estrutura) como rotinas.  Uma classe é como uma declaração de tipo de dados. Assim como todas as variáveis de um determinado tipo, todos os objetos de uma dada classe possuem seus próprios campos de dados (atributos) e rotinas (procedimentos), mas compartilham os nomes desses atributos e procedimentos com os demais membros da mesma classe.
  • 44. Classe  Estrutura: class nome_da_classe { public/private/protected: tipo_argumento nome_ argumento; assinatura_função(tipo_argumento_usado); }; Tipo_de_retorno nome da classe::nome_da_função() { criação_da_função; }
  • 45. Classe class calculadora { private: int num; public: int calc_fat(int); }; int calculadora::calc_fat(int) { int i; for(i = num - 1; i > num; i--) { num = num * i; } }
  • 46. Funções e Classes “Friends”  Uma função que não é membro de uma classe pode acessar seus componentes privados se for declarada como "friend" da classe.  A grande utilidade de funções "friend" é permitir a comparação de valores pertencentes a duas classes distintas.  Existem também classes amigas. Uma classe amiga pode ter acesso aos dados privados da classe que a declarou como amiga.  A declaração "friend", embora em muitas situações seja um recurso necessário, deve ser usada com cuidado visto que é uma forma de se abrir exceções no "escudo" do encapsulamento das classes.
  • 47. Construtores e Destrutores  Construtor: É a função que é chamada sempre que é criado um objeto de uma classe para fazer a inicialização.  Destrutor: É a função que é chamada sempre que o escopo de duração do objeto de uma classe encerra-se, fazendo a "limpeza".
  • 48. Construtores e Destrutores  Estrutura: class nome_classe { nome_classe(); construtor ~nome_classe(); destrutor }; nome_classe::nome_classe() { inicializações; } Nome_classe::nome_classe() { }
  • 49. Herança  Ela fornece meios de promover uma extensão do código, a reutilização e uma maior coerência lógica no modelo de implementação.  Estas características nos possibilitam diversas vantagens, principalmente quando o mantemos bibliotecas para uso futuro de determinados recursos que usamos com muita frequência.  Tome como exemplo uma classe “veiculo” que possui algumas características inerentes a ele, e agora exista uma outra classe “carro” que possua as mesmas características de “veiculo” mais as suas características particulares . Conclusão: Pode-se dizer que “carro” herda características básicas de “veiculo”.
  • 50. Herança  importante: todos os elementos públicos (public) da classe base se mantém públicos nas classes derivadas.  imporante: todos os membros públicos da classe passam a ser privados na classe derivada.
  • 51. Herança Múltipla  Um classe pode herdar atributos de mais de uma classe. Para tal, se usa uma lista de entradas, separadas por vírgulas, de classes com seus respectivos direitos de acesso, na lista de classes base da classe derivada.  Estrutura: class classe_derivada: acesso classe_base1, acesso classe_base2,...
  • 52. Alocação Dinâmica em Memória Alocação Dinâmica de Vetores:  Declara-se um vetor alocando-se uma região de memória suficiente para armazenar a quantidade de elementos de um dado tipo que se pretende e o endereço inicial desta área é armazenado em uma variável ponteiro.  O operador "new" aloca uma região de memória para conter a estrutura de dados solicitada. Pode ser usada tanto para alocação de vetores como de variáveis simples ou objetos. No caso de alocação de vetores deve ser especificado o número de posições do vetor entre colchetes após o tipo de dados base.  importante: A liberação da área de memória alocada com "new" deve ser feita com o uso do operador "delete".
  • 53. Alocação Dinâmica em Memória Alocação Dinâmica de Objetos:  A única diferença entre a alocação dinâmica de uma variável qualquer e a alocação dinâmica de um objeto, é que no caso de objetos a utilização do operador "new" implicará na ativação da função construtora e o uso do operador "delete" na ativação da função destrutora.
  • 54. Polimorfismo  O polimorfismo é um conceito muito utilizado em programação orientada objeto.  Basicamente é o processo pelo qual diferentes implementações de uma função que pode ser acessada pelo mesmo nome.  O polimorfismo se caracteriza por "uma interface - múltiplos métodos". Isto significa que se pode acessar da mesma maneira uma classe geral de operadores, ainda que as ações específicas as quais estão associadas a cada operação possam ser diferentes.  O polimorfismo é suportado tanto em tempo de compilação como em tempo de execução. A sobrecarga de operadores e funções é um exemplo de polimorfismo em tempo de compilação.