UFABC - MCTA028-15 - Programação Estruturada
Terceiro Quadrimestre de 2018
Índice
Professor: Emilio Francesquini
E-mail: e.francesquini@ufabc.edu.br
Avisos
- Notas finais incluindo Sub. e Rec. disponíveis.
- 13/12 será das 08:00 às 10 na sala 407-2. Mudança de sala - Atenção: a prova Sub/Rec de amanhã
- disponível aqui e assim ajudar a melhorar o curso (ou o professor) em suas próximas edições. Seu feedback é muito importante para nós… Por favor, gaste 2 minutinhos para preencher o formulário
- Notas finais disponíveis (P1, P2, Proj. 1, Proj. 2 e Labs. semanais).
- Avisos importantes:
- Para tirar dúvidas ou fazer vista de prova vocês podem me procurar na minha sala durante os horário de atendimento ou, em casos excepcionais, por e-mail.
- Horário de atendimento extra: terça-feira 11/12 das 10h às 12h.
- Prova de recuperação ou substituva (SUB ABERTA E DO MAL): quinta-feira, dia 13/12, das 8h às 10h, no laboratório
404-2\(\rightarrow\) 407-2(laboratório usual da disciplina). - Aqueles que precisarem de prova substititutiva ou de recuperação devem me procurar impreterivelmente até dia 12/12 às 18h.
- Por favor, para que eu possa imprimir um número de provas suficiente peço para aqueles que desejarem fazer seja a prova substitutiva ou a prova de recuperação que me avisem por e-mail das suas intenções.
- A prova de recuperação pode ser feita por aqueles que ficaram com conceito final D ou F e não ultrapassaram o limite de faltas. A sub é aberta a todos (que me avisarem por e-mail) e é do mal.
- Veja aqui o resultado do desafio do projeto da disciplina.
- Avisos importantes:
- aula de revisão da P2 disponíveis. Exercícios feitos durante a
- Aulão Programação Estruturada. Dia 05/12, Quarta, 17:30 às 19:00. Organizado por ufabc.dojo e UFABC Code Challenge.
- 08 disponível. Lista de exercícios
- 07 disponível. Lista de exercícios
- Projeto 1 - Data de entrega adiada para 20/11/2018 (Terça)
- 06 disponível. Lista de exercícios
- Projeto (Parte 2) disponível. Enunciado do
- P1 disponíveis Notas da
- 05 disponível. Lista de exercícios
- Aulão Programação Estruturada. Dia 23/10, Terça, 16:30. Organizado por ufabc.dojo e UFABC Code Challenge.
- Projeto (Parte 1) disponível. Enunciado do
- 04 disponível. Lista de exercícios
- 03 disponível. Lista de exercícios
- horários de atendimento dos monitores. Adicionados
- disponíveis. Listas de Exercício 01 e 02
- Página online
Informações Gerais
Aulas Teóricas
- Professor: Emilio Francesquini
- Turmas: DA1MCTA028-15SA e DA2MCTA028-15SA
- Quarta das 10:00 às 12:00. Sala S-311-1, semanal
Aulas Práticas
- Turma DA1MCTA028-15SA - A1-diurno
- Professor: Cláudio Nogueira de Meneses
- Quinta das 08:00 às 10:00. Sala 409-2, semanal
- Turma DA2MCTA028-15SA - A2-diurno
- Professor: Emilio Francesquini
- Quinta das 08:00 às 10:00. Sala 404-2, semanal
Atendimento
- Presencial
- Horários de atendimento
- Nos horários listados abaixo não é preciso confirmar ou marcar, apenas apareça! :-)
- Neste quadrimestre o conteúdo da disciplina será unificado com a turma da Profª. Carla N. Lintzmayer e alunos de ambas as turmas podem escolher livremente entre os horários abaixo
- Segunda-feira, das 10:00 às 12:00
- Sala 531-2. Prof. Emilio
- Terça-feira, das 13:00 às 15:00
- Sala 508-2. Profª. Carla
- Quarta-feira, das 13:00 às 15:00
- Sala 531-2. Prof. Emilio
- L405-2. Monitor Mauro
- Quarta-feira, das 18:00 às 20:00
- L405-2. Monitor Vinícius
- Quinta-feira, das 13:00 às 15:00
- Sala 508-2. Profª. Carla
- L403-2. Monitor Marcelo
- Quinta-feira, das 17:00 às 19:00
- L403-2. Monitor Renato
- Horários de atendimento
Seg | Ter | Qua | Qui | Sex | |
---|---|---|---|---|---|
08:00 09:00 | Aula Prática | ||||
09:00 10:00 | Aula Prática | ||||
10:00 11:00 | Atendimento Emilio | Aula Teoria | |||
11:00 12:00 | Atendimento Emilio | Aula Teoria | |||
12:00 13:00 | |||||
13:00 14:00 | Atendimento Carla | Atendimento Emilio; Atendimento Mauro | Atendimento Carla; Atendimento Marcelo | ||
14:00 15:00 | Atendimento Carla | Atendimento Emilio; Atendimento Mauro | Atendimento Carla; Atendimento Marcelo | ||
15:00 16:00 | |||||
16:00 17:00 | |||||
17:00 18:00 | Atendimento Renato | ||||
18:00 19:00 | Atendimento Vinícius | Atendimento Renato | |||
19:00 20:00 | Atendimento Vinícius |
- Agendado por e-mail
- Verifique minha agenda e sugira pelo menos dois possíveis horários!
- Em sala de aula - Após as aulas
- Online
- Por e-mail.
- Pelo fórum da disciplina.
Sobre a Disciplina
MCTA028-15 - MCTA028-15
- TPI: 2-2-4
- Recomendações: Processamento da Informação
Objetivos
Apresentar noções básicas e intermediárias sobre algoritmos, programação em linguagens compiladas, compilação, programas em execução (processos), ponteiros, alocação estática e dinâmica de memória, vetores e matrizes, funções e passagem de parâmetros, registros, arquivos e recursividade. Aplicar todos os conceitos apresentados no contexto da resolução de problemas clássicos e novos da computação.
Conteúdo Programático
Apresentar noções básicas e intermediárias sobre algoritmos, programação em linguagens compiladas, compilação, programas em execução (processos), ponteiros, alocação estática e dinâmica de memória, vetores e matrizes, funções e passagem de parâmetros, registros, arquivos e recursividade. Aplicar todos os conceitos apresentados no contexto da resolução de problemas clássicos e novos da computação.
Fonte: Projeto Pedagógico do BCC 2017
Datas Importantes
- Prova 1 - 25/10/2018
- Prova 2 - 06/12/2018
- Prova Substitutiva - Em conjunto com a prova de recuperação. Dia 13/12/2018
- Prova de Recuperação - 13/12/2018
- Projeto Parte 1 -
18/11/2018\(\rightarrow\) 20/11/2018 - Projeto Parte 2 - 02/12/2018
Listas de Exercícios
Laboratórios Semanais
- Haverá uma atividade de laboratório por semana, totalizando 10 atividades ao longo do quadrimestre.
- O enunciado de cada atividade será disponibilizado às quintas-feiras, no Moodle.
- A solução dessas atividades deverá ser entregue apenas pelo Moodle, até o domingo da semana seguinte à liberação do enunciado (10 dias de prazo).
- A nota de cada laboratório poderá chegar a 10 caso o programa execute
corretamente em todos os casos de teste e será 0 caso contrário.
- Exemplos de problemas que causam redução da nota: código não indentado, nomes de variáveis/funções pouco claros, desorganização do código.
- Cada atividade terá um peso específico, divulgado em seu enunciado, que irá variar de acordo com sua complexidade.
- Não serão aceitas soluções fora do prazo.
- Não haverá laboratórios substitutivos.
- Essas atividades devem ser feitas individualmente.
Semana | Laboratório (peso) | Data Entrega |
---|---|---|
1 | Olá Mundo (1); StarUber (10); Rogue 102: A Aliança Contra-Ataca (10) | 07/10/2018 |
2 | Jogo da Velha (1); Abastecimento (10); Cálculo do dia da semana (10) | 07/10/2018 |
3 | Street Fighter (1); Onde está o WALL-E? (20) | 14/10/2018 |
4 | Séries de Taylor (1); Conversão de Base (1); Área de Polígonos Convexos (10); JMob (20) | 21/10/2018 |
5 | Killing the Messenger (1); Liber8 (1); Intercalação (10); Processamento de Imagens (20) | 04/11/2018 |
6 | Bônus – Mortos de Fome (5); Quantas expressões existem? (10); Alterações em Textos (1) | 04/11/2018 |
7 | DON'T PANIC (20); Strpock 🖖 (20) | 11/11/2018 |
8 | Conjuntos e Ponteiros (10); Pokemão (20) | 22/11/2018 |
9 | Sem comentários (5); Sistema de notas (5); CPU Wars (30) | 29/11/2018 |
10 | Sistema da Prograd (2); Paixão Nacional (2); Copa do Mundo (20) | 06/12/2018 |
Projeto: Googol
- Parte 1 -
Dia 18/11/2018\(\rightarrow\) 20/11/2018 - Parte 2 - Dia 02/12/2018
- Implementações de referência
Política de atrasos
Dias em Atraso Nota Máxima 0 10 1 7 2 6 3 5 >3 0 Desafio
- As barras representam quantas vezes o programa é mais lento do que o programa mais rápido de todos (primeira barra, de valor 1).
- Um grupo escreveu um código mais rápido que o código dos professores (e também foi o mais rápido das 3 turmas) e ganhou 2 pontos de bônus. Parabéns!
- Adicionalmente, os trabalhos mais rápidos de cada turma ganharam 1 ponto extra.
- Notem que apenas as versões que passaram em TODOS os casos de teste estão abaixo (considerando todas as turmas).
Aulas
Sem. | Data | Assunto | Material |
---|---|---|---|
1ª | 19/09 - Teoria 01 | Apresentação; Organização de um computador; Compilação; Introdução a linguagem C | (1) A Disciplina; (2) Organização de Computatores; (3) Introdução à Linguagem C |
20/09 - Prática 02 | Linha de comando; GCC; Redirecionamento de E/S; Moodle; Lab 0: Hello World; Lab 1: Exercícios Básicos | Slides Prática; Arquivo com comandos mais importantes | |
2ª | 26/09 - Teoria 03 | E/S Básica; Tipos Pt. 2; Operações relacionais e lógicas;Condicionais; Laços | (4) Entrada e Saída; (5) Operações e expressões relacionais e lógicas; (6) Estruturas condicionais; (7) Laços |
27/09 - Prática 04 | Lab 2: Condicionais | ||
3ª | 03/10 - Teoria 05 | Laços e funções | (8) Funções |
04/10 - Prática 06 | Lab 3: Laços | ||
4ª | 10/10 - Teoria 07 | Funções e recursão | (8) Funções; (9) Recursão |
11/10 - Prática 08 | Lab 4: Funções | ||
5ª | 17/10 - Teoria 09 | Vetores e matrizes; Enunciado do projeto | (10) Vetores e Matrizes |
18/10 - Prática 10 | Lab 5: vetores/matrizes | ||
6ª | 24/10 - Teoria 11 | Revisão | Exercícios Resolvidos Durante a Aula; Exercícios Profª. Carla |
25/10 - Prática 12 | PROVA 1 | ||
7ª | 31/10 - Teoria 13 | Ponteiros, parte 1 | (11) Ponteiros - Parte 1 |
01/11 - Prática 14 | Lab 6: Ponteiros | ||
8ª | 07/11 - Teoria 15 | Ponteiros, parte 2 | (12) Ponteiros - Parte 2 |
08/11 - Prática 16 | Lab 7: Ponteiros | ||
9ª | 14/11 - Teoria 17 | Estruturas e arquivos | (13) Estruturas; (14) Arquivos |
15/11 - Feriado | Feriado - Proclamação da República | ||
10ª | 21/11 - Teoria 18 | Algoritmos de ordenação | (15) Ordenação em vetores |
22/11 - Prática 19 | Busca Binária. Lab 9: ordenação/busca | ||
11ª | 28/11 - Teoria 20 | Listas ligadas | (16) Listas ligadas |
29/11 - Prática 21 | Lab 10: Listas ligadas | ||
12ª | 5/12 - Teoria 22 | Revisão | Exercícios Resolvidos Durante a Aula; |
6/12 - Prática 23 | PROVA 2 | ||
13ª | 13/12 - Prática 24 (Reposição I) | Recuperação |
Notas
Critério de avaliação
Honestidade Acadêmica
Entre outros, o código de ética da UFABC estabelece em seu artigo 25 que é eticamente inaceitável que os discentes:
I - fraudem avaliações;
II - fabriquem ou falsifiquem dados;
III - plagiem ou não creditem devidamente autoria;
IV - aceitem autoria de material academico sem participação na produção;
V - vendam ou cedam autoria de material acadêmico próprio a pessoas que não participaram da produção.Muitos ainda têm dúvidas sobre a interpretação das regras definidas pelo Código de Ética da UFABC. Por esta razão, diversos professores elaboraram um documento (disponível aqui) com vários exemplos e esclarecendo a interpretação das regras acima. Abaixo uma versão resumida. Sempre consulte o documento completo ou converse com o seu professor em caso de dúvidas!
- Regra 1 - Você não pode enviar para avaliação um trabalho que não seja de sua própria autoria ou que seja derivado/baseado em soluções elaboradas por outros.
- Regra 2 - Você não pode compartilhar a sua solução com outros alunos nem pedir aos seus colegas que compartilhem as soluções deles com você.
Regra 3 - Nos trabalhos enviados para avaliação você deve indicar eventuais assistências que você tenha recebido.
ATENÇÃO: todos os trabalhos enviados para avaliação poderão ser verificados por um sistema automatizado de detecção de plágio.
Qualquer violação às regras descritas acima implicará:
- Descarte dos conceitos atribuídos a TODAS as tarefas avaliativas regulares de TODOS os envolvidos, causando assim suas reprovações automáticas com conceito F.
- Possível denúncia à Comissão de Transgressões Disciplinares Discentes da Graduação, a qual decidirá sobre a punição adequada à violação que pode resultar em advertência, suspensão ou desligamento, de acordo com os artigos 78-82 do Regimento Geral da UFABC.
- Possível denúncia apresentada à Comissão de Ética da UFABC, de acordo com o artigo 25 do Código de Ética da UFABC.
A avaliação da disciplina será composta por três notas. Uma referente às provas, outra às atividades semanais e finalmente, a nota do projeto. Considere:
- \(N_F\) é a nota final;
- \(N_{Pv}\) é a nota das provas;
- \(N_{At}\) é a nota das atividades semanais;
- \(N_{Pj}\) é a nota do projeto;
A nota final (\(N_F\)) será determinada da seguinte maneira:
\begin{equation*} N_F = \begin{cases} \min\{N_{Pv}, N_{At}, N_{Pj}\} ,& \text{se } N_{Pv} < 5 \text{ ou } N_{At} < 5 \text{ ou } N_{Pj} < 5 \\ 0.5 \cdot N_{Pv} + 0.3 \cdot N_{At} + 0.2 \cdot N_{Pj},& \text{caso contrário} \end{cases} \end{equation*}O conceito final (\(C_F\)) será obtido de acordo com a equação abaixo:
\begin{equation*} C_F = \begin{cases} \textbf{O} ,& \text{se ausência total exceder 25%}\\ \textbf{F} ,& \text{se } N_F \in [0,0;5,0) \\ \textbf{D} ,& \text{se } N_F \in [5,0;6,0) \\ \textbf{C} ,& \text{se } N_F \in [6,0;7,0) \\ \textbf{B} ,& \text{se } N_F \in [7,0;8,5) \\ \textbf{A} ,& \text{se } N_F \in [8,5;10,0] \\ \end{cases} \end{equation*}Provas
A nota das provas \(N_{Pv}\) será formada por duas provas \(P_1\) e \(P_2\). Todas as provas serão efetuadas em sala de aula, sem auxílio de computador.
Haverá também uma prova subsitutiva \(P_S\) que será aberta a todos os interessados, ainda que eles tenham feito tanto a \(P_1\) quanto a \(P_2\).
Atenção
A nota da \(P_S\) será utilizada obrigatoriamente em substituição à menor nota entre \(P_1\) e \(P_2\) ainda que isto diminua a nota final do aluno!
Assim, a nota de provas (\(N_{Pv}\)) será calculada conforme a seguinte fórmula:
\begin{equation*} N_{Pv} = \begin{cases} \frac{2 \cdot P_S + 3 \cdot P_2}{5} ,& \text{caso tenha feito a } P_S \text{ e } P_1 < P_2 \\ \frac{2 \cdot P_1 + 3 \cdot P_S}{5} ,& \text{caso tenha feito a } P_S \text{ e } P_2 \leq P_1 \\ \frac {2 \cdot P_1 + 3 \cdot P_2}{5} ,& \text{caso contrário} \end{cases} \end{equation*}Atividades Semanais
Haverá de uma atividade de laboratório por semana, totalizando 10 atividades ao longo do quadrimestre.
- O enunciado de cada atividade será disponibilizado às quintas-feiras, no Moodle.
- A solução dessas atividades deverá ser entregue apenas pelo Moodle, até o domingo da semana seguinte à liberação do enunciado (10 dias de prazo).
- A nota de cada atividade será 10 caso o programa execute corretamente em todos os casos de teste e será 0 caso contrário.
- Cada atividade terá um peso específico, divulgado em seu enunciado, que irá variar de acordo com sua complexidade.
- Não haverá laboratórios substitutivos.
- Essas atividades devem ser feitas individualmente.
Projeto
O projeto será feito em duas fases (\(F_1\) e \(F_2\)) com diferentes pesos. A nota do projeto (\(N_{Pj}\)) será calculada pela seguinte fórmula.
\begin{equation*} N_{Pj} = \frac{F_1 + 2 \cdot F_2 }{3} \end{equation*}Recuperação
Conforme Resolução ConsEPE nº 182 fica assegurado a todos os alunos com \(C_F\) igual a D ou F o direito a fazer uso de mecanismos de recuperação.
A recuperação será feita através de uma prova \(P_R\), sem consulta, e a sua nota será utilizada para compor a o conceito pós-recuperação \(C_R\) conforme as equações abaixo:
\[N_R = \frac{P_R + N_F}{2}\]
Caso 1 \(C_F = D\):
\begin{equation*} C_R = \begin{cases} \textbf{C} ,& \text{se } N_R \geq 6,0 \\ \textbf{D} ,& \text{caso contrário} \end{cases} \end{equation*}Caso 2 \(C_F = F\):
\begin{equation*} C_R = \begin{cases} \textbf{D} ,& \text{se } N_R \geq 5,0 \\ \textbf{F} ,& \text{caso contrário} \end{cases} \end{equation*}Recursos Online
- Projeto de Algoritmos (em C), do Prof. Paulo Feofiloff do IME-USP - https://www.ime.usp.br/~pf/algoritmos/
- Guia de referência da linguagem C
- Uma boa referência sobre a biblioteca de entrada/saída da linguagem C
- Sites de Disciplinas
- MC102 Algoritmos e Programação de Computadores - Prof. Emilio Francesquini - IC-Unicamp
- MAC110 - Introdução a Computação - Prof. Francisco Reverbel - IME-USP
- MAC2166 Introdução à Computação - Prof. José Augusto - IME-USP
- MC202 — Estruturas de Dados - Prof. Emilio Francesquini - IC-Unicamp
- MC202ABC - Estruturas de Dados - Prof. Rafael C. S. Schouery - IC-Unicamp
- Inclúi vídeos das aulas
- StackOverflow - Perguntas e respostas sobre programação em geral
Bibliografia
Os textos principais utilizados neste curso serão o PF, RS. Alguns assuntos tratados em aula também farão referência ao excelente KR.
[PF] Texto Principal
- P. Feofiloff. Algoritmos em Linguagem C. Campus-Elsevier, 2009.
- Link Biblioteca: http://biblioteca.ufabc.edu.br/index.php?codigo_sophia=11873
- Site do livro (com material adicional): https://www.ime.usp.br/~pf/algoritmos-livro/
[RS] Texto principal
- R. Sedgewick. Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching (3rd Edition). Addison-Wesley, 1998.
- Link Biblioteca: http://biblioteca.ufabc.edu.br/index.php?codigo_sophia=18086
[KR]
- B. W. Kernighan, D. M. Ritchie. The C Programming Language. Second Edition. Prentice Hall, 1988.
- Link Biblioteca:
Última atualização: 2018-12-13 19:16
Emacs 26.1 (Org-mode 9.1.14)