PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012



Documentos relacionados
Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

COMPUTAÇÃO e PROGRAMAÇÃO

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011

Programação III / Estruturas de Dados. Enunciado do Trabalho Prático

A4 Projeto Integrador e Lista de Jogos

MANUAL COMO CRIAR UM PROJETO

Plataforma de Benefícios Públicos Acesso externo

Manual de Utilizador Documentos de Transporte. TOConline. Suporte. Página - 1

Programação 2ºSemestre MEEC /2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

MicroMIX Comércio e Serviços de Informática, Lda.

Relatório SHST

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

Manual do Utilizador

Capítulo Tabelas e Gráficos

Terceira Avaliação Visualg & Pascal

MANUAL DO UTILIZADOR

Para criar a conta faça clique no separador. Abre um formulário com campos que terá que preencher. Basta ir seguindo

Engenharia de Software. Enunciado da Primeira Parte do Projecto

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Processo de Controle das Reposições da loja

Internet e no Akropole. Internet e no Akropole

Actualização. Versão 5.3.1

Programação 2. Trabalho Prático P4B. Efectue as tarefas de programação descritas abaixo, usando a linguagem C++ em ambiente Linux.

Manual de Utilização do Sítio da Disciplina

Aplicações de Escritório Electrónico

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Guia Site Empresarial

Copyright 2008 GrupoPIE Portugal, S.A.

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

1. Lançamento em Contas Bancárias Liquidação de Clientes

CGA Directa. Manual do Utilizador. Acesso, Adesão e Lista de Subscritores

Seu manual do usuário EPSON LQ-630

Importação de Dados no Sphinx

AMBIENTE DE PROGRAMAÇÃO PYTHON

Introdução aos critérios de consulta. Um critério é semelhante a uma fórmula é uma cadeia de caracteres que pode consistir em

Como funciona? SUMÁRIO

Aplicações de Escritório Electrónico

Engenharia de Software. Enunciado da Segunda Parte do Projecto

ZSRest. Manual Configuração. Cartão de Cliente/Fidelização. V2011-Certificado

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Guia rápido do utilizador

Manual do utilizador. Aplicação de agente

Reservas de viagens de avião

20 Caracteres - Tipo char

Fórmulas e Funções 7

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

Programa de Parcerias e Submissão de Propostas 2014/15

COMPETÊNCIAS BÁSICAS EM TIC NAS EB1

ZSRest. Manual Profissional. Comandos Rádio X64. V2011-Certificado

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Usando o Excel ESTATÍSTICA. Funções

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Manual de Utilização. GESTOR DE METADADOS DOS AÇORES (GeMA) Setembro de Versão 4.0

Aplicações de Escritório Electrónico

Manual do Visualizador NF e KEY BEST

MICROSOFT POWERPOINT

Orientação a Objetos

Tutorial de Matlab Francesco Franco

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

ZS Rest. Manual Avançado. Menus. v Certificado

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Oficina de Construção de Páginas Web

Análise de Sistemas Não Lineares por Plano de Fase Recorrendo ao MATLAB

Base de Dados para Administrações de Condomínios

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Tarefa Orientada 16 Vistas

MANUAL PAPELETA MOTORISTA Criado em: 15/02/2013 Atualizado em: 12/11/2014

Guia passo a passo para o preenchimento do formulário de candidatura. Junho 2008

Utilização do SOLVER do EXCEL

OPENOFFICE PLANILHA SEMANA 4

Portal AEPQ Manual do utilizador

Bases de Dados. Lab 1: Introdução ao ambiente

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2005/ Valores

Preenchimento dos Pedidos de Credenciamento Provisório, Credenciamento 5 anos, Recredenciamento e Aumento de Vagas

Novo Formato de Logins Manual de Consulta

Projecto de Programação MEEC /2011-1ºSemestre. Mestrado Integrado em Engenharia Electrotécnica e de Computadores

Sistema Operativo em Ambiente Gráfico

