Вы находитесь на странице: 1из 49

PCS3111

Laboratrio de Programao
Orientada a Objetos para
Engenharia Eltrica

Aula 1: Introduo

Escola Politcnica da Universidade de So Paulo


Agenda
1. Informaes gerais sobre a disciplina
2. Viso geral da OO
3. Viso geral da linguagem C++
4. cin e cout
5. string
6. Programa bsico em C++
7. Apresentao do ambiente de programao
8. Ferramentas e processo de compilao

PCS / EP / USP 2017 PCS 3111 Aula 1 2


Informaes gerais sobre a
disciplina

PCS / EP / USP 2017 PCS 3111 Aula 1 3


Objetivos
Conceitos de Orientao a Objetos (OO)
Aspectos Bsicos de Programao
Estilo de cdigo
Programao defensiva e tratamento de erros
Manipulao de arquivos
Apresentao da Linguagem C++
Problemas de Engenharia Eltrica
Smart Grid (Redes Inteligentes)
https://www.smartgrid.gov/files/sg_introduction.pdf

PCS / EP / USP 2017 PCS 3111 Aula 1 4


Smart Grid
Broker Regulatory
Agency

A
B C
D

Consumer

Transmission/
Distribution

PCS / EP / USP 2017 PCS 3111 Aula 1 5


Generator Prosumer Prosumer
Programa
Semana Aula Assunto
01-07/08 1 Introduo
08-14/08 2 Ponteiros, Testes e Depurao
15-21/08 3 Conceitos Bsicos de OO
22-28/08 4 Encapsulamento
30/08 P1
04-08/09 Semana da Ptria
14-20/09 5 Construtor e Destrutor
21-27/09 6 Herana e Polimorfismo I
28/09-04/10 7 Herana e Polimorfismo II
05-11/10 8 Classe Abstratas e Herana Mltipla
18/10 P2
23-27/10 9 Programao Defensiva
06/11-10/11 10 Persistncia em Arquivos
11/11+21/11-24/11 11 Namespace e STL
27/11-01/12 12 Tpicos Especiais
06/12 P3
13/12 PSUB

PCS / EP / USP 2017 PCS 3111 Aula 1 6


Organizao
Apresentaes e material no Moodle do Stoa
http://disciplinas.stoa.usp.br

Professores
Fbio Levy Siqueira T4T
Jaime Simo Sichman (coordenador) T4M
Kechi Hirama T3T
Lucia Vilela Leite Filgueiras T2M/T2T
Maria Alice Grigas Ferreira T5M
Pedro Luiz Pizzigatti Corra T6T
Reginaldo Arakaki T5T
Solange Nice Alves da Silva T6M
PCS / EP / USP 2017 PCS 3111 Aula 1 7
Organizao

Monitores / Tcnicos

Igor Conrado Alves de Lima


Mrcio Fernando Stabile Jr.
Michelet del Carpio Chavez
Victor Alberto Romero

PCS / EP / USP 2017 PCS 3111 Aula 1 8


Bibliografia
Bsica
BUDD, T. An Introduction to Object-Oriented
Programming. 3rd Edition. Addison-Wesley. 2001.
LAFORE, R. Object-Oriented Programming in
C++. 4th Edition. SAMS. 2002.
SAVITCH, W. C++ Absoluto. Addison-Wesley. 2004.

Complementar
STROUSTRUP, B. The C++ Programming
Language. 4th Edition. Addison-Wesley, 2013.

PCS / EP / USP 2017 PCS 3111 Aula 1 9


Atividades
As atividades realizadas no curso sero as seguintes:
Em sala de aula
Teoria 50min
Prtica = 100min
Exerccios individuais
Entregues no final da aula
Correo Automtica (Sharif Judge) e nota de
acompanhamento pelo professor
Fora de sala de aula
3 EPs
Realizado em duplas
Correo Automtica (Sharif Judge) e nota adicional
pelos monitores
PCS / EP / USP 2017 PCS 3111 Aula 1 10
Exerccios em Aula
A submisso dos exerccios ser realizada do
seguinte modo:
Abertura da submisso:
1 bloco (aulas 1 a 4): ltimos 50 minutos da aula
2 e 3 blocos (aulas 5 a 12): ltimos 20 minutos da aula

Limite de 3 (trs) submisses sem penalizao


Para cada submisso subsequente, a nota mxima do exerccio
ser 2/3 da anterior:
Exemplo: 4. Submisso, nota mxima 6.7
5. Submisso, nota mxima 4.4
...

PCS / EP / USP 2017 PCS 3111 Aula 1 11


