UNIVERSIDADE FEDERAL DE UBERLÂNDIA
Faculdade de Engenharia Elétrica

Av. João Naves de Ávila, 2121, Bloco 3N - Bairro Santa Mônica, Uberlândia-MG, CEP 38400-902
Telefone: (34) 3239-4701/4702 - www.feelt.ufu.br - feelt@ufu.br
  

Timbre

Plano de Ensino

IDENTIFICAÇÃO

Componente Curricular:

Programação Procedimental

Unidade Ofertante:

Faculdade de Engenharia Elétrica (FEELT)

Código:

FEELT31201

Período/Série:

Turma:

A[1/2]

Carga Horária:

Natureza:

Teórica:

30

Prática:

30

Total:

60

Obrigatória:

(X)

Optativa:

( )

Professor(A):

Igor Santos Peretta

Ano/Semestre:

2022-2

Observações:

 

 

EMENTA

Desenvolvimento de aplocações práticas em linguagens C, com abordagem algorítmica e conceitos de avaliação de valores e de expressões; constantes, variáveis, ponteiros, strings, arrays; controle de fluxo de execução de código (sequência, instruções condicionais, laços, funções); estruturas e encapsulamento; alocação dinâmica de memória; manipulação de arquivos; base de arquitetura e organização de computadores. Noções de estruturas de dados, compiladores, análise de algoritmos, computabilidade e complexidade. Uso de computação nas nuvens. Noções de empreendorismo e inovação.

JUSTIFICATIVA

Criada em 1972 por Dennis Ritchie e Ken Thompson para desenvolver o sistema operacional Unix, a linguagem de programação C é uma linguagem compilada de propósito geral, estruturada, imperativa, procedural e padronizada pela ISO. Apesar das mudanças que sofreu desde primeira publicação, permaneceu notavelmente estável e unificada. Sua versão mais recente é padronizada pela norma ISO/IEC 9899:2011.
Devido à sua proximidade do código de máquina, a linguagem C permite com que o programador seja capaz de fazer previsões e de sempre controlar o comportamento do seu código. C permite o acesso de baixo nível à memória, necessita de baixos requerimentos do hardware e possibilita o reaproveitamento de códigos. A linguagem substitui com vantagens o uso da linguagem Assembly e ainda hoje é a linguagem de programação preferida para o desenvolvimento de sistemas e softwares de base, sendo usada também como uma linguagem de suporte em aplicações que necessitam de alto desempenho.
Compiladores C, por serem facilmente implementados, estão disponíveis para a maioria absoluta das plataformas de hardware existentes. O fato da linguagem ser simples e mais próxima do hardware permite com que a linguagem C seja largamente utilizada em aplicações de sistemas embarcados e microprocessadores onde é necessária a economia tanto da capacidade de processamento quanto da energia dispensada para suas operações.
Seja para gerar e manipular fluxos de dados próximos do hardware, para ajudar a compreender certas características do computador, para manipular e transformar com alto desempenho conjuntos de dados de interesse, ou mesmo para possibilitar a programação de microprocessadores heterogêneos, a linguagem C assume ainda hoje um importante papel na realidade mercadológica, tornando essa disciplina uma importante contribuição para o desenvolvimento profissional do estudante.

OBJETIVO

Objetivo Geral:

Desenvolver as habilidades dos discentes em programação na linguagem C explorando as estruturas básicas que compõe a arquitetura de um computador.

Objetivos Específicos:

  • Demonstrar a importância da linguagem C no desenvolvimento de aplicações em hardware heterogêneo;

  • Desenvolver habilidades dos discentes em produzir códigos de qualidade através da adoção de boas práticas de programação e de Test-Driven Development (TDD);

  • Desenvolver as habilidades dos discentes em trabalhar em grupo, gerenciar projetos e documentá-los;

  • Desenvolver a consciência, a autonomia e a responsabilidade dos discentes.

PROGRAMA

Aula

DDS

Prática 1 / 2

Teoria

1

5ªf

Não haverá aula

Introdução; Linguagem de programação C padrão C99

2

5ªf

Lab 00: Git, Github, Apresentação IDE / Primeiros programas