Dicas para usar melhor o Word 2007

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

Regulamento de Vigilâncias de Provas Escritas de Avaliação do DEEC

Um sistema SMS 1 simplificado

Acronis Servidor de Licença. Manual do Utilizador

Oficina de Construção de Páginas Web

EAmb V.1 ESPOSENDE AMBIENTE. GestProcessos Online. Manual do Utilizador

O Processo de Programação

CADERNOS DE SOCIOMUSEOLOGIA Nº

1. INTRODUÇÃO OBJETIVO FORMAS DE ACESSO COMO ACESSAR O SISTEMA? ESQUECI MINHA SENHA, O QUE DEVO FAZER?

SISTEMA DE INFORMAÇÃO DAS PARTICIPAÇÕES DO ESTADO

Neste método o cálculo é efetuado de maneira exponencial, ou seja, juros são computados sobre os juros anteriormente calculados.

Manual SAGe Versão 1.2 (a partir da versão )

Manipulação de Células, linhas e Colunas

CENTRO DE INFORMÁTICA

Emissão de Recibos a Clientes e Avisos de Lançamento a Fornecedores

Manual do Gestor da Informação do Sistema

Transcrição:

Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012 Mestrado Integrado em Engenharia Electrotécnica e de Computadores 1º ano 2º semestre Trabalho Final Reservas de viagens de avião http://tele1.dee.fct.unl.pt/pm Paulo da Fonseca Pinto

2

1 Introdução O trabalho final consiste numa sequência de procedimentos de dificuldade crescente que tratam de reservas de lugares de avião. O trabalho cobre várias perspectivas: Operações que um operador de transporte aéreo tem de efectuar (Ex. atribuir um tipo de avião a um voo); Operações que um viajante tem de efectuar (Ex. reserva de um lugar num avião) Operações com um caracter mais de programação que foram necessárias para a realização deste enunciado e que se exigem dos alunos para a obtenção de uma classificação mais elevada (Ex. preenchimento automático de uma percentagem da capacidade de um avião) Os alunos devem começar pelo início (evidentemente) fazendo sequencialmente os vários procedimentos. As classificações mostradas são apenas indicativas da classificação que o aluno poderá ter. Outras considerações podem fazer com que a nota seja diferente: avaliação de cada aluno ao longo do semestre nas aulas de laboratório, outras considerações sobre este próprio trabalho, como: qualidade do código; legibilidade; indentação; simplicidade; etc. 2 Ficheiros iniciais 2.1 Airbus3xx Vai-se considerar apenas os aviões da Airbus com corredor único e capacidade inferior a 200 passageiros (a família Airbus 320, que tem quatro tipos). Como sabe, o número de filas de um avião é dependente da vontade do operador (os operadores de baixo custo usam aviões de cada tipo com mais filas, por exemplo). Como o número de filas de cada tipo pode ser variável, existem ficheiros com a estrutura de um dado tipo de avião: Airbus318, Airbus319, Airbus320, e Airbus321. Se existissem duas versões diferentes de um mesmo tipo, por exemplo o Airbus318, existiriam dois ficheiros com a estrutura de cada um deles (por exemplo, Airbus318a e Airbus318b ). Vamos considerar apenas uma estrutura de avião por tipo neste trabalho. O ficheiro Airtbus3xx é um ficheiro de texto e contém em cada linha o número de cadeiras em cada fila, por ordem crescente. Quando existem quatro cadeiras a classe é a executiva. Quando existem seis cadeiras, a classe é a turística. Como pode ver, quando estiver a programar, a capacidade do avião que está a tratar nesse momento varia. Assim, por exemplo, tem de ter um número máximo de posições para tratar o maior avião, mas pode ser que esteja a utilizar os dados que definiu somente em parte. Aconselha-se que tenha duas variáveis com a capacidade real do avião que está a tratar (filas de executiva e filas de turística) e que definirão o máximo de posições a usar nesse momento. Assuma os valores máximos do Airbus321. 3

