Programação C++
Programação C++
 Uma linguagem em 3 níveis
 Programação Orientada a Objetos
 Predefinição de Parâmetros
 Redefinição de Operadores
 Templates
 STL
Uma linguagem em 3 níveis
 Baixo nível: C++ com Assembly
extern int errno;
int funcname(int arg1, int *arg2, int arg3) {
long __res;
__asm__ volatile
("movl $128, %%eax;" // chamada do siostema
"movl %1, %%ebx;" // arg1
"movl %2, %%ecx;" // arg2
"movl %3, %%edx;" ;// arg3
"int $0x80;" // requisita permissao ao sistema
"movl %%eax, %0" // salva o resultado
: "=m" (__res) /* bind %0 */
: "m" (arg1), "m" ((long) arg2), "m" (arg3)
: "%eax","%ebx","%ecx","%edx");
// caso de erro o sistema mais retornar um numero negativo que
sera armazenado na var global errno
if ((unsigned long)(__res) >= (unsigned long)(-125)) { \
errno = (int) -(__res); \
__res = -1; \
}
return (int)__res;
}
Uma linguagem em 3 níveis
 Médio Nível: C++ estruturado (C)
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
for(register unsigned char i = 0 ; i <= 10 ; i++)
{
if(i % 2 == 0)
{
cout << (int) i << " ";
}
}
return 0;
}
Uma linguagem em 3 níveis
 Alto Nível: Orientação a Objetos
class Pessoa {
private:
int idade;
public:
inline void setIdade(int idade) { this->idade = idade; }
inline int getIdade(void) { return this->idade; }
};
int main(int argc, char **argv) {
Pessoa p;
p.setIdade(30);
cout << p.getIdade() << endl;
return 0;
}
Programação Orientada a
Objetos
 Mais claro e organizado
 Herança
Mais claro e organizado
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <time.h>
using namespace std;
class Dado {
public:
int main(int argc, char **argv) {
int valor;
short int dado1, dado2, soma;
int sorteia(void) {
return valor = (rand() % 6) + 1;
srand (time(NULL));
}
dado1 = (short int)
(rand() % 6) + 1;
dado2 = (short int)
(rand() % 6) + 1;
soma = dado1 + dado2;
printf("%d\n", dado1);
printf("%d\n", dado2);
printf("%d\n", soma);
return 0;
}
Dado() {
srand (time(NULL));
valor = 0;
}
};
int main(int argc, char **argv) {
Dado dado1,dado2;
cout << dado1.sorteia() << endl;
cout << dado2.sorteia() << endl;
cout << dado1.valor+dado2.valor << endl;
return 0;
}
Predefinição de Parâmetros
#include <iostream>
using namespace std;
double soma(double a, double b = 1) {
return a + b;
}
int main(int argc, char **argv) {
cout << soma(4,6) << endl;
cout << soma(2)
<< endl;
return 0;
}
Redefinição de Operadores
#include <iostream>
using namespace std;
class A {
public:
double val;
double operator+(double b) {
return val-b;
}
};
int main(void) {
A a;
a.val = 4;
cout << (a + 1) << endl; // imprime 3
return 0;
}
Templates
#include <iostream>
using namespace std;
template<class Type>
void imprime(Type p) {
cout << p << endl;
}
int main(void) {
imprime(1);
imprime("gdp");
return 0;
}
Biblioteca STL
#include <iostream>
#include <deque>
using namespace std;
#include <iostream>
#include <deque>
using namespace std;
// Deque como pilha:
int main (void) {
deque<char> d;
// Deque como fila
int main (void) {
deque<char> d;
}
d.push_back('a');
d.push_back('b');
d.push_back('c');
d.push_back('d');
d.push_back('a');
d.push_back('b');
d.push_back('c');
d.push_back('d');
while(!d.empty()) {
cout << d.back() << " ";
d.pop_back();
}
return 0;
while(!d.empty()) {
cout << d.front() << " ";
d.pop_front();
}
return 0;
}
Download

Apresentação do dia 24/10/2008