CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo IX Estruturas e Subprogramas sem Parâmetros.

Slides:



Advertisements
Apresentações semelhantes
Funções em C.
Advertisements

Dúvidas surgidas na aula prática de BCB. 2 Alocação de espaços int m = 3; // THE NUMBER OF ROWS. int n = 5; // THE NUMBER OF COLUMNS. data = new long.
1 Estruturas de Controle Márcia J. N. Rodrigues Lucena Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Capítulo 10 Arrays. 2Capítulo 10 – Arrays Arrays Introdução Tipo do array Tamanho do array Preenchendo o array Varrendo um array Array com 2 dimensões.
Grupo Paralelismo – Unesp RC
FORTRAN 90 Denise Yumi Takamura.
Estruturas de Dados para projeto de SGBD. Estruturas de dados analisadas Estruturas de nível Esparso Denso Combinadas Arvore B+ Tabela de hash.
Vetores (2) Continuação.
Modularização de Código. Modularizar código Construção do algoritmo em um módulo único (Início...Fim/ Program... End) Único arquivo.
Treinamento GP3 USP – GEFIM Abril de 2004 Alcides Pietro, PMP.
Prof. Dr. Helder Anibal Hermini
Teste Estrutural de Software
Teste Funcional de Software
Análise e Solução de Problemas
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Profa. Graziela Santos de Araújo Algoritmos e Programação II, 2010
Conceitos iniciais Hardware/Software
Funções de um computador
CES-11 LAB 03 Bitmap Quadtree
CES-11 LAB 03 Bitmap Quadtree ALGORITMO Carlos Henrique Q. Forster – Instituto Tecnológico de Aeronáutica 2010.
CES-41 COMPILADORES Capítulo IV Complementos de Análise Léxica.
ITA - Instituto Tecnológico de Aeronáutica Aula #1.1 – Tutorial de Web Services utilizando o NetBeans 5.5 Disciplina: CE 262 – Ontologias e Web Semântica.
Capítulo VII – Tipos Enumerativos e Estruturas 7.1 – Tipos enumerativos 7.2 – A necessidade de estruturas 7.3 – Manipulação dos campos de uma estrutura.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo III Comandos de Controle.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
1.3 – Interpretadores – Compiladores versus Interpretadores
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo III Declarações e Comandos de Atribuição.
CES-41 COMPILADORES Aulas Práticas
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VII Tipos Enumerativos e Estruturas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo II Confecção de Tabelas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo VII Variáveis Indexadas Numéricas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo XI Encadeamento de Estruturas por Ponteiros.
Capítulo IX – Ponteiros 9.1 – Introdução 9.2 – Relação entre ponteiros e variáveis indexadas 9.3 – Alocação dinâmica de memória 9.4 – Variáveis indexadas,
Exemplo: ordenação de uma lista pelo Selection-Sort:
Capítulo I – Conceitos Primários 1.1 – Estrutura de um computador 1.2 – Informações manipuladas por um computador 1.3 – Evolução das linguagens de programação.
Função Gráficos. Domínio e imagem no gráfico.
FUNDAÇÃO CARLOS CHAGAS
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Marco Antonio Montebello Júnior
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor:
Redes para Automação Industrial Capítulo 1: Automação Industrial
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
8. Uma Função de duas Variáveis Aleatórias
Estruturas de Decisão Permitir testes para decidir acções alternativas: if if - else switch (?:) Operador Condicional MF.
Tratamento de Ficheiros
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
PROGRAMAÇÃO ESTRUTURADA II
Grupo A – Azul Claro, Marrom, Laranja
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
APRENDER A APRENDER deve ser nossa meta. Comandos de Controle de Programa Comandos de Seleção Prof. Me. Jeime Nunes.
Rio Verde - Goiás - Brasil
Manipulando arquivos texto com C
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VIII Strings, Estruturas e Subprogramas sem Parâmetros.
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2017
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
Programação de Computadores I – Arquivos
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2017
Programação de Computadores I – Arquivos
Linguagem C Linguagem Imperativa
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2019
Transcrição da apresentação:

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo IX Estruturas e Subprogramas sem Parâmetros

Tema do Lab 9: Campeonato de Fórmula 1 Ler as informações sobre o campeonato e montar as seguintes tabelas: Ler as informações sobre o campeonato e montar as seguintes tabelas: – Tabela dos locais dos grandes prêmios – Tabela de informações sobre os pilotos: nome, escuderia, classificação em cada grande prêmio e total de pontos, ordenada decrescentemente pelo total de pontos – Tabela de informações sobre as escuderias: nome e total de pontos, ordenada decrescentemente pelo total de pontos