Os ficheiros criados têm a seguinte estrutura para os quatro aviões (na última coluna estão indicados os números de passageiros sugeridos pela Airbus) Modelo Executiva Turística Filas Lug. Filas Lug. Total Airbus Airbus 318 3 12 16 96 108 107 Airbus 319 4 16 18 108 124 124 Airbus 320 5 20 22 132 152 150 Airbus 321 6 24 27 162 186 185 2.2 Nomes e Apelidos Existem dois ficheiros de texto com nomes próprios Portugueses e Apelidos Portugueses. São ficheiros de texto com os nomes nomes e apelidos e contêm um nome/apelido em cada linha. Considere que o máximo são 900 nomes ou apelidos e que cada um pode estar guardado num vector de 20 posições. Existem outros dois ficheiros com informação não tratada de nomes e apelidos. Foram os ficheiros que foram usados para se produzir os anteriores. Estes ficheiros têm o nome de nomes_original e apelidos_original. Só serão usados se o aluno quiser fazer um trabalho na faixa dos 18 aos 20 valores. Cada tipo de avião tem um ficheiro em tantas linhas como filhas de cadeiras no avião e cada linha tem o número de lugares na respectiva fila. Uma fila com 4 cadeiras pertence à classe executiva e uma fila com seis cadeiras à classe turística. 3 Ficheiros de voos Cada voo tem um ficheiro binário para o descrever. Por exemplo, o voo TP1048 de Lisboa para Barcelona tem um ficheiro com o nome TP1048. Este ficheiro começa com um inteiro com o número do avião (318, 319, 320, ou 321). Depois tem um conjunto de dados para cada lugar. O total desses conjuntos é a dimensão do avião. Por exemplo, se um avião tem 150 lugares, existem 150 conjuntos de dados após o primeiro inteiro. Como se sabe quantos conjuntos são, e de que classe? ATENÇÃO: Depois de se ler o primeiro inteiro, tem de se ir ler o ficheiro Airbus3xx para saber quantos conjuntos de dados estão gravados no ficheiro TP1048, e de que classe são. Aconselha-se os alunos a fazer uma função que lê ficheiros do tipo Airbus3xx e devolva o número de filas de executivo e de turístico. Deste modo, não tem sempre de estar a escrever o código para ler o ficheiro em cada função do menu do programa em que tal for preciso (basta chamar a função). Para cada lugar a informação contante é a seguinte: char ocupado; char nome [100]; char checked_in; int id_bagagem; int id_cod_reserva; 4

Quando um lugar está reservado o valor de ocupado é 1 (inteiro) e a restante informação está preenchida. Quando o lugar está vazio o valor de ocupado é zero (inteiro) e a informação que pode estar nos outros campos é indefinida. Por exemplo: Num avião que tenha 4 filas de executiva e 20 filas de turística, o ficheiro de voo começa com um inteiro com o valor do tipo do avião (cujo ficheiro tem a informação das filas), seguido de 136 estruturas (4x4+6x20) como a de cima tudo em binário. 4 Programa A execução do programa está dividida em quatro grupos de dificuldade crescente. O menu total tem 10 opções e está mostrado em baixo com uma linha de intervalo para identificar os vários grupos Recorda-se os alunos que não é permitido o uso de variáveis globais. Como a variável que vai conter as reservas de um voo é de dimensão muito reduzida, não há necessidade de a declarar como static (ver livro). Negócio Aéreo 0 - Sair do programa 1 - Mostrar a estrutura de um avião 2 - Mostrar a ocupação de um voo 3 - Mostrar o nome dos passageiros com reserva num voo 4 - Efectuar a reserva de um voo com escolha de lugar 5 - Alterar o lugar de uma reserva 6 - Atribuir um avião a um voo específico (abertura de voo) 7 - Preencher um voo com passageiros aleatórios 8 - Histograma de ocupação de voo por tipo de lugar 9 - Geração do ficheiro de nomes e apelidos 5

