Aquisição de imagens do sojourner (Parte 01)

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.
Mars Pathfinder
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
Mars data
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:
http://geo.pds.nasa.gov/missions/mpf/imp3d.html
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
clip_image002[6]
 
Apresenta o menu principal e pede para escolher a opção desejada
clip_image004[6]
Fornece “opcao(x)”
 
clip_image006[10]
 
Apresenta “submenu(x)” 
clip_image007[6]
Fornece “opcao(x)”
 
clip_image006[11]
 
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
      • O programa pede para escolher uma opção
      • O utilizador escolhe uma opção
    • + - 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
          + - 2) Apresentar lista de missões por
              factor de prioridade decrescente
                             (submenu2)
          • 2.1) Apresentada por ordem decrescente
          • 2.0) Regressar ao menu anterior
          + - 3) Remover missão manualmente
                          (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
          + - 4) Criar relatório da escolha da missão
                                    (submenu4)
          • 4.1) Limitar lista de missões por prioridade mínima
          • 4.2) Gerar relatório
          • 4.0) Regressar ao menu anterior



All + All -
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
      apresenta resultados
      • + - Programa executa
        a opção(x) selecionada
        • + - 1.1) Listar coleccção
          • Programa acede
            missoes_analisadas.dat
          • Programa apresenta
            a informação
        • + - 1.0) Regressar ao menu anterior
          • Programa regressa ao menu principal
All + All -                      Submenu
"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
            + - Programa apresenta
            resultados formatados
            • Programa apresenta
              mensagem de sucesso.
        • + - 2.0) Regressar ao menu anterior
          • Programa regressa ao menu principal
    • + - Processamento
      de dados
      • Programa acede a função
        correspondente à opção(x) selecionada
    • + - Introdução
      de dados
      • Programa pede uma opção
      • Utilizador introduz uma opção(x)

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
          • 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)
              • Processamento
                de dados
                • Programa actualiza o
                  missoes_analisadas.dat
              • Programa
                apresenta confirmação
                • Programa
                  apresenta submenu3
              Caso contrário o programa
              apresenta uma mensagem de erro Programa apresenta
              mensagem de sucesso

        • 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)
              • Processamento
                de dados
                • Programa actualiza o
                  missoes_analisadas.dat
              • Programa
                apresenta confirmação
                • Programa
                  apresenta submenu3


          • Introdução
            de dados
            • Programa pede ao utilizador
              o segmento que quer remover
            • Utilizador introduz indice
              do cromo a remover
          • Processamento
            de dados
            • Programa actualiza o  missoes_analisadas.dat
        • 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
          • 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)
              • Processamento
                de dados
                • Programa actualiza o
                  missoes_analisadas.dat
              • Programa
                apresenta confirmação
                • Programa
                  apresenta submenu3
              Programa apresenta
              mensagem de sucesso Caso contrário o programa
              apresenta uma mensagem de erro

        • 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
          • 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)
              • Processamento
                de dados
                • Programa actualiza o
                  missoes_analisadas.dat
              • Programa
                apresenta confirmação
                • Programa
                  apresenta submenu3
              Programa apresenta
              mensagem de sucesso

        • 3.0) Regressar ao menu anterior
          • Programa regressa
            ao menu principal

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 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)
            • Processamento
              de dados
              • Programa actualiza o
                missoes_analisadas.dat
            • Programa
              apresenta confirmação
              • Programa
                apresenta submenu4
        • 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
All + All - Submenu "Terminar programa"
  • + - 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
      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
        • Processamento
          de dados
          • Programa grava no ficheiro
            missoes_analisadas.dat
            consoante o input do utilizador
        • 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
            • Processamento
              de dados
              • Programa termina ou
                acede ao
                menu principal consoante
                o input do utilizador
            • 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.
opçcão 01
IMAGEM04
opcção 02
IMAGEM05
opcçao 03
IMAGEM06
opcçao 04
IMAGEM07
opcção 00
IMAGEM08
b) Algoritmo
  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
Enviar um comentário