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).
-
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;
-
%Script de exemplo para ordenar por nome próprio, seguido de apelido
-
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!
- 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.
-
De início, assuma que o utilizador coloca uma string correcta com os condóminos que não pagaram a prestação.
- Desenvolva todo o programa com base nesta premissa.
- 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.
-
Evite criar uma função
main(), com switch de switch de switch ...
- Para o evitar utilize funções, de modo a tornar o programa mais modular, e logo mais fácil de desenvolver, compreender e alterar.
-
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);
- Neste trabalho não pode utilizar arrays, nem ficheiros.
-
Também
não deve (não pode!) utilizar variáveis globais (deve evitá-lo em qualquer programa, pois este perde modularidade).
- 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 ...!) .
-
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):
- Existe muito software gratuito para pdf creators. Em baixo são apresentados links para algumas opções [sem qualquer ordem de preferência!]: