Disciplina de Laboratório de Programação II, 2º semestre de 2026
ELC1067 DLSC/CT/UFSM
professor: Benhur Stein (benhur+l226b@inf.ufsm.br)
monitor: Kaua Lima (kauawho@gmail.com)
segundas e quartas, 14h30, turma CC2
sala 422, prédio 10 (pavilhão de laboratórios do CT)
alunos: planilha
arquivo rascunho
Os canais de comunicação entre o professor e os alunos são:
- as aulas presenciais,
- esta página,
- e-mail (ver endereço acima),
- conversa individual, manda um mail que marcamos.
O e-mail pode ser usado para o envio de perguntas, exercícios, reclamações, sugestões, críticas e o que mais for, durante todo o período em que durar a disciplina.
Esta página concentra os assuntos vistos em aula, a descrição de exercícios e trabalhos, avaliações, etc. Ela será atualizada durante todo o semestre. Ela é o canal oficial de informações sobre a disciplina. Todos os alunos devem olhar o que está aqui periodicamente (recomendo habilitar notificações no github).
A disciplina aborda a solução de problemas de programação baseada em estruturas de dados. É basicamente uma abordagem mais prática dos assuntos da disciplina de Estruturas de dados. Os assuntos vistos na disciplina são, basicamente:
- tipos abstratos de dados
- estruturas de dados lineares (listas)
- estruturas de dados hierárquicas (árvores)
- estruturas de dados em rede (grafos)
A disciplina é bastante prática, e exige que os alunos se dediquem bastante e desenvolvam os trabalhos de programação propostos. Para realizar essa prática, é necessário acesso a um computador e a um ambiente de desenvolvimento de programas, com (pelo menos) um editor de textos e um compilador C. O desenvolvimento dos trabalhos deve ser registrado em um servidor git, então é necessário também acesso a um cliente git e uma conta em um servidor git. A universidade dispõe de laboratórios com computadores para acesso aos alunos, com todo o software necessário instalado; consulte o NCC caso necessite. É necessário dedicar um bom tempo à disciplina, além do tempo em aula. Use os canais de comunicação com o professor para sanar dúvidas.
Os trabalhos serão avaliados em um ambiente linux, usando o compilador gcc. Os programas entregues pelos alunos devem compilar e executar corretamente nesse ambiente.
Forte sugestão: desenvolva em um ambiente linux.
A principal forma de avaliação dos alunos será através do desenvolvimento de pequenos (ou médios) programas de computador, a serem disponibilizados para o professor. A descrição, prazo e forma de entrega dos trabalhos será disponibilizada nesta página.
O desenvolvimento dos trabalhos deve ser feito pelo aluno, de forma individual. Quando entrega um trabalho, o aluno está implicitamente dizendo "eu que fiz". A entrega de um trabalho que não foi feito pelo aluno constitui tentativa de fraude. Recomendo desenvolver os trabalhos usando um editor sem suporte a ajuda de codificação, ou a desativar esse tipo de ajuda. Em geral, para o que se espera nesta disciplina, a ajuda automática dos ambientes de programação atrapalha bem mais do que ajuda. A ajuda (não código) de colegas é incentivada.
Cada aluno deve ter uma conta git (codeberg, github, gitlab etc) com um repositório para a disciplina, ao qual o professor tenha acesso de leitura. O endereço de acesso a esse repositório deve ser cadastrado neste link. É nesse repositório que o desenvolvimento dos trabalhos deve acontecer, com commits e pushs frequentes. A atividade do repositório pode ser considerada na avaliação e na presença em aula.
Os trabalhos entregues não serão imediatamente pontuados, mas comentados de forma individual ou coletiva. Espera-se que esses comentários sejam aproveitados para gerar novas e melhores versões dos programas, como forma de aprendizagem. A recuperação do aprendizado deve acontecer durante o semestre; espera-se que o aluno identifique seus pontos fracos e corrija-os. Não se espera que o que não foi realizado durante o tempo do semestre seja recuperável no exame.
A avaliação será realizada no final do semestre. Cada aluno deve entregar uma autoavaliação no final do semestre descrevendo o seu desenvolvimento durante o semestre e contendo uma sugestão de nota. Cada aluno será entrevistado individualmente pelo professor. A nota final será então calculada, considerando:
- o estado de cada trabalho na data definida de entrega
- a versão final dos trabalhos
- a auto-avaliação
- a entrevista.
Os assuntos vistos em aula serão listados aqui.
| N | data | assunto |
|---|---|---|
| 1 | 3ago | apresentação, revisão da linguagem C, trabalho 1 |
| 2 | 5ago | respostas a perguntas, esquematização do t1 |
| 3 | 10ago | desenvolvimento do t1 |
| 4 | 12ago | desenvolvimento do t1 |
| 5 | 17ago | tipos abstratos de dados, anúncio do t2 |
| 6 | 19ago | listas |
| 7 | 24ago | implementação de listas - contígua, encadeada com alocação contígua e encadeada com alocação individual. |
| 8 | 26ago | implementação de lista encadeada com alocação contígua (o arquivo acima foi alterado, o código exemplo foi corrigido, implemente o exercício). |
| 9 | 31ago | exercícios sobre listas |
| 10 | 2set | listas duplamente encadeadas |
| 11 | 9set | listas encadeadas — complementos |
| 12 | 14set | árvores |
| 13 | 16set | árvores - percurso + ABB |
| 14 | 21set | implementação de árvore binária de busca |
| 15 | 23set | árvore AA |
| 16 | 28set | fila de prioridade |
| 17 | 30set | t4 |
| 18 | 5out | grafo |
| 19 | 7out | grafo, detecção de ciclos |
| 14out | semana acadêmica | |
| 20 | 19out | grafo, ordem topológica |
| 21 | 21out | grafo, árvore geradora |
| 22 | 26out | t4, p3 |
| 23 | 28out | com a transferência do feriado, a aula será só para questões sobre o trabalho, sem chamada (presença para todos) |
| N | prazo | descrição |
|---|---|---|
| T1 | 17ago,<meio-dia | invasores do espaço |
| T2 | 2set | TAD string |
| T3 | 29set | calculadora |
| T4 | cobrinha |
Os livros abaixo estão disponíveis no minha biblioteca, acessível aos alunos da UFSM.
Estruturas de Dados e Seus Algoritmos - Jayme Szwarcfiter e Lilian Markenzon
Estruturas de Dados - Nina Edelweiss e Renata Galante
Estruturas de Dados em C, Uma Abordagem Didática - Sílvio Pereira
Introdução a Estruturas de Dados - Com Técnicas de Programação em C - Waldemar Celes
Estrutura de Dados - Adriana de S. Vetorazzo, Mauício de O. Saraiva, Jeanine dos S. Barreto, Ramiro S. Córdova Jr.