5 Grupo 1: Manipulação básica de ficheiros e visualização simples de informação O primeiro conjunto de procedimentos consiste nas opções 0 a 3. Elas versam a manipulação básica de ficheiros de texto e binário, como a sua leitura e escrita, assim como a manipulação e visualização básica de dados. A classificação indicativa para os alunos que tenham executado apenas esta parte com sucesso é de 10 a 13 valores. 5.1 Mostrar a estrutura de um avião A primeira opção consiste em mostrar a estrutura de um certo tipo de avião em termos de filas das classes executiva e turística. O programa deve perguntar quais dos A3xx se pretende. Lê esse ficheiro e coloca a informação no ecrã. A mostragem da estrutura de um avião pode ser feita de dois modos: 1. Se o programa for corrido sem parâmetros, mostra o menu e tem de se seleccionar a opção 1 e o programa pede o tipo do avião. 2. Se o programa for corrido com um parâmetro (como está mostrado em baixo) ele lê logo o ficheiro com o nome fornecido, mostra a estrutura e vai depois para o menu. $./tunl A318 O programa deve também poder ser corrido de um modo habitual no Linux para se saber como é a sintaxe dos programas. Ao ser chamado como mostrado em baixo o programa deve escrever os modos como pode ser corrido $./tunl -h 5.2 Mostrar a ocupação de um voo Esta opção mostra os vários lugares do avião para um certo voo (ex. TP1048) indicando quais os livres e os ocupados. Atenção que o número de filas depende do avião que está a ser usado nesse voo e essa indicação aparece no primeiro campo do ficheiro de voo. Tem de ler o ficheiro do tipo de avião primeiro, e depois ler o do voo mostrando a informação no final. 5.3 Mostrar o nome dos passageiros com reservas num voo Esta opção é semelhante à anterior no que diz respeito à obtenção de informação de um voo. O que se pretende agora é que sejam escritos para cada lugar ocupado a fila, a cadeira e o nome da pessoa que vai viajar. 6

