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:

FEELT

Código:

FEELT31201

Período/Série:

Turma:

A1/C1

Carga Horária:

Natureza:

Teórica:

30

Prática:

30

Total:

60

Obrigatória:

(X )

Optativa:

( )

Professor(A):

EDGARD AFONSO LAMOUNIER JÚNIOR

Ano/Semestre:

 

Observações:

 

 

EMENTA

Desenvolvimento de aplicaçõ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 estrutura de dados, análise de algoritmos e complexidade.

JUSTIFICATIVA

O curso tem como objetivo capacitar os alunos para o desenvolvimento de algoritmos de acordo com o paradigma de programação procedimental, a partir de práticas de programação em linguagem C.

OBJETIVO

Objetivo Geral:

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

Objetivos Específicos:

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

2. 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);

3. Desenvolver as habilidades dos discentes em trabalhar em grupo, gerenciar e documentar projetos;

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

PROGRAMA

1. Introdução

1.1. Arquitetura de Von Neumann: CPU, memória, dispositivos E/S.

1.2. Compilador, makefile, debug.

1.3. Repositórios (Github).

1.4. Plataformas de desenvolvimento (sistemas embarcados, computadores pessoais, IoT – Internet of Things, servidores e computação nas nuvens).

1.5. Soluções em hardware e em software.

2. Linguagem C

2.1. Primitivas e tipos de dados

2.1.1. Bases numéricas, conversão entre bases binária, decimal, octal, hexadecimal.

2.1.2. Primitivas ou tipos básicos: ASCII, Unicode, complemento de 2, IEEE 754-1985/2008

2.1.3. Operações binárias (BITWISE).

2.2. Armazenamento em memória.

2.3. Controles de fluxo de execução: sequência de instruções, condicionais, laços.

2.4. Ponteiros, vetores e strings

2.4.1. Aritmética de ponteiros.

2.4.2. Acesso aleatório de dados.

2.5. Funções e recursão

2.5.1. Passagem de parâmetros por valor e por referência.

2.6. Estruturas de dados e encapsulamento

2.7. Alocação dinâmica de memória

2.8. Matrizes e operações

2.9. Implementação e análise de algoritmos, estudo de complexidade

2.10. Manipulação de arquivos

2.11. Compilador SWIG e ligação de código C com outras linguagens

3. Tipos Abstrato de Dados

3.1. Conceito de struct e Tipos Abstratos de Dados.

3.2. Passagem de struct como parâmetros de funções.

3.3. Arrays de structs

4. Ponteiros

               4.1. Definição de ponteiros

               4.2. Ponteiros para tipos de dados e structs

               4.3. Operações com ponteiros

               4.4. Array de ponteiros

              

5. Arquivos

               5.1. Definição de arquivos

               5.2. Arquivos texto

               5.3. Arquivos binários

 

  

6. Cursos online abertos e massivos

6.1.https://www.youtube.com/watch? v=FH7YrE0RjWE&list=PLesCEcYj003SwVdufCQM5FIbrOd0GG1M4 (canal brasileiro eXcript).

6.2. https://www.coursera.org/learn/arduino-platform

6.3. http://mooc.fi/courses/2016/aalto-c/en/

METODOLOGIA

AVALIAÇÃO

As avaliações serão constituídas de duas provas e um trabalho final.

Distribuição da Pontuação da disciplina:

- PRIMEIRA AVALIAÇÃO: valor de 30 pontos

- SEGUNDA AVALIAÇÃO: valor de 30 pontos

- TRABALHO FINAL: valor de 40 pontos

BIBLIOGRAFIA

Básica

  1. André Backes, 2013, Linguagem C: completa e descomplicada, Rio de Janeiro : Elsevier, 371 p.
  2. Paulo Feofiloff, 2009, Algoritmos em linguagem C, Rio de Janeiro : Campus, 208 p. 3.
  3. Michael McRoberts; Rafael Zanolli (tradução), 2011, Arduino básico, São Paulo : Novatec, 453 p.

Complementar

  1. Brian W. Kernighan; Dennis Ritchie, 1988, C Programming Language, Prentice Hall, 2ed, 272 p.
  2. Delores M. Etter, 2013, Engineering problem solving with C, Boston : Pearson, 460 p.
  3. Pieter Hartel; Henk Muller, 1997, Functional C, Addison-Wesley; 1 edition, 456 p.
  4. Robert Sedgewick, 2007, Algorithms in C, Addison-Wesley, 16a impressão, 657 p.5.
  5. Herbert Schildt; Marcos Ricardo Alcantara Morais (tradução), 1991, C completo e total, Makron Books : McGraw-Hill, 889p.

APROVAÇÃO

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

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

 


logotipo

Documento assinado eletronicamente por Edgard Afonso Lamounier Junior, Professor(a) do Magistério Superior, em 09/05/2022, às 19:07, 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 3583686 e o código CRC 129D29A3.




Referência: Processo nº 23117.018223/2022-35 SEI nº 3583686