Exerccios Programa
Realizado em duplas
Haver 3 exerccios
Desenvolvimento incremental
Integrao com a disciplina Introduo Engenharia
Eltrica

PCS / EP / USP 2017 PCS 3111 Aula 1 12


Avaliao

MF = (2*ME + 3*MEP + 5*MP) / 10


ME = (E1 + ... + E11) / 11
onde Ei = ki * AUT,
ki = nota de acompanhamento, ki {0, 0.8, 0.9, 1.0}
AUTi = nota da correo automtica
MEP = (EP1 + EP2 + 2*EP3) / 4
onde EPi = 0.3 * qi + 0.7 * AUT,
qi = nota de especificao/qualidade/interface
AUTi = nota da correo automtica
MP = (P1 + P2 + 2*P3) / 4

Prova Substitutiva fechada: 13/12/17


PCS / EP / USP 2017 PCS 3111 Aula 1 13
Cdigo de tica da USP
Disponvel em
http://www.mp.usp.br/sites/default/files/arquivosan
exos/codigo_de_etica_da_usp.pdf

Art. 23 - E vedado aos membros do corpo


discente e demais alunos da Universidade:
I []
II - lancar mao de meios e artifcios que possam frau-
dar a avaliacao do desempenho, seu ou de outrem,
em atividades acadmicas, culturais, artsticas,
desportivas e sociais, no mbito da Universidade, e
acobertar a eventual utilizacao desses meios.
PCS / EP / USP 2017 PCS 3111 Aula 1 14
Cdigo de tica da USP
Alunos no devem fazer upload de programas
por outros alunos
Alunos no devem fazer upload fora dos seus
horrios de aula
Alunos no devem vir aula com programas
prontos sem nem ter idia do que eles fazem!
Alunos devem fazer a prova individualmente
Sem uso de conhecimento de colegas
Sem uso de whatsApp!

Ser cobrado na disciplina!


PCS / EP / USP 2017 PCS 3111 Aula 1 15
Viso Geral de OO

PCS / EP / USP 2017 PCS 3111 Aula 1 16


Conceito de Objeto
Dificuldade: identificao de objetos de
um domnio

Mr. Potato Head, um brinquedo orientado a objetos.


(fonte: Budd, 2002)
PCS / EP / USP 2017 PCS 3111 Aula 1 17
Desenvolvimento de Software
Desenvolver software nao envolve s uma
linguagem de programacao
Mtodos, Arcaboucos (frameworks), Bibliotecas,
Ferramentas, etc.
Um aspecto importante o paradigma de
programao
Forma de conceituar o que significa realizar
computao e como tarefas executadas no computador
devem ser estruturadas e organizadas. (Budd, 2001)
A solucao de um problema computacional
influenciada pelo paradigma seguido
Facilidade / dificuldade de representacao
PCS / EP / USP 2017 PCS 3111 Aula 1 18
Paradigmas de Programao
Imperativo: estado global e comandos de
mudanas de estado
Linguagens: Pascal, C e Cobol
Funcional: funes matemticas (no afetam o
estado)
Linguagens: Lisp, Haskel, ML e Scala
Lgico: lgica formal (ex.: lgica de 1 ordem)
Linguagens: Prolog e Datalog
Orientao a objetos: abstrao do mundo em
objetos
Linguagens: C++, Java, C#, Objective C e Python
PCS / EP / USP 2017 PCS 3111 Aula 1 19
Paradigmas de Programao
Orientao a Eventos: incorporam eventos e sua
manipulao
Bastante usado para a criao de interfaces grficas
(inclusive em C++)
Declarativo: especificam relaes entre
entidades que o programa deve satisfazer, sem
dizer como deve fazer.
Linguagens: SQL e HTML

Algumas linguagens so multiparadigma


Linguagens: C++, Python

PCS / EP / USP 2017 PCS 3111 Aula 1 20


Histrico da OO
Centro de Computao Noruegus
Simula: 1 Linguagem OO (1967)
Ideia motivou outras linguagens
Alan Kay (Xerox PARC)
Linguagem que fosse fcil de entender por usurios
Smalltalk (disponibilizada em 1980)
Bjarne Stroustrup (Bell Labs)
Extenso de C para usar os conceitos de Simula
C++ (1983)

Popularizao na dcada de 1990


PCS / EP / USP 2017 PCS 3111 Aula 1 21
C++
Linguagem de propsito geral
nfase em software bsico (software de sistemas)
Nvel do hardware
Controle do programador
Permite a gerao de cdigos eficientes

