Introdução a Programação

Avisos

  • 18/06/2018, 13:00: definição da avaliação final divulgada

Avaliação final

A avaliação final consiste na implementação de um programa que reproduza parcialmente o funcionamento de um terminal Linux. O programa funcionará de forma interativa, respondendo a comandos indicados através do teclado. Por exemplo, caso seja indicado o comando pwd, deverá ser exibido o diretório/pasta corrente. Como outro exemplo, para o comando ls, deverá ser listado o conteúdo da pasta atual.

É sugerido que seja implementado o maior número possível de comandos. Listas de comandos básicos de Linux são facilmente encontradas na Internet [1, 2]. Dito isto, considere os comandos a seguir listados como básicos e esperados para o trabalho, mas não necessariamente os únicos que devem ser implementados: pwd, ls, cd, cp, mv, rm, cat, head, tail, diff, history, cat, wc.

Alguns comandos tem funcionalidades diversas além das básicas. Por exemplo, o comando cp permite copiar até mesmo diretórios inteiros através de parâmetros como o -a. A reprodução da funcionalidade básica de cada comando é considerada suficiente. Sendo assim, o comando cp pode se limitar a copiar apenas arquivos individuais, por exemplo. Ou, num outro exemplo, o comando diff pode apenas indicar se dois arquivos são diferentes um do outro, sem fornecer detalhes sobre as diferenças. Todavia, a implementação de outros recursos será vista com bons olhos e recompensada de acordo, obviamente.

Por fim, um recurso considerado necessário é a indicação do não reconhecimento de um comando que seja fornecido e não esteja entre aqueles suportados. Nesse caso, uma mensagem de erro deverá ser apresentada e o programa deverá seguir seu funcionamento normal. Além disso, outro recurso a ser considerado são os redirecionadores de saída dos comandos, > e >>. Este último recurso contará para a nota do trabalho em caráter especial, superiormente aos comandos propriamente ditos.

Conteúdo Programático

  1. Entrada e saída básicos
  2. Variáveis
  3. if, else e else if
  4. Loops (for, while e do while)
  5. Vetores e matrizes
  6. Funções
  7. Bibliotecas básicas (stdio, math, string etc)
  8. Structs
  9. Ponteiros
  10. Arquivos
  11. Recursos diversos da linguagem

Listas de Exercícios

O site https://www.urionlinejudge.com.br/ foi utilizado para divulgação e avaliação das primeiras listas de exercícios. Sendo assim, para ter acesso às mesmas, fazer cadastrar-se no site e entrar em contato solicitando permissão para acesso a elas.

Monitoria

Monitor: Igor Lordeiro (igor.queirozlordeiro@gmail.com)
Atendimento presencial: 4as-feiras, das 14:00 às 18:00, no Laboratório de Arquitetura
Atendimento online: via facebook ou whatsapp, a qualquer hora

http://www.learn-c.org/
https://learnxinyminutes.com/docs/c/
http://www.cprogramming.com/tutorial/c-tutorial.html
https://www.programiz.com/c-programming
http://fresh2refresh.com/c-programming/
http://www.w3schools.in/c-tutorial/
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-087-practical-programming-in-c-january-iap-2010/index.htm