Loading

Module 1: Abordagem Linha de Comando em Aplicativo Web

Nota de Estudos
Study Reminders
Support
Text Version

Abordagem Linha de Comando-Perguntas Práticas

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Olá a todos, bem-vindos à sessão de perguntas da segunda semana. Esta é a primeira perguntasessão em que analisaremos algumas questões com base na primeira palestra desta semana. Aqui estãopoucas perguntas:1. Liste cerca de 5 comandos diferentes (programa de linha de comando) que estão instalados no seu sistema operacional de desktop. Somos um pouco categóricos aqui, por favor você olha para o seu desktopsistemas operacionais em contraste não olhe para o seu sistema operacional móvel, por exemplo.Para cada um dos programas de linha de comandos que você vê em seu sistema operacional listar asvantagens e desvantagens se forem projetadas como programas interativos. Essa questãoé sobre interatividade.2. A segunda questão está novamente na mesma curva que a primeira questão, exceto que elaconsidera a questão da não interatividade. Se esses mesmos comandos que você usoue tiverem listado na questão 1 são não interativos, ou suponha que eles se comportem non-
interativamente, então quais seriam as vantagens ou desvantagens disso. Essasperguntas são feitas para que você pense sobre aspectos do design do programa.Hint: Considerar as maneiras interessantes em que um usuário usaria o programa. Tome o programa de cópia de arquivocomo exemplo (observe que o programa de cópia de arquivo não deve fazer parte da sua lista deprogramas de 5 bits). Seu sistema operacional seja ele windows GNU/Linux, Mac OS ... etc., irátipicamente ter uma versão de linha de comando de um programa de cópias de arquivos.Considerar o cenário quando um usuário tiver que, digamos, copiar um número enorme de arquivos, digamos 1000,uma versão interativa do programa de cópias de arquivos seria uma vantagem ou uma desvantagem? Emque caso será uma versão não interativa desse problema seria um desafio.3. A terceira pergunta leva você a aprender sobre o uso da entrada padrão, saída e errodispositivos do seu sistema. Os dispositivos padrão são monitor de teclado e monitor, respectivamente, para saída padrão de entrada e erro padrão. Quais outros dispositivos podem serusados em vez desses inadimplentes? Tente descobrir isso para o seu sistema operacional.4. O programa de linha de comando de amostra usado na palestra de vídeo é um programade trabalho corretamente; é correto no sentido de que ele executa os cálculos necessários corretamente. Elefunciona no sentido quando o usuário dá os comandos corretos do usuário, ele executa uma operaçãocorreta correspondente a esse comando. No entanto, ainda não é um produto de software. Esta perguntapede para listar pelo menos três melhorias distintas na versão de linha de comandodo programa que fará dele um produto de software. Note que o programadeve permanecer um programa de linha de comando.
Então, uma melhoria que diz converter esse programa em um gráfico não é algoo que estamos buscando em sua resposta. Seu programa permanecerá como um programa de linha de comandomas, no entanto, se torna um produto de software, o qual não é agora mesmo.5. Desenvolva uma comprovação detalhada de correção de nosso método usado no programa de compartilhamento justo. Tente garantir que cada etapa tenha uma e apenas uma mudança clara a partir do passo anterior. Para cada etapa certifique-se de notar a razão por trás da mudança que você fez.A partir da nossa experiência sabemos que você pode ter que repetir esse exercício algumas vezes paraacertá-lo direito. A ideia deste exercício é ter um passo a passo raciocinando sobre a correçãodo nosso programa. Geralmente quando pensamos em coisas como esta nós muito rapidamente
pular para conclusões. Esse exercício é feito para nos levar passo a passo com cada passo justificadopor alguma razão. Ele pode ser lento e você pode perceber que você esqueceu algumas etapasna versão que você escreveu, então você pode ter que reescrevê-la novamente.6. O programa de linha de comando que utilizamos nas palestras de vídeo ilustra um importante princípiode design de interação com o usuário. As informações devem ser exibidas de forma consistentecom quaisquer conversões necessárias entre informações internas e exibidas. Lembre-se de quequando exibimos uma reportagem quando um colega de quarto realmente devia algum dinheiro então dissemosque aquele colega de quarto em particular a quantia devida é menos algum número. Nós também remarcamosque valores negativos são o nosso entendimento interno de que eles representam o dinheiro a serpagos. Mas quando você exibe esse dinheiro a ser pago como um número negativo, e além dissodizendo que esta é a quantia devida, um usuário típico ficaria muito confuso. É muitoimportante ser consistente na forma como as informações são exibidas. Esse é o princípioque nós não fizemos bem em nosso programa. Esta pergunta pede para listar em poucos outrostais princípios que você pode relembrar de seus estudos.7. O programa de compartilhamento justo pode ser escrito em estilo processual, bem como estilo orientado a objetos.Nós sugerimos que você escreva o programa em ambos os estilos, dessa forma você entenderáas diferenças e as vantagens entre os dois estilos. Por isso, esta pergunta pede quevocê escreva no outro estilo do que aquele que você escreveu. Se nós escrevemosem um estilo orientado a objetos então esta pergunta pede que você reescreva o programa em um estilo procedimental. Se nós o escrevemos em um estilo processual então este programa lhe pedeesta pergunta pede que você reescreva o programa no outro.
8. As matrizes em nosso programa são indexadas usando números, como por exemplo o moneySpent[getIndex (“ Abhijat ”)] = 200, onde getIndex (“ Abhijat ”) retornao contra o qual o dinheiro gasto por Abhijat é armazenado.Seria bom se pudéssemos indexá-los diretamente usando os nomes dos colegas de quarto. Então,em vez de dizer que dinheiro gasto por get indexado diretamente seria ótimo se pudéssemosescreva-lo como moneySpent [“ Abhijat ”] = 200. Este exercício apenas pede que vocêsugira um algoritmo em Java como isso poderia ser feito. É claro que se Java tem alguma instalaçãoque suporte isso já então você pode não usá-las; é preciso escrever o algoritmoindependente da abordagem Java.
9. Nosso programa usou um certo invariante para garantir que ele estará correto independentemente do númerode colegas de quarto, você pode adaptar essas ideias para projetar os cálculos principais deum software contábil. Você deve naturalmente identificar o invariante para a contabilidade edemonstrar que seus cálculos funcionarão independentemente do número de contas esuas interações.Nessa questão tentamos levar nossa compreensão das ideias de invariante e de correçãopara o aplicativo de compartilhamento justo e aplicá-lo a um problema contábil. Há muitas maneirasisso pode ser discutido. Esperamos que você realmente use os fóruns para discutirperguntas como estas em detalhes. Esta pergunta requer que você pense sobre como usaras ideias a partir de um problema que você resolveu e aplicá-las em outro problema.(Consulte o Slide Time: 11:45)
10. Nossa implementação fez uma suposição simplificante apenas um colega de quarto paga por um eventodado. Suponhamos, nós agora descartamos esta suposição e permitimos que mais de um epossivelmente todos os colegas de quarto compartilham as despesas para um evento. Note que o compartilhamento pode nãoser igual mas sempre se somará às custas daquele evento. Então, se mais de umcolega de quarto compartilhar então eles não tiverem que compartilhar igualmente, um colega de quarto pode gastar um poucomais do que e o outro colega de quarto.
Nesse novo cenário, como a nossa invariante vai mudar, se ela mudar? Como os nossos cálculos de, especialmente do por cabeça de cabeça, mudam? Como o nosso invariante ajudoua garantir a correção de nossos cálculos?Além de exercício de programação sugerimos que você também tente responder a essas perguntas paravocê mesmo. É claro que você é bem-vindo para discuti-los em fóruns, em vários pontos que daremosdicas das soluções, obrigado.