2º Trabalho: ENTREGA

  • Enunciado e dados: Enunciado do 2º Trabalho_ b e alunos.mat
  • Entrega : submissão electrónica, via Fénix .
  • Data de entrega 11/01/2009, até às 23h59 .
    • Apenas dos ficheiros de código ( .m) , em que em todos os ficheiros .m devem estar devidamente identificados os números e nomes dos alunos do grupo .
    • Estes ficheiros devem ser comprimidos num ficheiro com extensão .zip ou .rar, com a seguinte denominação: CP_TRAB_2_GRUPO_[Número do grupo]
      • Exemplo: CP_TRAB_2_GRUPO_001.zip ou CP_TRAB_2_GRUPO_001.rar
    • A entrega do ficheiro comprimido deverá ser feita via Fénix, mediante o número do grupo :
      • Projecto: Submissão Electrónica: ENTREGA do 2º TRABALHO (MATLAB) [GRUPOS: 1--47]
      • Projecto: Submissão Electrónica: ENTREGA do 2º TRABALHO (MATLAB) [GRUPOS: 48--95]
      • Projecto: Submissão Electrónica: ENTREGA do 2º TRABALHO (MATLAB) [GRUPOS: 96--143]
      • Ler instruções contidas no ficheiro Submissão_Electrónica_Fenix.pdf (NOTA: Apenas um aluno do grupo deve fazer a submissão).
    • Caso exista alguma dificuldade nesta submissão via Fénix, os alunos devem enviar, dentro do prazo estabelecido, o ficheiro comprimido para o e-mail: mps@ist.utl.pt
      • O assunto ( subject) do e-mail deve ser obrigatoriamente: CP_TRAB_2_GRUPO_[Número do grupo]
      • Exemplo: CP_TRAB_2_GRUPO_001


2º Trabalho: ENTREGA

  • Enunciado e dados: Enunciado do 2º Trabalho_ b e alunos.mat
  • Entrega : submissão electrónica, via Fénix .
  • Data de entrega 11/01/2009, até às 23h59 .
    • Apenas dos ficheiros de código ( .m) , em que em todos os ficheiros .m devem estar devidamente identificados os números e nomes dos alunos do grupo .
    • Estes ficheiros devem ser comprimidos num ficheiro com extensão .zip ou .rar, com a seguinte denominação: CP_TRAB_2_GRUPO_[Número do grupo]
      • Exemplo: CP_TRAB_2_GRUPO_001.zip ou CP_TRAB_2_GRUPO_001.rar
    • A entrega do ficheiro comprimido deverá ser feita via Fénix, mediante o número do grupo :
      • Projecto: Submissão Electrónica: ENTREGA do 2º TRABALHO (MATLAB) [GRUPOS: 1--47]
      • Projecto: Submissão Electrónica: ENTREGA do 2º TRABALHO (MATLAB) [GRUPOS: 48--95]
      • Projecto: Submissão Electrónica: ENTREGA do 2º TRABALHO (MATLAB) [GRUPOS: 96--143]
      • Ler instruções contidas no ficheiro Submissão_Electrónica_Fenix.pdf (NOTA: Apenas um aluno do grupo deve fazer a submissão).
    • Caso exista alguma dificuldade nesta submissão via Fénix, os alunos devem enviar, dentro do prazo estabelecido, o ficheiro comprimido para o e-mail: mps@ist.utl.pt
      • O assunto ( subject) do e-mail deve ser obrigatoriamente: CP_TRAB_2_GRUPO_[Número do grupo]
      • Exemplo: CP_TRAB_2_GRUPO_001


2º Trabalho: SUGESTÕES

Este item será actualizado regularmente, mediante as questões colocadas pelos alunos. Logo, uma visita regular a este item, durante o desenvolvimento do 2º trabalho, será vantajosa! [Última actualização:  30/12/2008]

  • Problema B:
    • Após a verificação da sintaxe utilizando os comandos try-catch (ver tópico do fórum com este nome) e a função eval(), podem ser utilizadas uma das seguintes abordagens: utilizar a função eval(), criar uma function handle para uma função anónima (ver última aula teórica), ou utilizar a função inline() (ver help do Matlab).
  • Problema C:
    • %Script de exemplo para ordenar por nome próprio, seguido de apelido

      clear all;
      close all;
      clc;

      nome{1}='Afonso';
      nome{2}='Afonso';
      nome{3}='Afonso';
      apelido{1}='HENRIQUES';
      apelido{2}='ALBUQUERQUE';
      apelido{3}='HENRIQUE';

      for k=1:1:3
          nomeCompleto{k}=[nome{k},apelido{k}];
      end
      nomeCompleto

      [nomeCompletoOrdenado,indices]=sort(nomeCompleto)

      for k=1:1:3
          fprintf('%25s %25s\n',nome{indices(k)},apelido{indices(k)});
      end;

  • Problema A:
    • A função sucessao tem que ser uma função RECURSIVA (ver acetatos da aula téorica 21 e Ver exercício 4, da aula de problemas 11 ). [Está com dúvidas em implementar uma função recursiva? Então comece por implementar a função factorial apresentada na aula teórica, e teste-a na linha de comandos!]
    • A função sucessao deve retornar o n-ésimo termo da sucessão, ou seja:
      • sucessao(0,...) deve retornar o valor de a(0);
      • sucessao(1,...) deve retornar o valor de a(1);
      • sucessao(k,...) deve retornar o valor de a(k);
    • Ver tópico d o fórum denominado: 1º problema.
  • Problema A:
    • A função sucessao deve retornar o n-ésimo termo da sucessão e não um array com todos os seus valores. Ver exercício 4, da aula de problemas 11. 
    • Deve ser no script que os valores da sucessão devem ser guardados, fazendo a chamada à função sucessao (dentro de um ciclo for ... de 0 até N).
    • Para este problema aconselha-se a seguinte metodologia:
      • Implementar a função sucessao que recebe 5 parâmetros (quais?) e retorna o n-esimo termo da sucessão.
      • Testar a função ! (na linha de comandos, fazer a chamada à função com os argumentos desejados...).
      • Se executar correctamente, implementar o script; caso contrário ver o que falha ...
  • Problema B:
    • Ver fórum ...
    • Neste problema os alunos também podem utilizar um function handle para uma função anónima ... (ver acetatos da última aula teórica).
    • Para este problema aconselha-se a seguinte metodologia:
      • Implementar a função calcula que recebe 2 parâmetros (quais?) e retorna o array coluna.
      • Testar a função ! (na linha de comandos, fazer a chamada à função com os argumentos desejados...).
      • Se executar correctamente, implementar o script; caso contrário ver o que falha ...

