Loading
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 sessão de perguntas em que analisaremos algumas questões com base na primeira palestra desta semana. Aqui estão poucas 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.
Olá a todos, bem-vindos à segunda sessão de perguntas da segunda semana do curso sobreintrodução ao desenvolvimento de aplicações modernas. Essas perguntas são para a sua prática, esperamos quevocê as use para entender o material que foi apresentado até o momento. Há cerca de dez deeles e passaremos por cada um deles lentamente.1. Considere o programa da linha de comando na primeira sessão de vídeo da segunda semana. A partir deo momento em que os argumentos da linha de comando são apresentados na linha de comando, comomuitas vezes são as informações da linha de comando transferidas de um ponto do programapara outro antes de ser usado pela primeira vez no processamento?Resposta: 2 vezes (ou 3 vezes se você também contar fazer setup).a. Na primeira etapa ele chega em main via parâmetros uma matriz de strings chamada como args.b. Em seguida, ele chega a doSetup como parâmetros novamente uma matriz de strings chamadas args.c. Finalmente, ele chega ao método processCommandLine novamente como uma matriz de stringschamadas args.Dentro do método processCommandLine ele é usado ou processado para obter, por exemplo,o modo no qual o aplicativo está sendo executado, como modo de registro, modo de despesa ... etc.
Portanto, o número de vezes que ele é transferido a partir do momento em que ele é apresentado na linha de comandoao ponto de seu uso real é duas vezes (ou thrice se você considerar fazer setup).Observe que seria útil ser explícito sobre como você conta. Por exemplo, você deveser explícito se você contar o doSetup. Mas também note que possivelmente ele pode ser desagradávelpara alguns, mas então é uma coisa muito positiva como caso contrário pode resultar emmal-entendido. Se, por outro lado, você simplesmente ignorá-lo e não escrevê-lo, então épossível que eu possa considerar o doSetup como uma parte importante e ver que você nãocontou e, portanto, penalize. Esse tipo de coisa ocorre muito na práticaentre os seres humanos. Por isso, é útil ser explícito e claro sobre a maneira como vocêresponde as coisas.Se há alguma suposição, por exemplo se você assumir que o setup do setup não deve sercontado, então por favor diga-se explicitamente. Se você não diz assim, não há como se tercerteza sobre a maneira como você conta. Não vamos poder dar créditos sempre que houver uma ambiguidade. Então, por favor, tente ser o mais claro possível sempre que responder perguntas.(Consulte o Slide Time: 03:37)
2. Vejamos a segunda questão: informações para controlar o fluxo do programa versusinformações para computar novos valores. Esta questão está tentando distinguir entreinformações que são usadas para controlar o fluxo de programas versus que é usado para computarnovos valores. Por exemplo, no método processCommandLine, as informações sobre o
Argumentos de linha de comandos é usado para decidir o programa deve estar fazendo registro,despesas ou reportagens. Daí, as informações usadas não eram sobre o “ como fazer ” em vez dissoé sobre o “ o que fazer ”. Assim, chamaremos tais informações como o “ que tipo de uma variável ”ou “ quais variáveis ”.Em contraste há outra peça de informação que irá realmente gerar novos valores.Por exemplo, perHeadShare nesse método computeFairShare: gerainformações novas e úteis de qualquer que seja disponível até agora. Apesar de serem variáveisque apenas lembram informações, vamos chamá-las como “ how variáveis ” no sentido de queelas capturam o sentido de “ como gerar novas informações ”.Esta pergunta pede que você classifique variáveis em seus programas como “ quais variáveis ”e “ como variáveis ”.
(Consulte O Tempo De Deslizamento: 05:12)
3. Nas palestras vimos uma hierarquia de funcionalidades da versão de linha de comandos do nosso programa, esta foi usada como um exemplo de boas e más práticas de programas de escrita, mastambém é útil ver a organização sintática, ou chamar gráficos como também é chamado, de nossos programas. Uma visão sintática mais completa, ou gráficos de chamadas novamente, é quando temos várias chamadasorganizadas em uma hierarquia conforme escrito no código fonte.
Para sua versão do programa de linha de comandos escreva o seguinte (quando dizemosdireito por favor faça por suas mãos, não use ferramentas para gerar essa informação que é solicitada;ela é útil para nas fases iniciais para realmente trabalhar as coisas à mão):A. A hierarquia de chamadas com lista bem especificada de parâmetros e valores de retornoB. Além de A, o conjunto de variáveis que são vermelhas mas não atualizadas para cada chamada.C. E, finalmente, além de B o conjunto de variáveis que também são atualizadas por cada chamada.
(Consulte O Tempo De Deslizamento: 06:33)
4. Liste todos os métodos de lembrar informações em computação que você sabe de. Eleé possível que você possa errar alguns, então tente visitar sua biblioteca, ler livros, relembrar desua memória o que você aprendeu até agora, e talvez até mesmo usar o Google ou a internetpara descobrir. Mas tente ser tão abrangente e tão completo quanto possível.5. Quais os métodos de lembrar informações fora da computação você sabe?Aplicar as técnicas de descrição a cada um quando descrevê-las, faça uma breve nota decomo cada um funciona. A intenção dessa questão é ajudá-lo a ver que as ideias que vocêtem usado na computação também estão na verdade ao seu redor.6. Nosso programa de compartilhamento justo pode ser generalizado em duas direções como visto antes. Responda oa seguir:
A. Liste duas etapas de generalização para cada direção. Observe que isso nos dá um totalde 4 etapas de generalização diferentes.B. Para cada uma das 4 generalizações classificam os parâmetros como “ insignificante ”,“ significativo ”, e “ irrelevante ” semelhante à maneira como fizemos para o programa fairSharena sessão de vídeo.
Perguntas como o #6, e na verdade muitas delas que vimos até agora, estão apenas tentando fazer com quevocê olhe para o seu programa e várias partes dela de maneiras diferentes, diferentes. Essas maneiras poderiamser úteis para nós à medida que avançarmos através deste curso. Por isso, exortamos você a tentar o seu melhor pararesponder a estas perguntas.(Consulte o Tempo de Slide: 08:58)
7. Para a versão de linha de comandos deste programa o banco de dados era um arquivo de texto simples no disco local. Suponhamos que esse arquivo agora seja necessário para estar em um servidor remoto, então ele permanece comoum arquivo de texto simples é um arquivo de texto simples, exceto que ele não está no disco local mas em algum servidor remoto. E o seu SO não é capaz de mostrar pastas de rede. Em outras palavras, emborao arquivo esteja no servidor remoto em seu sistema operacional você não tem um programa quete mostra como se ele fosse um arquivo local.No entanto, seu sistema é capaz de fazer networking; ele pode fazer operações de rede embora elenão esteja mostrando os arquivos em uma única pasta. Em tal caso, lista os passos que você precisapara levar em ordem para
A. Crie um novo banco de dadosB. Inicialize seu programa usando um banco de dados do servidor remoto.Ele basicamente pede que você liste os passos que você precisaria implementar criar banco de dadose inicializar a partir de banco de dados no código fonte.8. Listar quantas diferenças você puder entre uma solução baseada em planilha e uma versão de linha de comandos.
9. Listar quantas semelhanças você puder entre uma solução baseada em planilha e uma versão de linha de comandos.
Ambas as perguntas, em certo sentido, na verdade apenas comparam e contrastam as duas soluções com cadaoutras. Existem algumas vantagens de uma solução sobre a outra, existem algumas desvantagensde uma solução ou a outra. Toda abordagem realmente tem ambos esses aspectos, os prós e os contras,e na vida prática precisamos equilibrá-los.(Consulte o Tempo de Slide: 11:18)
10. Nossa discussão sobre conversões entre representação externa da informação erepresentação interna aparece muito trivial. Como em nossa discussão da linha de comandos, otipo de conversões que fizemos para entrada e para saída parecem ser muito triviais.Mesmo se focarmos apenas em um único usuário, computador único, programa único ... etc., estilo
programas, ainda é possível ver que tais conversões inter podem ser desafiadoras. Nosso exemplopode fazer parecer trivial mas isso talvez seja porque o nosso exemplo não foi ummuito bom.Mas nem sempre é o caso, por exemplo, considere que você quer ler um arquivo de imagemem seu programa. Quando você quiser ler um arquivo de imagem você precisa saber o formato deo arquivo de imagem e dependendo da forma como o formato é organizado lendo esse arquivo podetornar-se tedioso.Lista como muitos outros exemplos semelhantes, não o exemplo de arquivo de imagem obviamente, comovocê pode onde a conversão é tediosa, também para cada exemplo identificar as razões pelas quaisele pode torná-lo desafiador.