Programação Imperativa e Funcional

EMENTA

Introdução a paradigmas de linguagem de programação imperativa e funcional. Introdução a linguagem de programação C: comandos de entrada e saída; estrutura de decisão e repetição; matrizes, strings e tipos de dados estruturados; subprogramas, arquivos, conjuntos, ponteiros; alocação dinâmica de memória; introdução à programação modular. Introdução a linguagem de programação Haskell: listas, tuplas, tipos, classes, polimorfismo, funções de alta ordem, recursão.

OBJETIVOS

Revisar diferentes linguagens de programação: imperativas e funcionais, lógicas e concorrentes; estabelecer as características necessárias de uma boa linguagem de programação em função do problema a ser solucionado; descrever as estruturas de controle, unidades de programa, comandos e o gerenciamento de memória das linguagens de programação; conhecer e avaliar aspectos de implementação das linguagens de programação.

RECURSOS

Os recursos utilizados nas aulas incluem computadores, slides, ferramentas digitais, baralhos, jogos e post-its para a realização de atividades analógicas.

A carga horária diária da disciplina é de 240 minutos, sendo 60 minutos de atividades assíncronas e 180 minutos de atividades presenciais ou síncronas mediadas.

METODOLOGIAS DE APRENDIZAGEM

A metodologia de ensino adotada baseia-se em aulas expositivas dialogadas, debates, estudos de caso, dinâmicas e apresentações de trabalhos realizados pelos alunos, valorizando a dimensão crítica, participativa e construtiva, com especial atenção à capacidade de expressão oral e escrita.

Como suporte às atividades, será utilizado Ambiente Virtual de Aprendizagem (Google Classroom), além de Slack, e-mail, Zoom, Google Meet, projetor, computador, materiais em PDF e videoaulas.

METODOLOGIA DE AVALIAÇÃO

O processo avaliativo da disciplina é composto por duas avaliações: Avaliação 1 (AV1) e Avaliação 2 (AV2). Cada avaliação é constituída por um conjunto de atividades, totalizando 10 pontos. A nota final do(a) estudante será calculada conforme a fórmula apresentada a seguir:

(AV1 + AV2) / 2 = Média Final

Legenda:

Composição das notas (AV1 e AV2):

BIBLIOGRAFIA BÁSICA

BIBLIOGRAFIA COMPLEMENTAR

CONTEÚDO PROGRAMÁTICO

O cronograma da disciplina é atualizado continuamente, de acordo com o andamento das atividades em sala. As datas previstas podem sofrer alterações em casos excepcionais, e todas as mudanças são previamente comunicadas em aula. Ressalta-se que o semestre letivo, conforme estabelecido no Calendário Acadêmico institucional, já delimita o período no qual o(a) estudante deve se organizar e se dedicar às atividades e estudos da graduação.

Aula Data Conteúdo
- 09/02 Início das Aulas
1 11/02 Atividade assíncrona: AWS Academy
Introdução a paradigmas de linguagem de programação imperativa
Introdução à linguagem de programação C
2 25/02 Atividade assíncrona: AWS Academy
Programação em C: comandos de entrada e saída
Estrutura de decisão e repetição
3 04/03 Programação em C: arrays uni e multidimensionais
Programação em C: strings
4 11/03 Programação em C: tipos de dados estruturados
5 18/03 Programação em C: subprogramas
Programação em C: arquivos
Programação em C: conjuntos
6 25/03 Programação em C: ponteiros
Programação em C: alocação dinâmica de memória
7 01/04 Programação em C: ponteiros
Programação em C: alocação dinâmica de memória
8 08/04 Programação em C: alocação dinâmica de memória
Revisão
9 14/04 AVALIAÇÃO 1
10 22/04 Introdução a paradigmas imperativo e funcional
Introdução à linguagem de programação Haskell
11 29/04 Programação em Haskell: listas
Programação em Haskell: tuplas
12 06/05 Programação em Haskell: tipos
Programação em Haskell: classes
13 13/05 Programação em Haskell: polimorfismo
Acompanhamento de projeto
14 20/05 Programação em Haskell: funções de alta ordem
Acompanhamento de projeto
15 27/05 Programação em Haskell: recursão
Acompanhamento de projeto
16 03/06 Programação em Haskell: recursão
Acompanhamento de projeto
17 10/06 Acompanhamento de projeto
18 15/06 AVALIAÇÃO 2