No âmbito académico da disciplina de computação e programação do IST do curso de engenharia mecânica, a implementação em linguagem matlab a gestão de menus e submenus, em que o código requeira as instruções de selecção, repetição, entrada de dados pelo teclado, e saída de dados para o ecrã (Command Window) e ao escolher uma dada opção, em vez de executar a acção respectiva, o programa apresentará apenas uma mensagem ao utilizador dizendo “Escolheu a opção <nº da opção> ”. Este programa deverá estar completamente operacional, com transições entre menu e submenu, e pedidos de confirmação onde tal for especificado.
IMAGEM01
A descrição abaixo da aplicação do Processo de Desenvolvimento e os testes ao programa de acordo com o modelo, assim como um manual de utilização do programa e a documentação dos testes efetuados.
1 Contexto do problema
IMAGEM02
O problema parte da análise de dados adquiridos pela câmara e dos dispositivos de aterragem das possíveis missões de aterragem em Marte de um robô rasteirinho semelhante ao “Sojourner”. Os dados para análise devem ser descarregados do site:
Nesta directoria a NASA disponibiliza um grande número de ficheiros ASCII (ficheiros de texto, neste caso com extensão .tab), contendo dados resultantes da análise de imagens captadas pela câmara stereo do dispositivo de aterragem Mars Pathfinder lander IMAGEM02. O conteúdo destes ficheiros não deve de forma alguma ser modificado. Cada ficheiro contém um cabeçalho com uma descrição detalhada, e um conjunto de 6 colunas de dados, em que cada linha corresponde à análise de um ponto da imagem (pode visualizar os dados utilizando qualquer editor de texto, como por exemplo o Bloco de Notas do Windows).
A análise dos dados da imagem a “preto-e-branco”, para poder ser analisada matematicamente, é normalmente representada por uma matriz, em que em cada entrada na linha i coluna j da matriz guarda a intensidade luminosa do respectivo ponto da imagem. No entanto, no caso dos ficheiros anteriores, em cada linha estão os dados de um ponto da respectiva imagem: na coluna 1 o índice i, na 2 o índice j, e na 6 a intensidade. Nas colunas 3, 4 e 5 estão as coordenadas do espaço tridimensional (x, y, z) relativas à câmara, que foram calculadas pela própria NASA para esse ponto da imagem.
Suponha que numa tentativa de encontrar um determinado mineral, a sonda do robô deveria procurar no ponto de menor temperatura à superfície. Suponha também que esse ponto corresponde ao ponto de menor intensidade luminosa das imagens.
O programa deve ser capaz de realizar a análise e de gerar um relatório de forma automática, e para tal o programa terá que aceder a diversos conjuntos de dados, e proceder à análise adequada de acordo com as instruções do utilizador. Deve também ser criado um ficheiro de log (diário), listando alguns dados básicos de cada análise que permitirão estabelecer a prioridade das missões. Posteriormente o programa deve permitir escolher a partir deste log as análises que são efetivamente incluídas no relatório, com base no critério de prioridade da missão.
Um dos objectivos deste trabalho será implementar um programa utilizando a linguagem de alto nível MATLAB®, que torne possível todas as tarefas e requisitos para que o problema que é proposto.
Sendo este um problema bastante complexo e a solução ideal deste problema é a simplificação do problema principal, em vários outros problemas mais simples designando-se por sub-problemas, sendo preferível a escolha de uma utilização estrutural modular que permitisse enfrentar este problema de uma forma mais simples, sendo esta abordagem é também conhecida como “top-down”.
A implementação do programa acaba por gerir os dados adquiridos pelo robô, possuindo um menu organizado de uma forma lógica, o que torna bastante mais fácil e intuitiva a utilização simples do programa pelo utilizador.
O programa possui um menu principal, que se subdivide em outros menus específicos de uma função comum, como seja o caso do menu “Analisar um ficheiro de dados”, “Apresentar lista de missões por factor de prioridade decrescente”, “Remover missão manualmente” e o menu “Criar relatório da escolha da missão”. Dentro de cada menu existem as opções que executam as tarefas pretendidas. O programa acaba por ser bastante fácil de utilizar, muito acessível a todos os utilizadores e pode ser implementado com sucesso.
2 Projeto do programa
2.1 Projeto genérico
2.1.1 Entradas / Saídas
Entradas:
• Opções no menu e submenus Opção (x).
• Introdução do código numérico do ficheiro a analisar
• Remover análises do ficheiro por indicação da totalidade, ou de um segmento, do nome dos ficheiros a remover, ou por indicação de um intervalo de datas de análise.
• Introdução de (S/N) para remover ou não os dados.
• Introduzir o número de missões que deseja apresentar na lista de missões do relatório em html
• Introdução de (G) para gravar ou (T) para terminar sem gravar. (Opção “Terminar programa”).
• Introdução de (C) para confirmar ou (R) a saída do programa (Opção “Terminar programa”) [confirmar].
Saídas:
• Apresentar menu ou submenu (x).
• Apresentar listagem dos ficheiros disponíveis na directoria de trabalho que pretende analisar.
• Apresentar listagem das missões por factor de prioridade decrescente.
• Informação apresentada a mesma que a dos cabeçalho.
• Apresentar mensagem de sucesso ao executar a opção e de seguida apresentar submenu.
• Apresentar informações relativas das missões.
• Apresentar mensagem “Escolheu uma opção inválida” (quando o utilizador introduz uma opção inválida no sistema de menus).
• Apresentar mensagem “Informação indisponível” quando não existir resultados para as opções das listagens das missões.
• Apresentar mensagem de confirmação de remoção de dados do ficheiro.
• Apresentar pergunta ao utilizador se pretende gravar as alterações realizadas na colecção antes de sair.
• Apresentar mensagem de confirmação para terminar o programa.
2.1.2 Especificações Funcionais e Requisitos
A lista das Especificações Funcionais estão indicadas por (EP) e consequentemente os Requisitos pela referencia (REQ).
(EF) – Introduzida uma opção no menu.
(EF) – O programa processa e apresenta o submenu correspondente.
(EF) – É introduzida uma opção no submenu.
(EF) – O programa executa a acção correspondente à opção seleccionada.
(EF) – O programa regressa ao submenu.
(EF) – No sistema o programa apenas aceita caracteres alfanuméricos correspondentes às opções/submenus.
(EF) – O programa apenas aceita a introdução de uma cadeia caracteres alfabéticos quando se efectua a opção do menu e submenu ou na resposta à função de saída do programa através da opção (S) para 'Sim' confirmar ou (N) para 'Não' terminar o programa sem gravar e regressar ao programa.
(REQ) – Na opção “Terminar programa” o programa deve questionar o utilizador se pretende gravar as alterações que foram realizadas no ficheiro “missoes_analisadas.dat” e posteriormente o programa deve pedir a confirmação ao utilizador da sua decisão em terminar a aplicação.
(REQ) – Após a conclusão de qualquer das opções de qualquer submenu o programa deve regressar ao mesmo submenu.
(REQ) – Valor inteiro para identificar os dados da imagem a preto e branco, que estão nas 1, 2 e 6 coluna a partir da do “end”.
(REQ) – Valor decimal usado para indicar a posição da coordenada no espaço 3D.
(REQ) – Na opção “Remover missão manualmente” remove análises da missão caso o utilizador introduza um índice correspondente à totalidade, ou de um segmento, ou de um nome do ficheiro a remover, caso o ficheiro ou o dado valor não existir apresentar mensagem de erro e regressar ao submenu. Caso o utilizador introduzir os valores correctos o programa deve pedir a confirmação da remoção do dado de análise da missão.
(REQ) – Ao seleccionar uma opção inexistente em qualquer menu deste programa, aparecerá a mensagem “Escolheu uma opção inválida!”.
(REQ) – Ao seleccionar a opção “Apresentar lista de missões por factor de prioridade decrescente” além de ser apresentada a lista das missões devem de estar com ordenados de forma decrescentes.
(REQ) – Após a execução da opção “Remover missão manualmente” nos respectivos submenus deve de ser apresentada uma mensagem de sucesso.
(REQ) – Na opção “Gerar relatório” deverá apresentar o título, a data e a hora em que o relatório foi gerado, como se vê abaixo:
%% Relatório de análise de missões
%
% Data: <data da geração do relatório>
%
% Hora: <hora da geração do relatório>
%
% Grupo: <identificação dos autores pelo número de grupo>
%
(EF) – O programa apenas aceita a introdução de uma cadeia caracteres alfabéticos quando se efectua a opção do menu e submenu ou na resposta à função de saída do programa através da opção (G) para 'Gravar' e depois confirmar ou (T) para 'Terminar' o programa.
2.1.3 Métodos de processamento
Utilizador | Programa | |
| Apresenta o menu principal e pede para escolher a opção desejada | |
| ||
| Apresenta “submenu(x)” | |
| ||
| Executa função “opção(x)” |
3 Desenvolvimento do algoritmo
3.1.1 Abordagem Top-Down do programa
All + All -
Análise de possíveis missões de um robô -
- + - Intodução de dados
- + - O programa apresenta um menu
- 1) Analisar um ficheiro de dados
2) Apresentar lista de missões por factor de prioridade decrescente
3) Remover missão manualmente
4) Criar relatório da escolha da missão
0) Terminar o programa
- 1) Analisar um ficheiro de dados
- O programa pede para escolher uma opção
- O utilizador escolhe uma opção
- + - O programa apresenta um menu
- + - Processamento de dados
- O programa acede à função submenu correspondente a opção selecionada
- + - Apresentação de dados
- + - O programa apresenta
um de quatro submenu- + - 1) Analisar um ficheiro de dados
(submenu1)
- 1.1) Listar ficheiros na directoria de trabalho
- 1.0) Regressar ao menu anterior
factor de prioridade decrescente
(submenu2)
- 2.1) Apresentada por ordem decrescente
- 2.0) Regressar ao menu anterior
(submenu3)
- 3.1)Totalidade
- 3.2) Um segmento
- 3.3) Nome de um ficheiro
- 3.4)Intervalo de datas de análise
- 3.0) Regressar ao menu anterior
(submenu4)
- 4.1) Limitar lista de missões por prioridade mínima
- 4.2) Gerar relatório
- 4.0) Regressar ao menu anterior
- + - 1) Analisar um ficheiro de dados
- + - O programa apresenta
- + - Intodução de dados
Submenu
"Analisar um ficheiro de dados"
- + - SUBMENU 1) Analisar um ficheiro de dados
1.1) Listar ficheiros na directoria de trabalho
1.0) Regressar ao menu anterior
- + - Introdução
de dados- Programa pede uma opção
- Utilizador introduz uma opção(x)
- + - Processamento
de dados- Programa acede a função
correspondente à opção(x) selecionada
- Programa acede a função
- + - Programa
apresenta resultados- + - Programa executa
a opção(x) selecionada- + - 1.1) Listar coleccção
- Programa acede
missoes_analisadas.dat - Programa apresenta
a informação
- Programa acede
- + - 1.0) Regressar ao menu anterior
- Programa regressa ao menu principal
- + - 1.1) Listar coleccção
- + - Programa executa
- + - Introdução
"Apresentar lista de missões por
factor de prioridade decrescente"
- + - SUBMENU 2) "Apresentar lista de missões por
factor de prioridade decrescente"
2.1) Apresentada por ordem decrescente
2.0) Regressar ao menu anterior
- + - Programa
apresenta resultados- + - Programa executa
a opção(x) selecionada- + - 2.1) Apresentada por ordem decrescente
- + - Processamento
de dados
- Programa actualiza o ficheiro
missoes_analisadas.dat
resultados formatados
- Programa apresenta
mensagem de sucesso.
- Programa actualiza o ficheiro
- + - Processamento
- + - 2.0) Regressar ao menu anterior
- Programa regressa ao menu principal
- + - 2.1) Apresentada por ordem decrescente
- + - Programa executa
- + - Processamento
de dados- Programa acede a função
correspondente à opção(x) selecionada
- Programa acede a função
- + - Introdução
de dados- Programa pede uma opção
- Utilizador introduz uma opção(x)
- + - Programa
All + All -
Submenu "Remover missão manualmente"
- + - SUBMENU 3) Remover missão manualmente
3.1) Totalidade
3.2) Um segmento
3.3) Nome de um ficheiro
3.4) Intervalo de datas de análise
3.0) Regressar ao menu anterior
- Introdução
de dados- Programa pede uma opção
- Utilizador introduz uma opção(x)
- Processamento
de dados- Programa acede a função correspondente à opção(x) selecionada
- Programa
apresenta resultados- Programa executa
a opção(x) selecionada- 3.1) Totalidade
- Introdução
de dados- Programa pede ao utilizador
para remover todos os dados
Utilizador introduz a confirmação
- Programa pede ao utilizador
- Processamento
de dados- Programa actualiza o ficheiro missoes_analisadas.dat
- Programa
apresenta resultados- O programa apresenta um mensagem que alerta para esta situação
e pede para confirmar a remoção da totalidade dos dados
- Introdução
de dados- Programa
pede a confirmação (S)/(N) - Utilizador introduz (S)/(N)
- Programa
- Processamento
de dados- Programa actualiza o
missoes_analisadas.dat
- Programa actualiza o
- Programa
apresenta confirmação- Programa
apresenta submenu3
- Programa
apresenta uma mensagem de erro
Programa apresenta
mensagem de sucesso
- Introdução
- O programa apresenta um mensagem que alerta para esta situação
- Introdução
- 3.2) Um segmento
- Programa
apresenta resultados- Caso contrário o programa
apresenta uma mensagem de erro
Programa apresenta
mensagem de sucesso
O programa apresenta um mensagem que alerta para esta
situação e pede para confirmar a remoção de um segmento
- Introdução de dados
do segmento a remover- Programa
pede a confirmação (S)/(N) - Utilizador introduz (S)/(N)
- Programa
- Processamento
de dados- Programa actualiza o
missoes_analisadas.dat
- Programa actualiza o
- Programa
apresenta confirmação- Programa
apresenta submenu3
- Programa
- Introdução de dados
- Caso contrário o programa
- Introdução
de dados- Programa pede ao utilizador
o segmento que quer remover - Utilizador introduz indice
do cromo a remover
- Programa pede ao utilizador
- Processamento
de dados- Programa actualiza o missoes_analisadas.dat
- Programa
- 3.3) Nome de um ficheiro
- Introdução
de dados- Programa pede ao utilizador
o indice do cromo a remover - Utilizador introduz indice
do cromo a remover
- Programa pede ao utilizador
- Processamento
de dados- Programa actualiza o ficheiro missoes_analisadas.dat
- Programa
apresenta resultados- O programa apresenta um mensagem que alerta para esta
situação e pede para confirmar a remoção de um segmento
- Introdução do nome de
um ficheiro a remover- Programa
pede a confirmação (S)/(N) - Utilizador introduz (S)/(N)
- Programa
- Processamento
de dados- Programa actualiza o
missoes_analisadas.dat
- Programa actualiza o
- Programa
apresenta confirmação- Programa
apresenta submenu3
- Programa
mensagem de sucesso
Caso contrário o programa
apresenta uma mensagem de erro
- Introdução do nome de
- O programa apresenta um mensagem que alerta para esta
- Introdução
- 3.4) Intervalo de datas de análise
- Introdução
de dados- Programa pede ao utilizador
o indice do cromo a remover - Utilizador introduz indice
do cromo a remover
- Programa pede ao utilizador
- Processamento
de dados- Programa actualiza o ficheiro missoes_analisadas.dat
- Programa
apresenta resultados- Caso contrário o programa
apresenta uma mensagem de erro
O programa apresenta um mensagem que alerta para esta situação e
pede para confirmar a remoção de um intervalo de datas de análise
- Introdução do intervalo de
datas de análise a remover- Programa
pede a confirmação (S)/(N) - Utilizador introduz (S)/(N)
- Programa
- Processamento
de dados- Programa actualiza o
missoes_analisadas.dat
- Programa actualiza o
- Programa
apresenta confirmação- Programa
apresenta submenu3
- Programa
mensagem de sucesso
- Introdução do intervalo de
- Caso contrário o programa
- Introdução
- 3.0) Regressar ao menu anterior
- Programa regressa
ao menu principal
- Programa regressa
- 3.1) Totalidade
- Programa executa
- Introdução
All + All -
Submenu "Criar relatório da escolha da missão"
- + - SUBMENU 4) Criar relatório da escolha da missão
4.1) Limitar lista de missões por prioridade mínima
4.2) Gerar relatório
4.0) Regressar ao menu anterior
- Introdução
de dados- Programa pede uma opção
- Utilizador introduz uma opção(x)
- Processamento
de dados- Programa acede a função
correspondente à opção(x) selecionada
- Programa acede a função
- Programa apresenta
resultados- Programa executa
a opção(x) selecionada- 4.1) Limitar lista de missões prioridade mínima
- O programa pede números mínimos para as missões a incluir no relatório.
- Introdução
de dados- Programa
pede a confirmação (S)/(N) - Utilizador introduz (S)/(N)
- Programa
- Processamento
de dados- Programa actualiza o
missoes_analisadas.dat
- Programa actualiza o
- Programa
apresenta confirmação- Programa
apresenta submenu4
- Programa
- Introdução
- O programa pede números mínimos para as missões a incluir no relatório.
- 4.2) Gerar relatório
- Programa acede aos ficheiros e ordena-os
- Programa publica no formato html
- Cria um ficheiro relatorio.m
- As missões aparecem por ordem decrescente de prioridade
- 4.0) Regressar ao menu anterior
- Programa regressa ao menu principal
- 4.1) Limitar lista de missões prioridade mínima
- Programa executa
- Introdução
- + - 0) Terminar Programa
- Introdução
de dados- Programa pede uma opção
- Utilizador introduz uma opção(x)
- Processamento
de dados- Programa acede a função
correspondente à opção(x) selecionada
- Programa acede a função
- Programa
apresenta resultados - Programa executa
a opção(x) selecionada - Introdução
de dados- Programa pergunta ao
utilizador se pretende
gravar a listagem das missões
no missoes_analisadas.dat
Utilizador introduz (G) para gravar
ou (T) para terminar sem gravar
- Programa pergunta ao
- Processamento
de dados- Programa grava no ficheiro
missoes_analisadas.dat
consoante o input do utilizador
- Programa grava no ficheiro
- Programa apresenta
resultados - Programa pergunta ao utilizador
se confirma terminar o programa - Introdução
de dados- Utilizador introduz (S) para
confirmar a saida
ou (N) para não sair do
programa
- Utilizador introduz (S) para
- Processamento
de dados- Programa termina ou
acede ao
menu principal consoante
o input do utilizador
- Programa termina ou
- Programa apresenta
resultados - Programa apresenta menu
principal ou termina.
3.1.2 Lista de tarefas principais do programa
Menu O programa apresenta o menu: O programa pede para escolher uma opção. O utilizador escolhe uma opção. O programa acede à função submenu correspondente a opção seleccionada.
Submenu1
1) O programa apresenta o submenu1: O programa pede para escolher uma opção. O utilizador escolhe uma opção. Programa executa a opção seleccionada.
1.1) Listar ficheiros na directoria de trabalho:
Programa acede missoes_analisadas.dat.
Programa apresenta informação dos ficheiros disponíveis.
1.0) Regressar ao menu anterior:
Programa regressa ao menu principal.
Submenu2
2) O programa apresenta o submenu2
O programa pede para escolher uma opção.
O utilizador escolhe uma opção.
Programa executa a opção seleccionada.
2.1) Apresentar por ordem decrescente
Apresentar lista de missões por factor de prioridade decrescente.
2.0) Regressar ao menu anterior
Programa regressa ao menu principal.
Submenu3
3) Programa pede uma opção
Utilizador introduz uma opção.
Programa acede à função correspondente à opção seleccionada.
3.1) Remover missão manualmente da Totalidade
Programa pede ao utilizador se deseja remover os dados na totalidade.
Utilizador introduz a confirmação.
Programa apresenta mensagem de sucesso.
3.2) Um segmento
Programa pede ao utilizador um segmento a remover.
Utilizador introduz o segmento a remover.
Programa verifica se existe e se existir remover se não dá erro.
Programa actualiza o missoes_analisadas.dat.
Programa apresenta mensagem de sucesso.
3.3) Nome de um ficheiro
Programa pede ao utilizador o nome de um ficheiro a remover.
Utilizador introduz o nome a remover.
Programa verifica se existe e se existir remover se não dá erro.
Programa actualiza o missoes_analisadas.dat.
Programa apresenta mensagem de sucesso.
3.4) Intervalo de datas de análise
Programa pede ao utilizador um intervalo de datas a remover.
Utilizador introduz o nome a remover.
Programa verifica se existe e se existir remover se não dá erro.
Programa actualiza o missoes_analisadas.dat.
Programa apresenta mensagem de sucesso.
3.0) Regressar ao menu anterior
Programa regressa ao menu principal.
Submenu4
4) Programa pede uma opção
Utilizador introduz uma opção.
Programa acede a função correspondente à opção seleccionada.
4.1) Limitar lista de missões por prioridade mínima.
O programa pede números mínimos para as missões a incluir no relatório.
Utilizador introduz os números mínimos de missões.
Programa verifica se existe e se existir remover se não dá erro.
Programa actualiza o missoes_analisadas.dat.
Programa apresenta mensagem de sucesso.
4.2) Gerar relatório.
O programa acede aos ficheiros e ordena-os por ordem decrescente de prioridades.
O programa pública no formato html.
Cria um ficheiro relatorio.m.
Programa apresenta mensagem de sucesso.
4.0) Regressar ao menu anterior
Programa regressa ao menu anterior.
Submenu “Terminar programa”
0) Programa pede uma opção
Utilizador introduz uma opção.
Programa acede a função correspondente à opção seleccionada.
0.0) Programa pergunta ao utilizador se pretende gravar as alteramções realizadas no ficheiro missoes_analisadas.dat
Utilizador introduz (G) para gravar ou (T) terminar sem gravar.
Programa termina ou acede ao menu principal consoante a input do utilizador.
3.1.3 Algoritmo do programa
Apresentação dos algoritmos usados para descrever a solução do problema usando pseudo-código, e invocando as tarefas identificados do ponto anterior.
Menu principal:
1. Programa apresenta meumenu.
2. Programa pede opcao.
3. Utilizador introduz opcao.
4. Programa faz switch opcao.
5. Programa executa case de acordo com a opcao.
5.1 Case 1
Programa apresenta submenu1.
5.2 Case 2
Programa apresenta submenu2.
5.3 Case 3
Programa apresenta submenu3.
5.4 Case 4
Programa apresenta submenu4.
5.5 Case 0 5.5.01 Programa apresenta mensagem “Pretende gravar as alterações realizadas no ficheiro missoes_analisadas.dat?” .
5.5.02 Utilizador introduz opcao0 (“Opção (G para (G)ravar ou T para (T)erminar sem gravar”).
5.5.03 If opcao0 =G 5.5.03.1 Programa deve guardar todas as alterações efectuadas no ficheiro missoes_analisadas.dat - T. 5.5.03.1.1.1 Programa prossegue sem efectuar a gravação dos dados alterados.
5.5.04 Programa apresenta mensagem “Confirme para terminar o programa.
5.5.05 Utilizador introduz confirmar (Opção (S) para "Sim" ou N para "Não" terminar o programa:) . 5.5.05.1.1 If confirmar = S. 5.5.05.1.1.1 Break R.
5.5.05.1.1.2 Programa apresenta meumenu.
Submenu 1) Analisar um ficheiro de dados
1. Programa apresenta submenu1.
2. Programa pede opcao1.
3. Utilizador introduz opcao1.
4. Programa faz switch opcao1.
5. Programa executa case de acordo com a opcao1. 5.1 Case 1
5.1.01 Programa apresenta mensagem “Escolheu a opção 1.1) ” .
5.1.02 Programa apresenta a listagens existentes na directoria de trabalho missoes_analisadas.dat.
5.1.02 Programa gera uma lista dos ficheiros na directoria de trabalho.
5.2 Case 0 5.2.01 Programa apresenta meumenu.
Submenu 2) Apresentar lista de missões por factor de prioridade decrescente
1. Programa apresenta submenu2.
2. Programa pede opcao2.
3. Utilizador introduz opcao2.
4. Programa faz switch opcao2.
5. Programa executa case de acordo com a opcao2. 5.1 Case 1
5.1.01 Programa apresenta mensagem “Escolheu a opção 2.1) ” .
5.1.02 Programa pede para apresentada por ordem decrescente.
5.1.04 Programa apresenta lista de missões por factor de prioridade decrescente.
5.1.05 Programa apresenta mensagem de sucesso.
5.2 Case 2 5.2.01 Programa apresenta meumenu.
Submenu 3) Remover missão manualmente
1. Programa apresenta submenu3.
2. Programa pede opcao3.
3. Utilizador introduz opcao3.
4. Programa faz switch opcao3.
5. Programa executa case de acordo com a opcao3. 5.1 Case 1
5.1.01 Programa apresenta mensagem “Escolheu a opção 3.1) ”.
5.1.02 Programa pede para o utilizador introduzir data.
5.1.02 Utilizador introduz data.
o Programa find data em missoes_analisadas.dat. o if data introduzida for = 0 em missoes_analisadas.dat. § Apresentar “Informação Indisponível!”.
o if data introduzida for 0 em missoes_analisadas.dat.
§ delete all “Informação Indisponível!”.
o Apresentar meumenu. 5.2 Case 2
5.2.01 Programa apresenta mensagem “Escolheu a opção 3.2) ” .
5.2.02 Programa pede para o utilizador introduzir keyword.
5.2.03 Utilizador introduz keyword.
§ Programa find keyword nos dados. o if keyword introduzida for 0 em missoes_analisadas.dat. § Apresenta mensagem para remoção do segmento correspondente.
§ Apresentar confirmação da remoção do segmento.
§ Actualizar missoes_analisadas.dat.
o Apresentar submenu3. 5.3 Case 3
5.2.01 Programa apresenta mensagem “Escolheu a opção 3.3) ”.
5.2.02 Programa pede para o utilizador introduzir keyword.
5.2.03 Utilizador introduz keyword.
§ Programa find keyword nos dados. o if keyword introduzida for 0 em missoes_analisadas.dat. § Apresenta mensagem para remover por nome a análise do ficheiro.
§ Apresentar confirmação da remoção do nome.
§ Actualizar missoes_analisadas.dat.
o Apresentar submenu3. 5.4 Case 4
5.2.01 Programa apresenta mensagem “Escolheu a opção 3.4) ” .
5.2.02 Programa pede para o utilizador introduzir keyword.
5.2.03 Utilizador introduz keyword.
§ Programa find keyword nos dados. o if keyword introduzida for 0 em missoes_analisadas.dat. § Apresenta mensagem para remoção de um intervalo de datas de análise.
§ Apresentar confirmação da remoção do segmento
§ Actualizar missoes_analisadas.dat.
o Apresentar submenu3. 5.5 Case 0 5.5.01 Programa apresenta meumenu.
Submenu 4) Criar relatório da escolha da missão
1. Programa apresenta submenu4.
2. Programa pede opcao4.
3. Utilizador introduz opção4.
4. Programa faz switch opcao4.
5. Programa executa case de acordo com a opcao4.
5.1.01 Case 1
§ Programa apresenta mensagem “Escolheu a opção 4.1) ” .
§ Apresentar a limitação da lista de missões por prioridade mínima.
§ Apresentar submenu4.
5.1.02 Case 2
§ Programa apresenta mensagem “Escolheu a opção 4.2) ” .
§ Gera relatório relatorio.m.
§ Apresentar submenu4.
3.2 Projecto detalhado dos módulos
É precisamente durante a realização da abordagem top-down do projecto genérico que se identificam os potenciais módulos do programa, e as tarefas que são utilizadas repetidamente e que, por isso, devem dar origem a outros módulos ou funções. Durante a análise são identificadas e acrescentadas as funções/módulos que são convenientes.
3.2.1 Módulo
a) Entradas/Saídas
Entradas
Para o correcto funcionamento do programa, é necessário introduzir opções que sejam validas, isto é, que satisfaçam as condições que são impostas pelo programa (normalmente as instruções que aparecem no menu, submenu ou opção).
Saídas
Os resultados obtidos na parte dos ensaios realizados, correspondem na íntegra aos ficheiros de output disponibilizado na página web da NASA com vista a ser utilizado como ficheiro controlo/exemplo. Uma vez que os resultados apresentados pelo programa coincidem com o output disponibilizado, tendo apenas utilizado as mesmas entradas para obter os mesmo resultados e concluir que os resultados estão correctos.
Exemplos das entradas e saídas do programa.
IMAGEM04
IMAGEM05
IMAGEM06
IMAGEM07
IMAGEM08
b) Algoritmo
o
Entrada | Saída | ||
Esperado | Programa | ||
Menu Principal | 2 | Submenu 1 | Submenu1 |
2 | Submenu 2 | Submenu 2 | |
3 | Submenu 3 | Submenu 3 | |
4 | Submenu 4 | Submenu 4 | |
0 | Questão da gravação. Questão de confirmação do encerramento do programa | Questão da gravação. Questão de confirmação do encerramento do programa | |
Submenu 1) Analisar um ficheiro de dados | 1 | Escolheu a opção 1.1) | Escolheu a opção 1.1) |
0 | Menu | Menu | |
Submenu 2) Apresentar lista de missões por factor de prioridade decrescente | 1 | Escolheu a opção 2.1) | Escolheu a opção 2.1) |
0 | Menu | Menu | |
Submenu 3) Remover missão manualmente | 1 | Escolheu a opção 3.1) | Escolheu a opção 3.1) |
2 | Escolheu a opção 3.2) | Escolheu a opção 3.2) | |
3 | Escolheu a opção 3.3) | Escolheu a opção 3.3) | |
4 | Escolheu a opção 3.4) | Escolheu a opção 3.4) | |
0 | Menu | Menu | |
Submenu 4) Criar relatório da escolha da missão | 1 | Escolheu a opção 4.1) | Escolheu a opção 4.1) |
2 | Escolheu a opção 4.2) | Escolheu a opção 4.2) | |
0 | Menu | Menu |
Sem comentários:
Enviar um comentário