PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

Documentos relacionados
PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Mestrado Integrado em Engenharia Electrotécnica e de Computadores 2006/2007. Programação 2. Trabalho Prático P2B

PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

Algoritmos e Programação

Algoritmos e Programação

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Modulo 4: while do while (limites de variáveis)

Introdução aos Algoritmos

Working 03 : Conceitos Básicos I

Análise do problema. Desenvolvimento de programas. Desenvolvimento do algoritmo. Análise do problema

1 a Frequência

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa

Introdução aos Algoritmos

PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE

Informática para Ciências e Engenharias 2014/15. Teórica 7

Desenvolvimento de programas

Aula 3 Constantes e funções de E/S

Relatório Trabalho Final Reservas de Viagens de Avião

Informática para Ciências e Engenharias 2013/14. Teórica 7

Sumário. Ficheiros. Ficheiros

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2016 / 17

Introdução a Programação de Jogos

Projeto de Programação Entrega Intermédia

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Organização de programas em Python. Vanessa Braganholo

Erros na programação. Estruturas de controlo. Erros sintácticos. Erros lógicos (erros semânticos)

Algoritmos Estrutura Condicional

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

1 ō Trabalho Prático de Programação Imperativa 2001/2002 Propostas de trabalho

LISTA DE EXERCÍCIOS - ro. 02

Laboratório 3 Comandos de repetição while, do-while e for

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Linguagem C: Introdução

DECivil Departamento de Engenharia Civil, Arquitectura e Georrecursos. Apresentação. Computação e Programação (CP) 2013/2014.

Associações de Ficheiros. Mike McBride Tradução: José Pires

A linguagem C (visão histórica)

REDES INTEGRADAS DE TELECOMUNICAÇÕES I 2008 / 2009

COMANDOS DE CONTROLE DE FLUXO. Luís Charneca.

Informática para Ciências e Engenharias (C) Trabalho Prático /18

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Apresentação. Informação geral + Conceitos iniciais

Notas de Aula de Algoritmos e Programação de Computadores

Outras Linguagens. Aulas 26 e 27. DECivil Departamento de Engenharia Civil, Arquitectura e Georrecursos

Algoritmos. Algoritmos. Linguagem de programação. Conceitos. Conceitos. Conceitos. Sintaxe do comando para incluir bibliotecas no programa:

Objectivos. Programação I (2010/2011) 2 o Trabalho de Programação

Professor Mauricio Lederer Algoritmos. Entrada e saída de dados

Procalc v1.0. Versão Utilizador (Manual de Utilizador)

Estrutura de Dados Conceitos Iniciais

Introdução à Programação

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Programação I Aula 17 Correção de programas Pedro Vasconcelos DCC/FCUP

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Árvores B. Árvore B (ou melhor B+)

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Aula 6 Oficina de Programação Estruturas Condicionais no C. Profa. Elaine Faria UFU

Para cada programa, por mais simples que seja, comece sempre por esboçar a solução desenhando um fluxograma.

Working 08 : Tipos Abstratos de Dados

Introdução aos Algoritmos e Estruturas de Dados 2011/2012

REDES INTEGRADAS DE TELECOMUNICAÇÕES I 2003 / 2004

Pilotagem Squeak no computador Magalhães. Projecto: Geometria Básica

Conhecendo a Linguagem de Programação C

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Fundamentos de Programação

Algoritmos e Estruturas de Dados. Grupo 1

Programação. Folha Prática 10. Lab. 10. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Simulação de Caixa Automático

01/08/2011 PROGRAMAÇÃO EM LINGUAGEM C. Histórico

ARQUITETURA DE COMPUTADORES 21010

Working 03 : Conceitos Básicos II

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

3. Linguagem de Programação C

Laboratório de Programação II

Exercícios de Excel com Programação em VBA. Luís Vieira Lobo

Projecto # 4: HangMan

Fundamentos de Algoritmos (5175/31)

Fluxogramas. Leandro Tonietto ago-09

Circuitos sequenciais síncronos

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

DGPAPP Tutorial. Introdução. Daniel Centeno Einloft Vinicius Meirelles Pereira. 20 May 2014

ARQUITETURA DE COMPUTADORES

INSTITUTO SUPERIOR TÉCNICO. Arquitectura de Computadores (ACom)

Problema do Caminho Hamiltoniano

Aula 1 Apresentação do Curso

Algoritmos e Programação

Programação de Computadores II

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Computação e Programação 201*/201* - 1º Semestre

1 Introdução e Conceitos básicos

Objectivos. Observar os tipos fornecidos pelo C++ Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes

Transcrição:

Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 1º semestre TRABALHO FINAL DE AVALIAÇÃO Gestão de viaturas para uma auto-estrada http://tele1.dee.fct.unl.pt Paulo da Fonseca Pinto Luis Bernardo

1 Introdução Pretende-se fazer um sistema de gestão de viaturas para uma auto-estrada. A auto-estrada em questão tem a seguinte topologia (o engenheiro civil foi despedido depois de ter desenhado o nó intermédio deste modo por todos os motivos, mais o óbvio que só foi descoberto depois do Presidente ter sobrevoado o local). Portagem: 2 Portagem: 1 Portagem: 3 A distância entre a portagem 1 e a portagem 2 é de 50 quilómetros e entre a portagem 2 e a portagem 3 é também de 50 quilómetros. O trabalho consiste na obtenção de vários tipos de informação sobre o movimento das viaturas na auto-estrada. Foi concebido por opções com um nível crescente de complexidade em cada uma. Cada opção pode ser feita independentemente (muito embora use ideias comuns). O propósito é o dos alunos irem fazendo as opções sequencialmente tendo a nota máxima se executarem todas as opções de um modo exemplar. Repetindo: execute cada opção sequencialmente tendo a certeza que tudo é feito por si (grupo) e que está a compreender tudo o que faz. Para informação dos alunos, se o trabalho contiver todas as opções menos a última, executadas de um modo exemplar, a classificação máxima é de 18 valores. 2 Como atacar o problema Deve ter reparado que todos os exercícios das aulas práticas começavam com uma definição das variáveis (estruturas de dados) e na definição de grandes blocos que eram as funções chamadas a partir do main. Depois, cada grande bloco era dividido em blocos mais pequenos Faça o mesmo exercício ao ler as especificações do programa. Comece por pensar nas estruturas de dados que vão ser necessárias e nos grandes blocos. 3 Gestao O programa de gestao trabalha com uma estrutura de dados por viatura com a informação mostrada na figura da página seguinte. Essa informação está guardada num ficheiro em modo binário para ser mais eficiente a sua leitura. No entanto, o uso de ficheiros binários é mais problemático para o ser humano que não os consegue manipular. Vai sentir essa dificuldade neste trabalho, mas é a vida!... 2

Mas não são tudo más notícias! Há-de reparar na facilidade das instruções de leitura dos dados a partir de ficheiros em modo binário comparado com a complexidade das instruções que teria de fazer para ler os mesmos dados a partir de um ficheiro em modo de texto (ler caracteres, testar se eram dígitos, passar para inteiros, etc. etc. etc.). Quando codificar esta parte, lembre-se disto. Em todo o caso, para atenuar o choque de usar ficheiros em modo binário vão ser distribuídos vários programas para o ajudar (ver final do enunciado). Na vida real teria de fazer estes programas Também vai ser distribuído um ficheiro em modo binário e a correspondente versão em modo texto com bastantes registos de viaturas. Identificador de Via Verde: um inteiro longo Tem seis digitos Classe da viatura: unsigned short int existem quatro classes (1, 2, 3 e 4) Portagem de entrada: unsigned short int 1, 2 ou 3 Portagem de saída: unsigned short int 1, 2 ou 3 Tempo de passagem na portagem de entrada: Tempo de passagem na portagem de saída: Uma string fixa: xxh xxm xxs Uma string fixa: xxh xxm xxs (assume-se que é sempre no mesmo dia, para não complicar) O programa deve ler os dados de um dia que estão guardados num ficheiro e fazer o tratamento deles, produzindo um conjunto de informação de acordo com um menu. O menu principal do programa deve ter o seguinte aspecto Programa de gestão de viaturas na Auto-estrada do Leste 0 Sair do programa 1 Ler os dados 2 Calcular o número de viaturas por classe entre as portagens 1 e 3 3 Calcular o tempo médio de permanência das viaturas por classe entre as portagens 1 e 3 4 Calcular a lista de veículos que percorreram a auto-estrada em excesso de velocidade (qualquer que tenha sido o seu percurso) 5 Calcular um histograma por intervalos de dez minutos dos tempos de permanência das viaturas da classe 2 entre as portagens 1 e 3. 4 Especificações de cada item 4.1 ITEM 0 - SAIR DO PROGRAMA No item 0 Sair do programa o programa deve acabar. Embora não seja necessário, pretende-se que os alunos fechem o ficheiro se o tiverem aberto. 3

4.2 ITEM 1 LER OS DADOS No item 1 Ler os dados, o programa deve perguntar o nome do ficheiro a ler e ler todos os dados constantes no ficheiro. Note que as strings têm um tamanho e formato fixo. Deve assumir-se que o número máximo de viaturas num dia é de 100. Para não complicar o programa assume-se também que os dados estão sempre correctos (por exemplo, não existem letras em vez de números na string das horas, não existem identificações de portagens inválidas, etc.). 4.3 ITEM 2 CÁLCULO DO NÚMERO DE VIATURAS POR CLASSE No item 2 Cálculo do número de viaturas por classe, pretende-se ter o número de viaturas que percorreram a auto-estrada entre as portagens 1 e 3, e as portagens 3 e 1 por classe. A saída deve ter o seguinte formato Número de viaturas por classe entre as portagens 1 e 3 Classe port 1 -> port 3 port 3 -> port 1 1 23 52 2 16 32 3 10 12 4 3 2 COMENTÁRIO: Repare que só vão interessar os elementos do vector com entrada na portagem 1 e saída na portagem 3, ou entrada na portagem 3 e saída na portagem 1. 4.4 ITEM 3 CÁLCULO DE TEMPOS MÉDIOS DE PERMANÊNCIAS No item 3 Cálculo de tempos médios de permanências, só são importantes os registos entre as portagens 1 e 3, num sentido e noutro, tal como no anterior. Os alunos são livres de escolherem fazerem apenas uma média para as duas situações, ou duas (uma por sentido). No entanto, devem ser calculados os tempos por classe de viaturas. Os resultados são apresentados no ecrã no formato horas, minutos e segundos. Para o caso em que não se diferenciou o sentido a formatação de saída é a seguinte: TEMPOS MÉDIOS Veículos de classe 1 = 00 horas, 43 minutos, 12 segundos Veículos de classe 2 = 01 horas, 03 minutos, 16 segundos Veículos de classe 3 = 01 horas, 43 minutos, 34 segundos Veículos de classe 4 = 01 horas, 54 minutos, 16 segundos COMENTÁRIO: Repare que para o cálculo da média é preferível trabalhar em segundos e só no final fazer os cálculos para horas, minutos e segundos. 4

4.5 ITEM 4 VIATURAS EM EXCESSO DE VELOCIDADE No item 4 Viaturas em excesso de velocidade, devem ser identificadas as viaturas em excesso de velocidade média na auto-estrada qualquer que seja o percurso. A velocidade máxima permitida na auto-estrada é de 120,00 Km/h. Devem identificarse as viaturas que percorreram o seu percurso com uma velocidade média superior a essa. O formato de saída dos dados deve obedecer ao seguinte: VV: identificador Classe: classe VM = velocidade_média Percurso: port_in port_out O valor da velocidade média deve aparecer em Km/h com duas casas decimais. A saída dos dados pode ser por ordem de tratamento do registo da viatura. Para alcançar uma nota mais elevada, a saída deve ser por ordem decrescente da velocidade média. COMENTÁRIO: Repare que os percursos entre a portagem 2 e as outras são metade do percurso entre a portagem 1 e 3. Repare também que estarmos a falar de velocidades ou de tempos é a mesma coisa se soubermos a distância. Pode achar conveniente definir um vector auxiliar com o mesmo tamanho do que o vector com os registos das viaturas onde vai colocar informação auxiliar para o ajudar a resolver o problema. 4.6 ITEM 5 - HISTOGRAMA No item 5 Histograma, pretende-se ver a distribuição dos tempos de permanência das viaturas de classe 2 entre as portagens 1 e 3, em ambos os sentidos. Os intervalos para o histograma devem ser de dez minutos e, para complicar, começar no intervalo da viatura que demorou menos tempo. O formato de saída dos dados deve obedecer ao seguinte: Intervalo de Tempo Número de viaturas xxh xxm xxs a xxh xxm xxs 3 xxh xxm xxs a xxh xxm xxs 0 xxh xxm xxs a xxh xxm xxs 0 xxh xxm xxs a xxh xxm xxs 4 xxh xxm xxs a xxh xxm xxs 5 xxh xxm xxs a xxh xxm xxs 1 COMENTÁRIO: Como deve compreender aqui não há mesmo comentário nenhum a fazer. A não ser que resoluções iguais entre trabalhos serão muito penalizadas (sem haver a tentativa de descobrir quem se inspirou em quem). AVISO: Vai-se comparar o código desta opção nos trabalhos de todos os grupos que a fizerem. Códigos considerados semelhantes serão sinalizados e os trabalhos terão uma nota máxima de 18 valores. Esta sinalização não é revogável nem sujeita a recurso. Programe o trabalho todo individualmente (ou no grupo) e resista ao impulso de ver soluções de outros grupos. 5 Material a distribuir aos alunos Na página da disciplina estarão disponíveis os seguintes ficheiros: 5

gestao A resolução completa deste trabalho reg.dat um ficheiro em modo binário com registos de viaturas reg.txt o ficheiro correspondente em modo texto Esta informação é a informação mínima de ajuda aos alunos para a execução do trabalho. Para o caso dos alunos pretenderem manipular, de algum modo, os ficheiros binários de registos são disponibilizados ainda os seguintes programas que produzem ou permitem ver os ficheiros como está mostrado na figura abaixo: aleat um executável que gera aleatoriamente um certo número de registos e acrescenta os dados a dois ficheiros (um de texto com a informação pronta para o criar_reg e outro em modo binário); $./aleat reg (ficheiros reg.dat e reg.txt) criar_reg um executável que acrescenta os dados a um ficheiro binário de registos a partir de informação do teclado (ou de um ficheiro de texto com a informação pedida ao teclado); $./criar_reg fich.dat (ficheiro fich.dat) ver_reg um executável que lê um ficheiro binário de registos. $./ver_reg fich.dat less (lista o ficheiro fich.dat) Como estes programas acrescentam os dados a ficheiros existentes, se quiser um ficheiro só com os dados produzidos no momento não se esqueça de apagar o ficheiro respectivo antes de correr o programa aleat.dat ver_reg.txt criar_reg.dat ver_reg teclado 6 Postura dos Alunos Cada grupo deve ter em consideração o seguinte: Não perca tempo com a estética de entrada e saída de dados Programe de acordo com os princípios gerais de uma boa codificação (utilização de indentação, apresentação de comentários, uso de variáveis com nomes conformes às suas funções...) e Proceda de modo a que o trabalho a fazer fique equitativamente distribuído pelos dois membros do grupo. 7 Datas Limite A data limite para entrega do trabalho de avaliação é no dia 25 de Janeiro de 2008, às 14 horas, excepto para o turno P3 que é às 17 horas. Não são permitidas entregas posteriores, sendo a nota do trabalho de zero valores. Tenha especial atenção a esta data de 25 de Janeiro por causa da pressão dos testes e outros trabalhos. As discussões dos trabalhos realizar-se-ão nas duas semanas seguintes. 6