1º Trabalho: RESOLUÇÃO

NOTAS IMPORTANTES:

  • O código fonte apresentado no ficheiro denominado trab_1.zip, não pretende ser um exemplo da resolução pedida aos alunos para o 1º trabalho, mas sim mais um material de apoio ao desenvolvimento do estudo da disciplina.
  • Notar que a robustez apresentada neste programa não era exigida aos alunos... mas os comentários já o eram ... algo em que o programa apresentado é escasso ...

1º Trabalho: TRABALHOS RECEBIDOS

1º Trabalho: ENTREGA

  • Data de entrega: 17/11/2008, até às 16h30 .
  • A entrega do trabalho deverá ser feita via Fénix, mediante o número do grupo :
    • Projecto: ENTREGA do 1º TRABALHO (C++) [GRUPOS: 1--47]
    • Projecto: ENTREGA do 1º TRABALHO (C++) [GRUPOS: 48--95]
    • Projecto: ENTREGA do 1º TRABALHO (C++) [GRUPOS: 96--143]
    • Ler instruções contidas no ficheiro Submissão_Electrónica_Fenix.pdf (NOTA: Apenas um aluno do grupo deve fazer a submissão)
  • Caso exista alguma dificuldade nesta submissão via Fénix, os alunos devem enviar, dentro do prazo estabelecido, o trabalho para o e-mail: mps@ist.utl.pt
    • O assunto ( subject) do e-mail deve ser obrigatoriamente: CP_TRAB_1_GRUPO_[Número do grupo]
    • Exemplo: CP_TRAB_1_GRUPO_009

1º Trabalho: SUGESTÕES

Este item será actualizado regularmente, mediante as questões colocadas pelos alunos. Logo, uma visita regular a este item, durante o desenvolvimento do 1º trabalho, será vantajosa!

  1. Assuma que o número máximo de condóminos por piso são 26, ou seja, o número de letras do alfabeto inglês.
  2. De início, assuma que o utilizador coloca uma string correcta com os condóminos que não pagaram a prestação.
    1. Desenvolva todo o programa com base nesta premissa.
    2. Depois do programa estar a executar correctamente, faça a(s) função(ões) de teste para garantir que os dados sobre os condóminos que não pagaram são introduzidos correctamente.
  3. Evite criar uma função main(), com switch de switch de switch ...
    1. Para o evitar utilize funções, de modo a tornar o programa mais modular, e logo mais fácil de desenvolver, compreender e alterar.
    2. Exemplo:void processa_menu_2 (double & saldo_ano_anterior, int & num_condominos_total, int & num_condominos_por_piso, double & prestacao_mensal, double & gastos_anuais_correntes, double & gastos_anuais_manutencao,int & num_condominos_que_pagaram, string & identificacao_condominos_em_falta, bool & menu_2_visualizado, bool & menu_3_visualizado, bool & menu_4_visualizado);
  4. Neste trabalho não pode utilizar arrays, nem ficheiros.
  5. Também não deve (não pode!) utilizar variáveis globais (deve evitá-lo em qualquer programa, pois este perde modularidade).
  6. Uma vez que este é o 1º trabalho de CP, e alguns dos testes para garantir que os dados sobre os condóminos que não pagaram são introduzidos correctamente, possui alguma complexidade, os alunos podem utilizar o ficheiro teste aos dados como base de trabalho (mas com espírito critico e inovador ...!) .
  7. Uma vez que este é o 1º trabalho de CP, e alguns alunos têm tido dificuldades em criar programas modulares (i.e. com funções), apresenta-se um exemplo de uma função no ficheiro processa_menu_3.txt.

Software gratuito para criar ficheiros .pdf (pdf creators):