Orientado a Objetos
Chamado originalmente de "C com classes"
Na realidade multiparadigma
Paradigma Imperativo
Paradigma Orientado a Objetos
Programao genrica (templates)
PCS / EP / USP 2017 PCS 3111 Aula 1 22
C++
Superconjunto da linguagem C Recursos para
implementar a OO
Outros Linguagem C++
recursos

Linguagem C

Foco da disciplina: recursos para OO


Veremos alguns dos outros recursos

Padro ISO (a partir de 1998)


Verso atual: C++11
PCS / EP / USP 2017 PCS 3111 Aula 1 23
Popularidade de C++

C++: 5,7%

Fonte: https://www.tiobe.com/tiobe-index/

PCS / EP / USP 2017 PCS 3111 Aula 1 24


Compiladores e Ambientes
Alguns compiladores
GCC (Linux) Windows: MinGW http://www.mingw.org)
e Cygwin (http://www.cygwin.com)
Intel C++ Compiler
Alguns ambientes de programao (IDE)
Code::Blocks
http://www.codeblocks.org/
Netbeans (Oracle)
https://netbeans.org/
Eclipse
http://eclipse.org/
Visual Studio (Microsoft)
http://msdn.microsoft.com/en-us/vstudio
PCS / EP / USP 2017 PCS 3111 Aula 1 25
Primeiro Exemplo
1 #include <iostream> EX01
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello world!" << endl;
8 return 0;
9 }

Crie um projeto no CodeBlocks


File New Project (ou atalho Create a new
project)

PCS / EP / USP 2017 PCS 3111 Aula 1 26


Primeiro Exemplo
Escolha a categoria Console Application
Acione Go Next

PCS / EP / USP 2017 PCS 3111 Aula 1 27


Primeiro Exemplo
Escolha a linguagem C++ Next

PCS / EP / USP 2017 PCS 3111 Aula 1 28


Primeiro Exemplo
Escolha o nome e a pasta do projeto Next

PCS / EP / USP 2017 PCS 3111 Aula 1 29


Primeiro Exemplo
Escolha GNU GCC Compiler (nao altere as
configuraces default) Finish

PCS / EP / USP 2017 PCS 3111 Aula 1 30


Primeiro Exemplo
Projeto Hello World e arquivo main.cpp

PCS / EP / USP 2017 PCS 3111 Aula 1 31


Primeiro Exemplo
Executar
(CTRL-F10)
Compile e execute o programa
Compilar
(CTRL-F9)

Resultado da compilacao

PCS / EP / USP 2017 PCS 3111 Aula 1 32


Primeiro Exemplo
Sada do console

PCS / EP / USP 2017 PCS 3111 Aula 1 33


Viso Geral do C++

PCS / EP / USP 2017 PCS 3111 Aula 1 34


Variveis
Declarao
Tipo, identificador e valor (opcional)
int numeroDePessoas;
bool confirmado = true;
int maior = 100, menor = 0;
double x, y = 50.0;

Variveis podem ser declaradas em qualquer parte


do bloco
Bloco: conjunto de comandos entre "{" e "}"

PCS / EP / USP 2017 PCS 3111 Aula 1 35


Tipos Primitivos
Principais tipos (alguns podem ser unsigned)
(O tamanho em bytes exato depende do compilador)
Tipo Valores Bytes Exemplo
bool Booleano 1 true, false, 1, 0
char Caractere 1 'a', ';', 125
short Nmero 2 0, -1, 15000
int Nmero 4 0, -1, 15000
long Nmero 4 0, -1, 1E10
float Ponto flutuante 4 -1.45E-30
double Ponto flutuante 8 1.9E100

PCS / EP / USP 2017 PCS 3111 Aula 1 36


Condio e Laos
Condio Laos
if (x == 0) { While
// while (x > 0) {
} else if (x > 0) { //
// }
} else {
// Do-while
}
do {
//
} while (x > 0);

For
for (int i = 0; i < 10 ; i++) {
//
}

PCS / EP / USP 2017 PCS 3111 Aula 1 37


Operadores Lgicos
Principais operadores lgicos
Operador Descrio
&& E lgico
|| Ou lgico
! Negao

Exemplo
bool encontrado = false;
int x = 0, y = 0;
...

if (!encontrado && (x > 0 || y > 5)) {


...
}

PCS / EP / USP 2017 PCS 3111 Aula 1 38


Funes
Definio Parmetros
Tipo de retorno Nome da funcao (separados por vrgula)

int processaElementos(int elementos[], int tamanho) {


Corpo da funo ...
(bloco) }

Chamada de uma funo


