POO Ponto de Partida: PP Créditos: Prof. Marcelo Maia

Slides:



Advertisements
Apresentações semelhantes
Um programa em C Bibliotecas Variáveis globais
Advertisements

Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas.
Funções em C.
Estruturas de Dados Árvores Binárias
Recursividade Prof. Rosana Palazon.
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Listas duplamente encadeadas
Programação II Estruturas de Dados
Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
AULA – Linguagem C – Vetores, Ponteiros e Estruturas
LPG-I: Tipos Complexos - Estruturas
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo II Confecção de Tabelas.
Universidade de Brasília
Armazenamento de Dados em Arquivos
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Slides: Prof. João Fabro UTFPR - Curitiba
Armazenamento de Dados em Arquivos
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Fundamentos de Programação 1
Listas Encadeadas.
Linguagem de Programação
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
exercícios listas encadeadas
Classes Revisando: –Forma de implementação de estruturas específicas –Atributos (grupos de dados) –Métodos (conjuntos de procedimentos)
Ameliara Freire Programação I Ameliara Freire
PROGRAMAÇÃO ESTRUTURADA II
PROGRAMAÇÃO ESTRUTURADA II
Implementar Primeirão em Java Eduardo Figueiredo 25 de Março de 2010 POOAula 06.
Árvores Binárias de Pesquisa
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Programação II Estruturas de Dados Aula 02 - continuação
Seminário 1: Revisão de C
APRENDER A APRENDER deve ser nossa meta. Comandos de Controle de Programa Comandos de Seleção Prof. Me. Jeime Nunes.
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Estruturas de Dados Aula 11: TAD Pilha
Árvore Binária de Busca
Prof.: Edson Holanda Teoria da computação
Uso de parâmetros na linha de comando. Parâmetros da função main:
Capítulo IV – Comandos de Controle de Fluxo 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos.
Declarando e Chamando Funções
Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VII Variáveis Indexadas Numéricas.
Estruturas de Dados Aula 6: Cadeias de Caracteres
Utilizando UML e Padrões Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Março de 2010.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Prof. Alessandro Gonçalves
Revisão Luis Antonio Tavares
Programação de Computadores I – Arquivos
Linguagem de Programação
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”.
Computação – Informática Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Matrizes em C”
Fundamentos de Programação 1 Slides 19 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Binários”.
Fundamentos de Programação 1 Slides 11 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “ Struct, Union, Enum, Typedef ”
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C”
Fundamentos de Programação 1 Slides 7 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Funções”
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.
Estrutura de Dados STRUCTS Dilvan Moreira. Objetivos  Entender o que são e como usar:  Estrutura de Dados para a Linguagem C  Structs (Registros)
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”. 1.
Fundamentos de Programação 1
Transcrição da apresentação:

POO Ponto de Partida: PP Créditos: Prof. Marcelo Maia Universidade Federal de Uberlândia Faculdade de Computação Bacharelado em Ciência da Computação POO Ponto de Partida: PP Créditos: Prof. Marcelo Maia

“Primeirão” Seja um joguinho de dados Chegada

Primeirão em ação

Mãos à obra em C

Solução em C Estrutura Bibliotecas a serem utilizadas #include <stdlib.h> #include <stdio.h> typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); Bibliotecas a serem utilizadas Definição de um jogador Variáveis globais Funções Auxiliares

Grafo (árvore) de chamadas main iniciar criarJogadores sorteiaIniciante ninguemVenceu jogarDado andarJogador mostrarSituacao atingiuPontos

Solução em C Programa Principal typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais int main(int argc, char *argv[]) { printf("Entre com o numero limite de pontos: "); scanf("%d",&nroLimitePontos); printf("Entre com o numero de jogadores: "); scanf("%d",&nroJogadores); criarJogadores(); iniciar(); return EXIT_SUCCESS; }

Solução em C Criar jogadores! typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); void criarJogadores () { jogadores = (Jogador**) malloc(nroJogadores*sizeof(Jogador*)); int i; for (i = 0; i < nroJogadores; i++) { jogadores[i] = (Jogador*) malloc(sizeof(Jogador)); printf("Entre com o nome do jogador %d:", (i+1)); scanf("%s", jogadores[i]->nome); jogadores[i]->pontos = 0; }

Solução em C Iniciar !!!! Definição de um jogador Variáveis globais typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); void iniciar () { int proximo = sorteiaIniciante(); while (ninguemVenceu()) { int pontos = jogarDado(); andarJogador(jogadores[proximo], pontos); mostraSituacao(proximo, pontos); if (ninguemVenceu()) proximo = (proximo+1) % nroJogadores; //proximo == (nroJogadores - 1) ? 0 : proximo + 1; } printf("O jogador %s venceu!!!!\n", jogadores[proximo]->nome);

Solução em C Ninguém Venceu? typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); int ninguemVenceu () { int i = 0; while (i < nroJogadores) { if (atingiuPontos(jogadores[i], nroLimitePontos)) return 0; i++; } return 1;

Solução em C Jogar Dado int jogarDado() { return (rand()%6)+1; } typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); int jogarDado() { return (rand()%6)+1; }

Solução em C Mostra Situação! typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); void mostraSituacao (int j, int p) { printf("O jogador %s andou %d pontos! \n A Situacao ficou assim: \n", jogadores[j]->nome, p); int i; for (i = 0; i < nroJogadores; i++) printf("O jogador %s tem %d pontos!\n", jogadores[i]->nome, jogadores[i]->pontos); printf("PAUSA\n"); getchar(); }

Solução em C Sorteia Iniciante. typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); int sorteiaIniciante () { return rand()%nroJogadores; }

Solução em C Andar Jogador ! typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); void andarJogador (Jogador *j, int n) { j->pontos += n; }

Solução em C Atingiu Pontos? typedef struct { char nome[20]; int pontos; } Jogador; int nroLimitePontos, nroJogadores; Jogador** jogadores; Definição de um jogador Variáveis globais // Jogo void criarJogadores(); void iniciar(); int ninguemVenceu (); int jogarDado(); void mostraSituacao(int, int); int sorteiaIniciante(); // Jogador void andarJogador(Jogador*, int); int atingiuPontos(Jogador*, int); int atingiuPontos(Jogador *j, int n) { return j->pontos >= nroLimitePontos; }

Modelar Primeirão em UML

Modelar Primeirão em UML Será contado como presença para aula do dia 17/03 Entregar dia 24/03 (quarta-feira) Entrega individual Pode fazer na mão ou usar ferramenta (e.g., PowerPoint) Entregar em papel Usar apenas Diagrama de Classes UML

Solução OO Muda o raciocínio ????? Decomposição Funcional X Decomposição de Objetos (Dados + Métodos) ?????

Solução OO Decomposição de Objetos Pergunta: quais são os elementos (objetos) do problema??? Possível resposta: cada jogador, um conjunto de jogadores, dado de 6 lados o próprio jogo Você pode achar outros Os dados são aninhados jogo jogadores Cebolinha Cascão Mônica

Você pode achar muitas outras alternativas!! Solução OO Abstração dos Dados Cada jogador Quantos pontos tem? Qual o nome? Muda de nome! Anda “n” casas! Atingiu “n” pontos? Dado Lança!!! Jogo Começa!! Cria jogadores!! Alguém venceu? Mostra situação Você pode achar muitas outras alternativas!!

Solução OO Quais os relacionamentos entre os objetos das classes Associação? Agregação / Composição? Herança? Dependência? Lembre-se de documentar o projeto Notas