Tipos de Dados Primitivos, Qualificadores, Aritmética, Controle de Fluxo Simples (if-else, while)

3

5ªf

Lab 01: Interações com o usuário: Printf/Scanf, Aritmética

Mais sobre Controle de Fluxo: decisão (switch/case, ternário, aninhados), iteração (do-while, for, aninhados); Bases numéricas (dec, oct, hex, bin) *

4

5ªf

Lab 02: Controle de Fluxo, Uso de Funções

Básico de funções: tipo, parâmetros/argumentos. noção de escopo, retorno, protótipo *

5

5ªf

Lab 03: Vetores

Vetores e Matrizes

6

5ªf

Lab 04: Matrizes

Codificação de caracteres; Strings: strlen, strcat, strcpy, strcmp

7

5ªf

Lab 05: Strings

Funções e escopo; Recursão em C *

8

5ªf

Lab 06: Recursão

Registros e Struct; Union; Enum *

9

5ªf

Lab 07: Struct, Union, Enum

Ponteiros em C: variáveis, struct, funções, passagem pot referência, ponteiros para ponteiros

10

5ªf

Lab 08: Ponteiros

Alocação dinâmica em C: vetores, matrizes; Realocação; Organização da memória (stack e heap)

11

5ªf

Lab 09: Alocação Dinâmica

Listas ligadas: impressão; inserção e remoção (cabeça, cauda, interior); Listas ordenadas e circulares

12

5ªf

Lab 10: Listas Ligadas

Tipos Abstratos de Dados; Filas e Pilhas; Compilando com Makefile

13

5ªf

Lab 11: Filas e Pilhas

Algoritmos de Busca: Sequecial, Binária; Custo computacional; Análise assintótica; Ordem de crescimento; Eficiência de Algoritmos

Algoritmos de Ordenação: Selection, Insertion, Bubble, Merge, Quick

14

5ªf

Lab 12: Algoritmos de Busca e de Ordenação

Arquivos em C; Escrita e Leitura em Texto; Escrita e Leitura em Binário

15

5ªf

Lab 13: Arquivos, texto e binário

Dicas de aperfeiçoamento; SWIG; Encerramento da Disciplina

 

A carga horária total da disciplina é de 60 horas, ou seja, 72 horas-aula. Entretanto, de acordo com o cronograma apresentado estão previstas apenas 60 horas-aula. As 12 horas-aula restantes serão realizadas por meio de atividades assíncronas.

 

METODOLOGIA

Parte teórica: Aulas expositivas dialogadas com demonstrações práticas, diagramas e codificação-exemplo, acompanhadas de indicação para materiais de apoio.
Parte prática: Aulas práticas em laboratório com roteiros e apoio de sítios informativos de internet com discussão sobre dúvidas, exposição de exemplos e orientação em projetos.

Observação: Os materiais de referência e de apoio, assim como links relevantes, avaliações e repositório de materiais complementares, serão disponibilizados com o suporte do Moodle da UFU.

AVALIAÇÃO

Avaliação continuada: atividades avaliativas do tipo questionário no Moodle quase toda semana. Total máximo possível: 50% da nota final.

Entrega de programas e avaliação dos mesmos, com diferentes níveis de dificuldade. Total máximo possível: 50% da nota final.

Aceite da entrega de trabalhos atrasados com 10% de desconto na nota dos trabalhos entregues até o final do semestre letivo.

BIBLIOGRAFIA

Básica

Complementar

APROVAÇÃO

Aprovado em reunião do Colegiado realizada em: ____/____/______

Coordenação do Curso de Graduação: _________________________

 


logotipo

Documento assinado eletronicamente por Igor Santos Peretta, Professor(a) do Magistério Superior, em 14/03/2023, às 12:13, conforme horário oficial de Brasília, com fundamento no art. 6º, § 1º, do Decreto nº 8.539, de 8 de outubro de 2015.


QRCode Assinatura

A autenticidade deste documento pode ser conferida no site https://www.sei.ufu.br/sei/controlador_externo.php?acao=documento_conferir&id_orgao_acesso_externo=0, informando o código verificador 4336879 e o código CRC F5144C81.




Referência: Processo nº 23117.002527/2023-61 SEI nº 4336879