retorno = processaElementos(vetor, 10);

Retorno de valores
void f() { int g() {
... ...
return; Sem retorno return 1; Com retorno
... ... (inteiro)
}
PCS / EP / USP 2017 PCS 3111 Aula 1
} 39
Comentrios
Dois tipos de comentrios
//
Comenta do // em diante at o fim da linha
x++; // O resto da linha comentado

/* e */
Comenta o texto entre os /* e */
Permite comentar vrias linhas
/*
Exerccio 1
Autor: Meu nome
Data: 01/09/2014
*/

/* Comentrio */ x++;
PCS / EP / USP 2017 PCS 3111 Aula 1 40
Vetor
um conjunto ordenado de variveis de um
mesmo tipo
Exemplo Declara um vetor y (os valores
int y[5]; no esto inicializados)
Declara um vetor x,
int x[] = {15, -29, 54, -1, 3};
inicializando os valores
int m[5][5]; Declara uma matriz 5x5

x[0] 15
x[1] -29
x[2] 54 Vetor x
ndice x[3] -1
x[4] 3
PCS / EP / USP 2017 PCS 3111 Aula 1 41
Vetor
Acesso aos elementos do vetor
numeros[0] = 10;
Atribui o valor 10 posio
0 do vetor (1 posio)
x = numeros[5];
Atribui o valor da posio
5 do vetor varivel x

Observao: o tamanho do vetor deve ser uma


constante (no pode ser uma varivel)
(Veremos futuramente como ser uma varivel)

int tamanho = 5;
int numeros[tamanho];
int numeros[5];
PCS / EP / USP 2017 PCS 3111 Aula 1
42
Programa Bsico em C++

PCS / EP / USP 2017 PCS 3111 Aula 1 43


cin e cout
Entrada e sada padro esto em iostream
Necessrio o #include e o using namespace
#include <iostream>
using namespace std;

Entrada padro: cin


Texto e variveis devem ser separados por >>
Chamado de "obter de"
Funciona com os principais tipos
Exemplo

int x = 0;
cin
O>> x; digitado pelo usurio colocado na varivel x
inteiro

PCS / EP / USP 2017 PCS 3111 Aula 1 44


cin e cout
Sada padro: cout
Texto e variveis devem ser separados por <<
Chamado de "colocar em
endl equivalente a "\n"
Exemplos Sada
int i = 5; Ol
cout << "Ol\n"; 5
cout << i;

int x = 5, y = 6;
cout << "x vale " << x << " e y vale " << y << endl;

texto x texto y Pula linha


Sada x vale 5 e y vale 6
PCS / EP / USP 2017 PCS 3111 Aula 1 45
string
Tipo string
..no s um vetor de caracteres...
Necessrio o #include e o using namespace
Exemplo
#include <iostream> (Necessrio para o cout)
#include <string>
using namespace std; Necessrio para usar a string

int main() {
string nome = "Jose"; Valor inicial
...
nome = "Pedro"; Novo valor
char inicial = nome[0];
cout << nome << endl;
}

Existem diversas funces auxiliares (mtodos)


PCS / EP / USP 2017 PCS 3111 Aula 1 46
Programa Bsico
#include <iostream>
using namespace std; Incluses e outras diretivas

int multiplicar(int x, int y) {


return x * y;
}

int main() { Funes


int x = 5, y =3;
cout << multiplicar(x, y) << endl;
return 0;
}

Main: ponto de entrada do programa


Sempre coloque um return, 0 indica sucesso
Um projeto s pode ter 1 main
PCS / EP / USP 2017 PCS 3111 Aula 1 47
Programa Bsico
Se a funo for usada antes de ser definida,
necessrio criar um prottipo
Apenas assinatura da funo
#include <iostream>
using namespace std;

int multiplicar(int x, int y); Prottipo (declarao)

int main() {
int x = 5, y =3;
cout << multiplicar(x, y) << endl; Uso
return 0;
}

int multiplicar(int x, int y) { Definio da funo


return x * y;
}
PCS / EP / USP 2017 PCS 3111 Aula 1 48
Bibliografia
BUDD, T. An Introduction to Object-Oriented
Programming. 3rd Edition. Addison-Wesley.
2001. Cap. 1.
LAFORE, R. Object-Oriented Programming in
C++. 4th Edition. SAMS. 2002. Cap. 2, 3, 4 e 5.

Indentao
FEOFILOFF, P. Algoritmos em linguagem C.
Editora Campus, 2009. Apndice A.

PCS / EP / USP 2017 PCS 3111 Aula 1 49

Вам также может понравиться