Tema do Lab 9: Campeonato de Fórmula 1 Os locais dos GPs, os nomes dos pilotos e suas escuderias devem ser lidos de um arquivo Os locais dos GPs, os nomes dos pilotos e suas escuderias devem ser lidos de um arquivo Os resultados de cada GP devem ser fornecidos pelo operador Os resultados de cada GP devem ser fornecidos pelo operador O relatório completo do campeonato, com a classificação dos pilotos em cada GP, com a pontuação final e com a classificação final dos pilotos e das escuderias, deve ser escrito num arquivo O relatório completo do campeonato, com a classificação dos pilotos em cada GP, com a pontuação final e com a classificação final dos pilotos e das escuderias, deve ser escrito num arquivo

Programa 9.1: Montagem da tabela de locais dos grandes prêmios typedef char cadeia1[16]; struct tabelagps { cadeia1 VetGPs[30]; int ngps; }; typedef struct tabelagps tabelagps; tabelagps TabGPs; Sejam as declarações à esquerda Elas implementam a seguinte estrutura: local ngps VetGPs TabGPs

#include #include typedef char cadeia1[16], cadeia2[21]; /* Estrutura para a tabela de locais dos GPs */ struct tabelagps { cadeia1 VetGPs[30]; int ngps; }; typedef struct tabelagps tabelagps; /* Variaveis globais */ tabelagps TabGPs; FILE *filein, *fileout; Copiar, salvar e executar o programa à esquerda Continua no próximo slide

