Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Linguagem de Linguagem de Programação IProgramação IProgramação IProgramação I
Carlos Eduardo Batista
Centro de Informática - [email protected]
� Motivação para o uso de C++ para o aprendizado de POO
� Quando usar C e quando usar C++
� C++ versus Java
� Sintaxe básica de C++
� Ambientes de desenvolvimento C++
C++ e POOC++ e POO2
Motivação para o uso de C++Motivação para o uso de C++3
� Aprendizado incremental (a partir de C)
� Controle de recursos e desempenho◦ Gerência de memória “manual”
◦ Abstrações POO + Responsabilidade
� Maior controle da compilação
� Aprender C++ facilita o aprendizadoposterior de Java
MotivaçãoMotivação parapara o o usouso de C++de C++
posterior de Java
� Mais fácil de se otimizar o desempenho
� C++ não é linguagem para preguiçosos
4
� C◦ Código de baixo nível (drivers, kernel)◦ Dispositivos embarcados (suporte)◦ Fortes requisitos de desempenho*
� C++◦ Sistemas de infraestrutura ◦ 90% dos jogos são em C++◦ Sistemas operacionais (Windows, *nix)
Quando usar C e quando usar C++Quando usar C e quando usar C++
◦ Sistemas operacionais (Windows, *nix)
� Onde C/C++ não são populares...◦ Dispositivos móveis (iOS e Android)◦ Web
5
� Padronização◦ C++ � ISO/IEC 14882
� ISO/IEC JTC1/SC22/WG21 committee
� C++ 11
◦ Java� Java Language Specification (Oracle)
C++ versus JavaC++ versus Java6
� C++◦ Estende C (linguagem imperativa/procedural)◦ Acrescenta suporte a POO de tipagem estática
� Tratamento de exceções� Gerenciamento de escopo� Metaprogramação (templates)� Biblioteca padrão (STD) � Write once, compile anywhere (WOCA)
� Java
C++ versus JavaC++ versus Java
� Java� Sintaxe fortemente baseada em C/C++� Máquina virtual (JVM)� Concorrência� JNI – Java Native Interface� Write once, run anywhere (WORA)
7
� Assimilam alguns conceitos de POO de forma diferente
� http://en.wikipedia.org/wiki/Comparison_of_Java_and_C++
C++ versus JavaC++ versus Java8
� Hello World
� Declarações
� I/O
� De Structs em C a Classes em C++
Sintaxe básica de C++Sintaxe básica de C++9
#include <iostream> // incluir biblioteca de IO
int main() // função onde o programa é iniciado {
cout << "Hello World"; // exibe "Hello World" return 0; // devolve ao SO. o valor 0 (sucesso)
}
Sintaxe básica de C++Sintaxe básica de C++10
� Declarações◦ Em ANSI C as declarações antecedem as instruções
◦ Em C99 e C++ as declarações e instruções podem se misturar
◦ Declarações na condição de uma instrução do tipo if
Serve como uma restrição de escopo (o bloco
Sintaxe básica de C++Sintaxe básica de C++
� Serve como uma restrição de escopo (o bloco definido pelo if)
11
double g(int a, double d){return a * d;
}void f(double p){
int i = 0; double result;
//...if (p <= 10.0) i ++;
Sintaxe básica de C++Sintaxe básica de C++12
if (p <= 10.0) i ++; //...
result = g(i,p); }
int main(){f(5.0);
}
double g(int a, double d){return a * d;
}void f(double p){
int i = 0;
// ...if (p <= 10.0) i++; // ...
double result = g(i,p); //Declara e usa result
Sintaxe básica de C++Sintaxe básica de C++13
}
int main(){f(5.0);
}
� Declaração dentro de if◦ Atribuição deve iniciar condição
� Declaração em outras instruções/laços
// se get() retorna valor diferente de NULL// realiza instrução w->fire()if(weapon *w = get()) {
w->fire();}
Sintaxe básica de C++Sintaxe básica de C++
� Declaração em outras instruções/laços
14
if(int i = value) ...;for(...; int i = value; ...) ...;switch(int i = value) ...;while(int i = value) ...;
� Entrada e Saída em C++◦ <ostream> e <istream>
� Operadores ◦ >> (pegar de)
◦ << (por em)
� printf e scanf◦ Não são generalizáveis para tipos definidos
Sintaxe básica de C++Sintaxe básica de C++
◦ Não são generalizáveis para tipos definidos pelo usuário
15
� cin – entrada padrão
� cout – saída padrão
� cerr – saída de erro padrão
� Estados◦ stream.good()
◦ stream.eof()
◦ stream.fail()
Sintaxe básica de C++Sintaxe básica de C++
◦ stream.fail()
◦ stream.bad()
16
#include <iostream>#include <string>
using namespace std;
int main(){int i;
while (cin >> i) // boolean - conversão implícitacout << 2*i << " ";
Sintaxe básica de C++Sintaxe básica de C++17
cout << "The End";
}
� Manipuladores◦ Aceitos pelos operadores de E/S << e >>
◦ Altera o estado do stream
◦ Ponteiro para uma função#include <iostream>#include <iomanip>#include <string>
using namespace std ;
Sintaxe básica de C++Sintaxe básica de C++18
using namespace std ;
int main(){
cout << 17 << endl << showbase<< hex << 17 << endl<< oct << 17 << endl;
}
//17//0x11//021
#include <iostream>#include <iomanip>#include <string>
using namespace std;
int main(){double d = 3.12345678;
cout << d << endl<< scientific << d << endl
//3.12346//3.123457e+00//######3.1234567800
Sintaxe básica de C++Sintaxe básica de C++19
<< scientific << d << endl<< fixed<< setprecision(10) << setfill('#') << setw(18) << d << endl;
}
� De estruturas a classes...
� Definir uma estrutura genérica que depois pode ter algumas de suas partes modificadas
� Hierarquia “tipo de”
� Ponteiros para funções
Antes de nos aprofundarmos nos
Sintaxe básica de C++Sintaxe básica de C++
� Antes de nos aprofundarmos nos conceitos do paradigma OO...
20
� Definindo classes/objetos em C++
� Um objeto é uma instância de uma classe e referencia algo (delimitado) na memória
� Declarando classes em C++
� Atributos
� Funções membro (métodos)
Sintaxe básica de C++Sintaxe básica de C++21
class Casa{public:
int numero, numQuartos; bool jardim;
};
main(){
Casa minhaCasa ;
Sintaxe básica de C++Sintaxe básica de C++22
Casa minhaCasa ;minhaCasa.numero=500; minhaCasa.numQuartos=4;minhaCasa.jardim=1;return 0;
}
class Retangulo{public:
int altura, largura;int area(){
return altura*largura;}
};main(){
Sintaxe básica de C++Sintaxe básica de C++23
{Retangulo r;r.altura=5;r.largura=2;cout << r.area();return 0;
}
class Retangulo{public:
int altura, largura;int area();
};int Retangulo::area()
{return altura*largura;
}
Sintaxe básica de C++Sintaxe básica de C++24
main(){
Retangulo r;r.altura=5;r.largura=2;cout << r.area();return 0;
}
� Construtores e inicialização de variáveis de um objeto◦ Variáveis necessárias para a realização de funcionalidades oferecidas pelo objeto
� Para cada membro (instância) uma inicialização distinta
Sintaxe básica de C++Sintaxe básica de C++25
class Retangulo{private:
int altura, largura;public:
Retangulo(int a, int l) {altura=a;largura=l;
}int area() {
return altura*largura;
Sintaxe básica de C++Sintaxe básica de C++26
return altura*largura;}
};main() {
Retangulo r(5, 2);cout << r.area();return 0;
}
� Ambientes de desenvolvimento C++
� Fundamentação de Orientação a Objetos (OO).
� Modelagem de sistemas orientada a objetos usando C++
Próxima aulaPróxima aula27
� http://www.cplusplus.com/doc/tutorial/
� http://gillius.org/ooptut/
� http://people.cs.aau.dk/~normark/ap/basic-facilities.html
� http://linuxgazette.net/issue55/williams.html
ReferênciasReferências28
Linguagem de Linguagem de Programação IProgramação IProgramação IProgramação I
Carlos Eduardo Batista
Centro de Informática - [email protected]