Apresentação
Visão Geral do Curso, Introdução C++ e Logística
Pessoal
Quem sou eu?
- Meu nome: Flavio Figueiredo
- Prédio do DCC (Anexado ao ICEX) sala 4030
Dúvidas?
- Moodle/Sala de Aula
Introdução ao Curso
Sobre PDS2
- PDS2 é um curso voltado ao entendimento de como modelar um software
- Isto complementa o ponto de vista de PDS2
- Comandos básicos para desenvolver programas
- Noções de algoritmos
Nossos Objetivos
- Entender o problema
- Modelar os dados
- Codificar a solução
Ementa
- Programação estruturada e linguagem de programação modular.
- Metodologias de desenvolvimento de software.
- Compreensão, corretude e depuração de programas.
- Resolução de problemas de forma modular e eficiente.
Avaliação
- Provas Teóricas (2 x 25 pts): 50 pontos.
- Atividades práticas (approx 20 VPLs de 1 pto): 20 pontos.
- Projeto: 30 pontos.
Projeto
- Tema da sua escolha
- Temos uma lista de possíveis
- Grupos de 3/4 alunos
- Código no github
- Repositório privado
Tarefas de hoje
Desenvolvimento de Software
Lacuna de PDS1
- Saber programar é apenas o passo inicial
- Em pouco tempo conseguimos fazer uso de:
- if, while, else, for, funções
- Como modelar um programa?
- Como representar um conceito?
Desenvolvimento de Software
Exemplo do mundo real
- Como desenvolver um sistema de banco?
- Clientes
- Transações
- Contas
- . . .
Programação Orientada a Objetos
- Uma das formas de modelar o mundo
- Cada entidade do mundo real pode virar um
struct
. Será que deve? - Atributos
- saldo
- nome
- conta
Uso e Aplicação de Estruturas de Dados
- A forma que você representa os dados guia seu programa. Quando é o melhor momento de usar um mapa/dicionário? Uma lista?
- Biblioteca STL de C++
Boas práticas
- Programação é uma atividade social (acreditem ou não)
- PDS2 é o passo
0
para desenvolver software
C++ Através de Exemplos
- Compilando
- Olá Mundo
- String
- Vector
namespace std
Compilando
- Sempre faremos uso de
g++
g++ -std=c++20 codigo.cpp -o main
- Vamos por partes:
g++
é o nome do compilador-std=c++20
é apenas para garantir que estamos na versão mais novacodigo.cpp
é seu código-o main
indica o programa de saída
Executando
./main
Olá Mundo!
#include <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
return 0;
}
Strings
- Finalmente! Vamos esquecer o
'\0'
por um tempo - C++ tem suporte nativo para strings
#include <iostream>
#include <string>
int main() {
std::string hello("Olá mundo!\n");
std::string pds2("Vamos iniciar PDS2\n");
std::cout << hello;
std::cout << std::endl;
std::cout << pds2;
std::string maisuma = "Mais uma!";
std::cout << maisuma.size();
std::cout << std::endl;
return 0;
}
Strings
Diferentes formas de declarar
#include <iostream>
#include <string>
int main() {
std::string hello1("Olá mundo!\n");
std::string hello2 = "Olá mundo!\n";
}
#include <iostream>
#include <string>
using namespace std;
int main() {
string hello1("Olá mundo!\n");
string hello2 = "Olá mundo!\n";
}
Strings
Suporte nativo ajuda bastante
- Chamadas como: .size
- Tamanho da string
- Observe que a chamada é na string
- Estilo um campo de um struct
- Note a diferença:
str.size() vs strlen(str)
#include <iostream>
#include <string>
int main() {
std::string hello("Olá mundo!\n");
std::string hello2("Olá mundo!\n");
if (hello == hello2) {
std::cout << "c++ faz overload do == para strings!!!!.\n";
}
if (hello.compare(hello2) == 0) {
std::cout << "Strings iguais.\n";
}
return 0;
}
Vectors
#include <iostream>
#include <vector>
int main() {
std::vector<int> dados = {};
int v = 0;
int i = 0;
while (v >= 0) {
std::cout << "Digite o " << i+1 << "-ésimo número (-1 para terminar): ";
std::cin >> v;
if (v < 0) break;
dados.push_back(v);
}
for (int x : dados)
std::cout << x << std::endl;
}
- Nova forma de iterar
- Vetor redimensionável, uma lista com array por baixo.