/* Funcao LerGPs: leitura dos locais dos GPs */ void LerGPs () { int i; char c, d; fscanf (filein, "%d%c", &TabGPs.ngps, &c); fscanf (filein, "%d%c", &TabGPs.ngps, &c); for (i = 0; i < TabGPs.ngps; i++) { for (i = 0; i < TabGPs.ngps; i++) { fgets (TabGPs.VetGPs[i], 16, filein); fgets (TabGPs.VetGPs[i], 16, filein); fscanf (filein, "%c", &c); fscanf (filein, "%c", &c);}} Continua no próximo slide A variável TabGPs é global Escrever o seguinte arquivo de entrada, de nome Formula1Entrada.txt: 5 Sao Paulo Londres Los Angeles Paris Tokio 15 O Borland não completa com espaços em branco até interar 15 caracteres Leitura do Leitura de no máximo 15 (16-1) caracteres

/* Funcao EscreverGPs: escrita dos locais dos GPs */ void EscreverGPs () { int i; fprintf (fileout, \n\nLocais dos %d GP's:\n", TabGPs.ngps); for (i = 0; i < TabGPs.ngps; i++) for (i = 0; i < TabGPs.ngps; i++) fprintf (fileout, "\n%-20s", TabGPs.VetGPs[i]); fprintf (fileout, "\n%-20s", TabGPs.VetGPs[i]);} Continua no próximo slide

/* funcao main */ void main () { /* Abertura dos arquivos de entrada e de saida */ filein = fopen ("Formula1Entrada.txt", "r"); filein = fopen ("Formula1Entrada.txt", "r"); fileout = fopen ("Formula1Saida", "w"); fileout = fopen ("Formula1Saida", "w"); fprintf (fileout, "CAMPEONATO DE FORMULA 1 - RESULTADOS"); fprintf (fileout, "CAMPEONATO DE FORMULA 1 - RESULTADOS"); /* Avisos de sobre os arquivos de entrada e saida */ printf ("Processamento das informacoes de um Campeonato de Formula 1\n\n"); printf ("Processamento das informacoes de um Campeonato de Formula 1\n\n"); printf ("\tArquivo Formula1Entrada: locais, pilotos e escuderias dos GPs\n\n"); printf ("\tArquivo Formula1Entrada: locais, pilotos e escuderias dos GPs\n\n"); printf ("\tArquivo Formula1Saida: Relatorio completo do campeonato\n\n"); printf ("\tArquivo Formula1Saida: Relatorio completo do campeonato\n\n"); /* Processamento das informacoes sobre os GPs */ LerGPs (); EscreverGPs (); EscreverGPs (); /* Fechamento da tela */ printf ("\nDigite algo para encerrar: "); getch (); }

No vídeo: Processamento das informacoes de um Campeonato de Formula 1 Arquivo Formula1Entrada: locais, pilotos e escuderias dos GPs Arquivo Formula1Saida: Relatorio completo do campeonato Digite algo para encerrar: No arquivo Formula1Saida: CAMPEONATO DE FORMULA 1 - RESULTADOS Locais dos 5 GP's: Sao Paulo Londres Los Angeles ParisTokio Resultado da execução

Programa 9.2: Montagem da tabela dos pilotos participantes do campeonato de Fórmula 1 struct piloto { cadeia2 NomePiloto; cadeia1 Escuderia; int Classificacao[30], TotalPontos; int Classificacao[30], TotalPontos;}; typedef struct piloto piloto; struct tabelapilotos { piloto VetPilotos[30]; int npilotos; }; typedef struct tabelapilotos tabelapilotos; tabelapilotos TabPilotos; Sejam as declarações à esquerda Elas implementam a estrutura a seguir NomePilotoEscuderia tipo piloto TotalPontosClassificacao

NomePilotoEscuderiaClassificacaoTotalPontos npilotos VetPilotos TabPilotos

/* Estrutura para a tabela de locais dos GPs */ struct tabelagps { }; typedef struct tabelagps tabelagps; /* Estrutura para as informacoes sobre um piloto participante dos GPs */ struct piloto { cadeia2 NomePiloto; cadeia1 Escuderia; int Classificacao[30], TotalPontos; int Classificacao[30], TotalPontos;}; typedef struct piloto piloto; /* Estrutura para a tabela de pilotos participantes dos GPs */ struct tabelapilotos { piloto VetPilotos[30]; int npilotos; }; typedef struct tabelapilotos tabelapilotos; Fazer no Programa 9.1 as alterações que se seguem Continua no próximo slide

/* Variaveis globais */ tabelagps TabGPs; tabelapilotos TabPilotos; FILE *filein, *fileout; /* Funcao LerGPs: leitura dos locais dos GPs */ void LerGPs () { } /* Funcao EscreverGPs: escrita dos locais dos GPs */ void EscreverGPs () { } Continua no próximo slide

/* Funcao LerPilotos: leitura dos nomes e das escuderias dos pilotos - Zera a classificacao em todos os GPs e o numero total de pontos */ void LerPilotos () { int i, j; char c; fscanf (filein, "%d%c", &TabPilotos.npilotos, &c); fscanf (filein, "%d%c", &TabPilotos.npilotos, &c); for (i = 0; i < TabPilotos.npilotos; i++) { for (i = 0; i < TabPilotos.npilotos; i++) { fgets (TabPilotos.VetPilotos[i].NomePiloto, 21, filein); fgets (TabPilotos.VetPilotos[i].NomePiloto, 21, filein); fgets (TabPilotos.VetPilotos[i].Escuderia, 16, filein); fgets (TabPilotos.VetPilotos[i].Escuderia, 16, filein); fscanf (filein, "%c", &c); fscanf (filein, "%c", &c); for (j = 0; j < TabPilotos.npilotos; j++) for (j = 0; j < TabPilotos.npilotos; j++) TabPilotos.VetPilotos[i].Classificacao[j] = 0; TabPilotos.VetPilotos[i].Classificacao[j] = 0; TabPilotos.VetPilotos[i].TotalPontos = 0; TabPilotos.VetPilotos[i].TotalPontos = 0;}} O arquivo Formula1Entrada.txt passa a conter os pilotos e as escuderias, conforme o próximo slide

5<enter> Sao Paulo Sao Paulo Londres Londres Los Angeles Los Angeles Paris Paris Tokio Tokio 16<enter> Felipe Massa Ferrari Felipe Massa Ferrari Fernando Alonso Ferrari Fernando Alonso Ferrari Sebastian Vettel Red Bull Sebastian Vettel Red Bull Mark Webber Red Bull Mark Webber Red Bull Jenson Button McLaren Jenson Button McLaren Sergio Perez McLaren Sergio Perez McLaren Kimi Raikkonen Lotus Kimi Raikkonen Lotus Romain Grosjean Lotus Romain Grosjean Lotus Nico Rosberg Mercedes Nico Rosberg Mercedes Lewis Hamilton Mercedes Lewis Hamilton Mercedes Nico Hulkenberg Sauber Nico Hulkenberg Sauber Esteban Gutierrez Sauber Esteban Gutierrez Sauber Paul di Resta Force India Paul di Resta Force India Adrian Sutil Force India Adrian Sutil Force India Pastor Maldonado Williams Pastor Maldonado Williams Valtteri Bottas Williams Valtteri Bottas Williams Continua no próximo slide 2015 fgets (TabPilotos.VetPilotos[i].NomePiloto, 21, filein); fgets (TabPilotos.VetPilotos[i].Escuderia, 16, filein);

/* Funcao EscreverPilotos: escrita das informacoes sobre os pilotos */ void EscreverPilotos () { int i, j; fprintf (fileout, "\n\nInformacoes sobre os %d pilotos:\n", TabPilotos.npilotos); for (i = 0; i < TabPilotos.npilotos; i++) { for (i = 0; i < TabPilotos.npilotos; i++) { fprintf (fileout, "\n%-25s", TabPilotos.VetPilotos[i].NomePiloto); fprintf (fileout, "\n%-25s", TabPilotos.VetPilotos[i].NomePiloto); fprintf (fileout, "%-20s", TabPilotos.VetPilotos[i].Escuderia); fprintf (fileout, "Classificacoes: "); fprintf (fileout, "Classificacoes: "); for (j = 0; j < TabGPs.ngps; j++) for (j = 0; j < TabGPs.ngps; j++) fprintf (fileout, "%3d", TabPilotos.VetPilotos[i].Classificacao[j]); fprintf (fileout, "%3d", TabPilotos.VetPilotos[i].Classificacao[j]); fprintf (fileout, " Total de pontos:%4d", TabPilotos.VetPilotos[i].TotalPontos); fprintf (fileout, " Total de pontos:%4d", TabPilotos.VetPilotos[i].TotalPontos); }}

void main () { /* Abertura dos arquivos de entrada e de saida */ /* Avisos de sobre os arquivos de entrada e saida */ /* Processamento das informacoes sobre os GPs */ LerGPs (); EscreverGPs (); EscreverGPs (); LerPilotos (); LerPilotos (); EscreverPilotos (); EscreverPilotos (); /* Fechamento da tela */ printf ("\nDigite algo para encerrar: "); getch (); } Copiar, salvar e executar

Exercício 9.1: Leitura e armazenamento dos resultados dos GPs Fazer uma função de nome LerResultadosGPs e colocar na função main uma chamada para ela: Fazer uma função de nome LerResultadosGPs e colocar na função main uma chamada para ela: Sugere-se para essa leitura a seguinte estratégia: Sugere-se para essa leitura a seguinte estratégia: – Para cada GP o programa escreve o seu local e – Pergunta ao operador a classificação de cada um dos pilotos, armazenando a informação em TabPilotos LerGPs (); EscreverGPs (); LerPilotos (); LerResultadosGPs (); EscreverPilotos ();

Exercício 9.2: Cálculo da pontuação total de cada piloto Fazer uma função de nome CalcularPontuação e colocar na função main uma chamada para ela: Fazer uma função de nome CalcularPontuação e colocar na função main uma chamada para ela: A pontuação total de cada piloto deve ser armazenada em TabPilotos, no campo TotalPontos A pontuação total de cada piloto deve ser armazenada em TabPilotos, no campo TotalPontos LerGPs (); EscreverGPs (); LerPilotos (); LerResultadosGPs (); CalcularPontuacao (); EscreverPilotos ();

Exercício 9.2: Cálculo da pontuação total de cada piloto Como é bem conhecido, recebem pontos num GP os 10 primeiros classificados, segundo a tabela: Como é bem conhecido, recebem pontos num GP os 10 primeiros classificados, segundo a tabela: 1º Lugar: 25 ptos 2º Lugar: 18 ptos 3º Lugar: 15 ptos 4º Lugar: 12 ptos 5º Lugar: 10 ptos 6º Lugar: 08 ptos 7º Lugar: 06 ptos 8º Lugar: 04 ptos 8º Lugar: 02 ptos 10º Lugar: 01 ptos

Exercício 9.3: Ordenação decrescente da TabPilotos pelo total de pontos dos pilotos Fazer uma função de nome OrdenarTabPilotos e colocar na função main uma chamada para ela: Fazer uma função de nome OrdenarTabPilotos e colocar na função main uma chamada para ela: A ordenação pode usar uma adaptação do método Bubble- Sort, mas pode usar alternativamente algum outro método A ordenação pode usar uma adaptação do método Bubble- Sort, mas pode usar alternativamente algum outro método LerGPs (); EscreverGPs (); LerPilotos (); LerResultadosGPs (); CalcularPontuacao (); OrdenarTabPilotos (); EscreverPilotos ();

Exercício 9.4: Montagem, ordenação e escrita de uma tabela de escuderias A tabela de escuderias deve usar as seguintes declarações: A tabela de escuderias deve usar as seguintes declarações: struct escuderia { cadeia1 NomeEscuderia; int Pontos; }; typedef struct escuderia escuderia; struct tabelaescuderias { escuderia VetEscuderias[30]; int nescuderias; }; typedef struct tabelaescuderias tabelaescuderias; tabelaescuderias TabEscuderias;

Exercício 9.4: Montagem, ordenação e escrita de uma tabela de escuderias Fazer três funções de nomes MontarTabEscuderias, OrdenarTabEscuderias e EscreverEscuderias, colocando na função main uma chamada para cada uma delas: Fazer três funções de nomes MontarTabEscuderias, OrdenarTabEscuderias e EscreverEscuderias, colocando na função main uma chamada para cada uma delas: LerGPs (); EscreverGPs (); LerPilotos (); LerResultadosGPs (); CalcularPontuacao (); OrdenarTabPilotos (); EscreverPilotos (); MontarTabEscuderias (); OrdenarTabEscuderias (); EscreverEscuderias ();