6 Grupo 2: Tratamento elaborado de informação O segundo conjunto de procedimentos consiste no manuseamento mais elaborado da informação. A classificação indicativa para os alunos que tenham executado a parte anterior e esta parte é de 13 a 16 valores. 6.1 Efectuar reserva de um voo Esta opção permite reservar um lugar num voo. Obviamente, o voo tem de existir, pelo que o programa deve perguntar o nome do voo (ex. TP1048). Abre o ficheiro para ver que tipo de avião o vai executar, lê o ficheiro do avião para saber a estrutura (opç e depois lê o ficheiro até ao fim. Mostra a ocupação ao utilizador (igual à opção 2) e pergunta a fila e o lugar ao utilizador. Se esse lugar estiver vazio aceita a reserva pedindo a informação necessária. No final escreve o ficheiro com os dados actualizados, mantendo o mesmo nome, evidentemente. 6.2 Alterar o lugar de uma reserva Esta opção permite que um utilizador que já tenha uma reserva possa mudar de lugar. A segurança é feita pedindo ao utilizador o nome e comparando com o nome onde o utilizador diz que está. É muito parecida com a opção anterior, mas em vez de o utilizador indicar um lugar para o reservar para si, indica um lugar onde presumivelmente está e se escrever o nome correcto, deve indicar outro lugar para onde deseja ir. Claro que este novo lugar tem de estar vago (tal como na opção anterior, desta vez). 6.3 Atribuir um avião a um voo (abertura de voo) Esta opção permite criar um voo. Por exemplo, o voo TP1048. O programa deve perguntar o nome do voo que será o nome do ficheiro. Depois deve perguntar o tipo de avião para esse voo. O programa deve ir ler o ficheiro do tipo de avião que foi escolhido para saber quantas filas há e de que classe. Depois deve escrever o inteiro do tipo de avião no ficheiro novo e escrever os dados para todos os lugares indicando que estão vazios. Esta opção deve poder ser executada a partir da linha de comandos do seguinte modo: $./tunl TP1048 A318 7

7 Grupo 3: Tratamento avançado de informação O terceiro conjunto de procedimentos consiste no tratamento avançado de informação. A classificação indicativa para os alunos que tenham executado todas as partes incluindo esta é de 16 a 18 valores. 7.1 Preencher um voo com passageiros aleatórios Esta opção permite encher um voo aleatoriamente. A percentagem de ocupação do avião deve ser determinada aleatoriamente, os lugares onde os passageiros se vão sentar devem ser determinados aleatoriamente, os nomes próprios dos utilizadores assim como os seus apelidos devem ser determinados aleatoriamente a partir dos ficheiros nomes e apelidos, e finalmente os identificadores de bagagem e de reserva também devem ser determinados aleatoriamente. 8

8 Grupo 4: Tratamento muito avançado de informação O quarto e último conjunto de procedimentos consiste na execução de tarefas muito avançadas de manipulação de informação e sua representação gráfica. A classificação indicativa para os alunos que tenham executado todas as partes anteriores e também esta é de 18 a 20 valores. Tenha em atenção o aviso no final desta secção. 8.1 Histograma Esta opção gera um histograma da ocupação de um voo. O programa deve perguntar o nome do voo (ex., TP1048) e deve mostrar a percentagem de ocupação do voo, a percentagem de ocupação dos lugares de executiva, de turística, de lugares à janela, de lugares ao corredor, e finalmente dos lugares do meio. O máximo de asteriscos indicadores dos vários valores deve ser de 70 (ou o comprimento de uma linha no terminal) e deve ser o valor máximo de todos os anteriores. Os outros estão em proporção directa. Esta opção não foi implementada pelo corpo docente no trabalho deste semestre. 8.2 Geração dos ficheiros de nomes e apelidos Esta opção deve ser implementada num programa diferente. O objectivo é usar os ficheiros nomes_original e apelidos_original para gerar os ficheiros nomes e apelidos que são usados na opção7. AVISO: O Regente da disciplina vai comparar o código deste grupo 4 nos trabalhos de todos os alunos que o fizerem. Códigos considerados pelo Regente como semelhantes implicarão que a nota máxima do trabalho seja de 18 valores. Esta decisão não é revogável nem sujeita a recurso. Não arrisque. Programe o trabalho todo individualmente (ou no grupo) e resista ao impulso de ver soluções de outros grupos, ou de ter trocas de ideias com outros grupos de uma forma muito perto da linguagem C. 9

9 Relatório do Trabalho Os alunos devem produzir um relatório do trabalho seguindo as indicações do ficheiro em WORD que está no sítio do trabalho final. Neste semestre as classificações do relatório serão apenas ilustrativas, com as seguintes excepções que implicam reprovação: Um relatório com mais do que uma página. Um relatório muito ilegível e pouco claro. Um relatório sem um mínimo de informação. 10 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. 11 Datas Limite A data limite para entrega do trabalho de avaliação é o dia 3 de Junho de 2012, às 18:00 horas por correio electrónico enviado ao docente do laboratório (ver endereços nas páginas da disciplina). Deve ser entregue o ficheiro de código C (.c) e o ficheiro WORD ou PDF com o relatório. Aconselha-se os alunos a contactarem o docente o mais rapidamente possível para marcar a data da discussão, que se realizará nas semanas seguintes. Não são permitidas entregas posteriores, sendo a nota do trabalho de zero valores. Planeie metas ao longo deste período até dia 3 para não deixar acumular trabalho na última semana e com isso prejudicar outras disciplinas (tanto na parte de testes como de trabalhos). Adiante o trabalho para não sofrer muita pressão no final do prazo. Existem quatro semanas de aulas (o mês de Maio) para a execução do trabalho nas aulas de laboratório. Use-as bem para ir avançando no trabalho e executar o mínimo fora das aulas. 10