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

Código:

FEELT31522

Período/Série:

2

Turma:

C2

Carga Horária:

Natureza:

Teórica:

30

Prática:

30

Total:

60

Obrigatória:

( X)

Optativa:

( )

Professor(A):

LUCIANO VIEIRA LIMA

Ano/Semestre:

2o. SEMESTRE DE 2022

Observações:

carga horária segundo diário no portal do professor. 

 

EMENTA

CONFORME ficha da disciplina:

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, compiladores, análise de algoritmos, computabilidade e complexidade. Uso de computação nas nuvens. Noções de empreendedorismo e de inovação.

Complementando:

Para que o aluno tenho uma visão ampla da Programação Procedimental atual, não só centralizada em uma ferramenta do paradigma, serão apresentadas, também, algumas linguagens procedurais que permitem, de forma simples, mas eficiente e com relativa segurança quanto ao problema da transparência referencial matemática, comumentemente ocorrida nas programações com paradigma procedural, desde a época da programação binária direta, assenbler e as linguagens de mais alto nível, como C , Forth e outras que foram surgindo.    É de relativa importância que o aluno entenda e efetive implementações mobile/nuvem enquanto consolidam os conceitos e conhecimentos, entendendo com evitar o Heap Full e stack overflow pela falta de TCO, coleta de lixo eficiente e otimização automática pelos compiladores procedurais (em grande maioria).  Assim, na sua amplitude de ferramentas, linguagens, no paradigma procedimental, existem várias soluções com excelentes potencialidades e uso conforme os métodos utilizados nos desenvolvimentos assim o exigirem. Bem explica isso, em 12 de abril de 2001, Edsger W. Dijkstra, em sua famosa e referencial carta direcionada ao Budget Conuncil of his University (Austin Texas), sobre introdução à programaçãoA partir da tecnologia 4G, com o advento da instalação do 5G batendo às portas do mundo todo, revolucioando o paradigma da Iot, não se pode negar que o a tecnologia mobile e remota dominou todos os mercados, inclusive o ensino. Saber como, quando, onde e porque utilizar cada ferramenta, no caso dessa disciplina, as do paradgma procedural, é fundamental.   Também é importante contextualizar o uso do quando, como, onde e porque desse paradigma em relação aos demais, a neurociência evoluiu após o Nobel de 2000, Eric Kandel, e a máquina de Von Neumann, com a estrutura de memória armazenada e acessados repositórios por endereços estão sendo repensados, já que o armazenamento da memória na cérebro e mente humana é multi-dimensional. 

 

JUSTIFICATIVA

CONFORME EMENTA: Não tem na ementa. 

JUSTIFICATIVA DO PROFESSOR:

O mercado de trabalho globalizado tem solicitado cada vez mais do programador, soluções eficientes, mas que sejam rápidas, simples de programar, rápidas de implementar, de fácil correção e retrabalho, que sejam multiplataforma e multidevice, e, principalmente, que sejam mobiles e multidevice tanto  na atuação, controle e supervisão.   Assim, é importante que seja bem esclarecido ao estudante os conceitos sólidos de métodos, técnicas, paradigmas e as ferramentas de programação (as linguagens) e o respectivo contexto e identificação adequada de uso.  Isso não só capacitará melhor ao aluno encontrar um mercado de trabalho local ou global, bem como, por outro lado, na manutenção dos respectivos empregos, já que, conhecendo os conceitos e conhecimentos básicos e discriminantes de cada paradigma, o surgimento de novas ferramentas (linguagens e pacotes computacionais) serão  mais facilmente absorvidos gerando uma rápida capacitação e reciclagem.  Nesse contexto globalizado em aplicação e geração de soluções, o paradigma procedimental tem pontos fundamentais e emergentes que devem fser identificados pelo aluno, para que saiba, a cada contexto, o que utilizar do mesmo e como interagir com outras ferrramentas (linguagens) de outros paradigmas quando isso for necessário, seja por eficiência ou por ausência de recursos. Entre modelar drivers e o pensamento humano permeiam vários contextos que geram uma necessidade de uma mente capacitada e aberta a gerar soluções eficientes e tempo, precisão e segurança. 

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:

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.

Complementando ao registrado na ementa:

     Objetivos específicos, conforme visão do professor, além dos já elencados anteriormente

  1. Entender a utilização, potencialidades, aplicabilidades, contextualização, limitações e estrutura do paradigma procedimental com uma plena visão do quando, como onde e porque utilizá-lo, seja do porque da existêncai de ponteiros ou da falta de TCO. O importante é que o domínio de tal paradigma e utilização de suas ferramentas (linguagens), estejam consolidadas no saber adquirido para escolha e uso adequado a cada contexto. 
  2. De forma complementar, é importante ficar também consolidado como os paradigmas de programação podem contribuir (ou até inviabilizar) para o sucesso da cadeia de produção. O aluno deve entender que a diversidade de paradigmas e ferramentas (linguagens), têm um motivo de existirem e que o processo de escolha do que usar, geralmente demandado pelo contexto que o(s) método(s) utilizado(s) na resolução dos problemas exigem.
  3. Entender os métodos, técnicas e ferramentas de programação procedimental adequados aos tipos mais usuais de processos onde o software é um dos elementos centrais, não prescindindo de se consolidar o como, quando, onde escolher cada ferramenta, cada paradigma. 
  4. Capacitar o aluno a escolher o paradigma e a linguagem de programação associada ao mesmo, mais adequados, que traduzam em soluções eficientes, rápidas, seguras, menos datadas, simples de programar, rápidas de implementar, de fácil correção e retrabalho, que sejam multiplataforma e multidevice, e, principalmente, que sejam mobiles e em nuvem, tanto  na atuação, controle ou supervisão
  5. Apresentar o conceito atual de software embarcado para aumento da segurança dos dados, velocidade de processamento, monitoramento à distância bem como reconfiguração, passando pela visão geral dos SoC, pSoC e derivados. 

PROGRAMA

CONFORME EMENTA

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. Aplicação em sistemas embarcados

      3.1. Comunicação serial para sistemas embarcados (ex. Arduino)

      3.2. Desenvolvimento de aplicações em sistemas embarcados (ex. Arduino)

      3.3. Desenvolvimento de aplicações em nuvem

4. Cursos online abertos e massivos

 4.1. https://www.youtube.com/watchv=FH7YrE0RjWE&list=PLesCEcYj003SwVdufCQM5FIbrOd0GG1M4 

(canal brasileiro eXcript)

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

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

OBS. Em complemento ao programa supra descrito, acrescenta-se os complementos registrados nos itens ateriores nesse plano de ensino. 

METODOLOGIA

A base da metodologia adotada é o PBL&I. O I é de improvement.  A partir dessa base, usaremos uma metodologia que já é utilizada desde 2004, os MCE - Mapas de Conhecimento Estruturado,  com vários artigos publicados sobre ela, bem como entrevistas, que evitam a Ilusão de Conhecimento (Steven Sloman and Philip Fernbach), Eliminam as Variáveis Escondidas dos Sistemas Complexos (John C. Gooodman) onde os alunos são a principal causa, evitam o Parasitismos tecnológico e administrativo (Luciano de Samosata) na produção e administração dos projetos e produtos. Um pouco sobre isso pode ser visto, também, no artigo no link https://www.linkedin.com/posts/luciano-lima-87ba3720_ugcPost-6828971817781338112-BeK3. O entendimento de utilização de funções de alto nível, utilização de map e reduce - notação do conjunto solução global (Zermelo - Frankael), otimização do compilador, TCO, o evitar da quebra da Transparência referencial matemática, as limitações da abstração decimal para a binária utilizada no computador, maximizando o uso do Heap e stack dentro da arquitetura utilizando o paradgma funcional será um ponto também importante a ser sedimentado e consolidado durante o curso. 

Em trabalhos em grupos, serão feitas aulas síncronas com grupos, em separado, conforme disponibilidade de horário de cada grupo, bem como síncronas individuais  por vídeo conferência à escolha do aluno. 

Em aulas com utilização de recursos digitais e mídias sociais,  serão utilizados os recursos:

1- Microsoft Teams

2- Google Meet

3- WhatsApp

4- Zoom

5- youtube

Em trabalho personalizado em atendimento e ações aderentes ao curso, serão utilizados os recursos:

1- e-mail fornecido pelos alunos

2- whatsApp

3- youtube

4- linkedIn

Serão insentivados os alunos a buscarem, com as devidas proteções e cuidados exigidos e de bom senso no momento da pandemia, a procurarem estágio home office e, até mesmo semi ou presencial, de forma que os conhecimentos que irão sendo acumulados possam ser colocados em prática. 

Serão motivados e desafiados a irem além (deliberate practice) do que já aprenderam e estão aprendendo, sendo que tenham o professor ou outro tutor técnico com experiência comprovada na área para dirimir dúvidas e acompanhar a aprendizagem por treinamento, nunca por experimentação. 

Como o ensino é um Sistema Complexo (John C. Goodman e outros), a Metodologia adotada é a do Ensino Profissional na dimensão Tácita, conforme utilizada nas faculdades de referência em engenharia e ciências aplicadas, incluindo medicina. As dimensões do ensino profissional, conforme o Relatório de Abraham Flexner(Carnegie Foundation Bulletin Number Four)  são:    1- Explícita , 2- Tácita e 3 - Compartilhada.  Para que o aluno, nas práticas, possa adquirir e aprender o conhecimento, são necessárias essas três dimensões. Isso equivale a: Explícito = Teoria (conceitos e conhecimentos), Tácito = Treinamento na presença de um preceptor (o professor) e não por experiência (tentativa e erro), Compartilhado = o aluno exercendo o conhecimento adquirido ou aprendido (conforme o caso) e aplicando o mesmo no mundo real na produção de produtos, conforme expecificações e normas.  Observando que ensino explícito pode ser aprendido, já, o tácito, é necessário a aprendizagem tutorada para que as habilidades sejam adquiridas com competência (como é exigido no ensino profissional).   A dimensão explícita da aprendizagem profissional, portanto, será utilizada para o aluno exercer o ato de aprendizagem com exemplos: vídeos, tutoriais, artigos, simuladores, palestras, documentários, enfim, tudo que de recente tem surgido de forma emergente, bem como os conceitos e conhecimentos já consolidados anteriores e durante a pandemia atual desde o início de 2020. Os alunos terão também guias para que possam, em grupo (virtual), ou de forma individual, efetivarem os conceitos e conhecimentos que serão treinados e aplicados no mundo real, quando possível, exercendo a dimensão compartilhada e cumprindo as três etapas, quando possível, durante a disciplina, no contexto da mesma.

As aulas, quando necessário for, serão efetivadas através das plataformas:  Microsoft Teams, Hangout, Skype, Zoom e whatsapp vídeo (nas dúvidas particulares).   

O material de apoio e interação personalizada e grupos será enviado via e-mail e celular (whatsapp, telegram) particularmente a cada aluno e, quando o caso, em grupo. O Youtube, LinkedIn e outros meios sociais também serão utilizados, conforme necessidade.

6.2 ATIVIDADES ASSÍNCRONAS COMPLEMENTANDO AS 54 HORAS AULA

Serão enviados pelas redes sociais (whatsapp, e-mail, outros,...) material para pesquisa em empreendedorismo digital (value proposition, brain storm, design thinking, XP user experience, BMC, BPMN, PITCH, matriz GUT, matriz CEB, ...) aplicado ao projeto, valorização e apresentação do produto/projeto de aplicação, focado na disciplina e no contexto da Engenharia Elétrica e suas ênfases. Esses material, estudo e aquisição de conhecimento visam complementar as 12 horas aulas complementares às já presencialmente constadas no diário. 

HORÁRIO DE ATENDIMENTO AOS ESTUDANTES

Os estudantes poderão entrar em contato com o professor de segunda à sexta feira entre 15  e 20 Horas(excluídos os horários de aula do professor), para tirarem dúvidas ou o que achar necessário (no contexto da disciplina),  principalmente devido às atividades assíncronas, bem como as síncronas durante os trabalhos que forem marcados para desenvolverem em casa. Os mesmos serão atendidos via áudio (celular), ou video conferência (celular ou computador). 

 

ATIVIDADES

 

    

       

                                              Atividade 

 

 

 

Enquanto a turma não se inscreve em uma plataforma para as aulas síncronas, emails são disparados aos alunos para escolha da plataforma principal, que foi a Teams, e das os contatos para as demais opções, conforme nescessidades e potencialidades de cada alunoApresentação do curso, definição de conceitos como: Métodos, Técnicas, Paradigmas e Linguagens.  Definição dos paradigmas mais utilizados atualmente; porque existem tantos e tantas linguagens associadas aos mesmos; como definir a escolha do paradigma e linguagem associada ao mesmo que melhor atenda à resolução de um problema.

Nesta aula é introduzido o conceito do Efeito Dunnig Kruger e da Síndrome do Impostor que, em alta porcentagem, atrapalham a aprendizagem, conforme entrevista minha explicando o problema e, de forma original, uma solução eficaz, conforme https://www.youtube.com/watch?v=OqKzHzPgWHg

Nessa aula é solicitado e  insentivado a formação de grupos de até 5 alunos para que se possa efetivar a dimensão compartilhada do ensino, conforme metodologia escolhida para a disciplina no contexto da pandemia. Um e-mail é informado, juntamente com contato por whatsapp e telegram, para que contatos individuais possam ser efetivados. 

 

 

 

 É repassado um link e código do Teams da Microsoft para atividades onLine.  É apresentada a metodologia através das dimensões do conhecimento para aprendizagem profissional tácita. Serão passados vídeos importantes aos conceitos e conhecimentos para que a aprendizagem por treinamento seja efetivada, não gerando Ilusão de Conhecimento  (Sloman e Fernback) bem como os três tipos de Parasitismo (1,2 e 3 - Samósata). O que acontece em Sistemas Complexos, como é a disciplina de Programação Procedimental ( McCloskey, Sokol, and Goodman).  O material de apoio e complementar ao da internet é enviado as alunos, produzido pelo próprio professor, de conteúdo original e em consonância com a disciplina.  É apresentado um vídeo explicando como a aprendizagem, a aquisição do conhecimento tácito é importante para a formação profissional do engenheiro. Um vídeo,   https://www.youtube.com/watch?v=HTEiteidmC0 ,  produzido pelo professor, é apresentado com a explicação contextualizada em programação de três robôs pequenos, da OZOBOT (bi-campeões dos campeonatos internacionais de Las Vegas).  Ainda, como atividade, é apresentado um exemplo de linguagem, CODE, paradigma de Blocos, ou Puzzle, idealizada para aprendizagem remota, sendo passado um texte de auto aprendizagem em 20 etapas, https://studio.code.org/hoc/1 ,  onde o aluno recebe um certificado ao cumprir com acerto as 20 questões, e, assim, comprovando ter feito a tarefa. Esse paradigma é o mesmo utilizaddo pelo robôs supra citados e por outras empresas, como o MIT e GOOGLE, em parceria com Bill Gates e Zucherberg.  Esse paradigma de linguagem será útil para aprendizagem e geração de aplicativos mobile que serão objetos, também, dessa disciplina. 

 

 

 

 

 Os paradigmas de programação, com mais foco em procedimental, são apresentados, de forma básica, utilizando como linguagens procedimentais básicas o C e Lua. Também serão apresentados exemplos, compartilhando a tela com alunos, do que define  e diferenciam os prinncipais paradigmas (já tendo visto o puzzle/blocos), a saber:  procedural, funcional e lógico. Dar ênfase no paradigma procedimental (C, Lua e alguns Mobile híbridos) e fazer alguns estudos de caso e exemplos. 

6 a 8

 

 

Inicia-se explicando que programar é basicamente saber trabalhar com Ações e Eventos, cada paradigma com sua especificidade de recursos e sintaxe. Explica-se a importância, com exermplos compartilhados em tela, quando, como e porque utilizar cada um e em que contextos, bem como quando e porque não utilizar.  Como os alunos estão preparando suas máquinas para trabalhar multiparadigma, cujos links serão fornecidos para baixar os sistemas gratuitos para trabalharem com o professor, é mostrado que, com apenas um editor binário (será utilizado o Hex Editor Neo), pode-se programar em linguagem de máquina, proceduralmente, utilizando binário ou código Hexadecimal. Para tanto, elege-se, como objetivo, a implementação de protocolos e formatos de áudio, como o Wave e MIDI, que são procedimentais, já contemplando os tópicos elencados na ementa da disciplina. O conhecimento de como ler um arquivo e salvar um arquivo, gerando , entendendo  e salvando código executável , é fundamental para o programador, principalmente nos dias de hoje onde os Hackers são necessários para evitar invasões, eliminar virus, ... , que somente se é capaz disso entendendo bem os arquivos, sejam armazendos por strings (vetores de caracteres de escrita e leitura) e de dados (um vetor de valores). 

 

 

 

Já com uma boa base. Diferencia-se através de material produzido pelo professor, os conceitso e conhecimentos programação procedimental.   O conceito de como a arquitetura dos computadores e como os códigos escritos são compilados, com ou sem uso de ponteiros, implementação de TCO (já disponível em uma versão do C, também) e de como evitar estourar Heap e Stack, bem como implementar sensores ativos de software usando análise léxica e sintática na geração dos autômatos que darão origem à estrutura do código (implementação de algorítimos e funções), no caso procedimentoal, será o ponto de detaque desse item. 

 

 

   

 

 

  manipulação de Arquivos de dados e Arquivos de Texto. Estudo dos alfabetos mais utilizados pelas linguagens de programação, já citadas, de tal modo que sejam multi devices e multiplataforma. Ente alguns dos alfabetos estão:  ASCII, ANSI, UTF8, UTF8 com BOM e outros. Para tanto, será utilzado um editor binário para que se possa "escovar" os bits do código gerado, consolidando o entendimento entre a diferença entre a abstração e o que, na realidade a máquina recebe como código.  Dessa forma, caracteres especiais, acentuações, ... serão trabalhadas corretamente com a escolha certa do alfabeto utilizado na programação.   Como editor binário será sugerido o Hexa Neo ou a construção de um próprio. 

 

 

 

Será apresentada a arquitetura de comunicação do processador com a memória e respectivos barramentos (dados, endereço e controle) para que se possa entender o conceito de ponteiros e pilhas, de tal forma que, ao usar nas linguagens, seja uma ação natural a diferenciação entre endereço e conteúdo na passagem de escrita e leitura em memória, seja qual estrutura for.   

Início de produção de aplicativos mobiles com base de dados integrada e com controle dos recursos mobile:  audio, vído, imagem, links, botões, animações, interatividade, sensores, ....   usando programação procedural  paradigma Puzlle, utilizando a linguagem appInventor e/ou outras que permitam a geração de aplicativos multiplataforma e multidevice.   Os apreendizados obtidos nas aulas explícitas, teóricas, serão utilizados nos mesmos, gerando produtos em formato apk (Android ) e app (iOS), fundamentalmente (os mais usados).  Prevê-se a utilização de três linguagens que melhor representam esse paradigma, contextualizando a escolha mais adequada de cada uma.  Serão implementados e feito o Build de até 10 aplicativos úteis, mas com conceitos pontuais, tais como: um tradutor para várias línguas usando TTS e STT, ou, mesmo, usando um campo de escrita. Também serão implementados  players de áudio e vídeo, programas de portifólio de produtos, compartilhamento de mídias ... Todos os aplicativos rodarão em tempo real em um simulador e, depois do Build, instalados em celulares para comprovação e efetivação da conclusão dos produtos, seja Android, iOS,  outros. 

 

 

 

 Será passado aos alunos, noções de empreendedorismos para que sejam apresentados os trabalhos, iniciando pelo pitch (na apresentação, e nos tópicos necessários ao enxoval de uma empresa, as etapas de desenvolvimento do produto: entrega de valor, brain storm, design thinkng, BMC, Matriz SWOT, GUT e CEB e BMPN com material original desenvolvido pelo professor para que os grupos se revistam como empresas para fazer o Pitch dos produtos com o Briefing e apresentação dos MPV dos mesmos.  

 

 

 

Aplicação em embarcar o software em microcontroladores

Orientação a objeto x programação estruturada.Orientação a objeto associado à  programação estruturada.Apresentação do paradigma estruturado procedimental com orientação a objeto com solução de geração eficiente de aplicativos mobile, multiplataforma e multidevice, incluindo smart TVs e métodos para embarcar o software, como os tradicionais e os atualmente utilizados SoC (como são os casos dos celulares e afins).

Revisão de paradigma estruturado apresentando a linguagem C em plataforma Windows e Linux com reaproveitamento de código e framework similares, conforme descrição do programa, usando a linguagem aplicada a programação de microcontroladores e comunicação de protocolos seriais com fio e wireless, complementando os itens faltantes da ementa.

AVALIAÇÃO

1-As avaliações serão práticas, divididas em exercícios com linguagem e plataformas SDK (mobile) C, Lua, appInventor, Solar 2D aplicativos, produtos mobiles (mínimo de 3), procedimentais.

2-Apresentação com foco em empreendedorismo atual, conforme supra descrito. 

O valor final será a média dos pontos obtidos em cada entrega de trabalho. Os trabalhos terão ponderação igual com valor de 0 a 100.

Serão efetuadas avaliações quantitativa e aualitativa justificada a cada trabalho proposto, seja em grupo ou individual.  Sempre que possível, será proposto DiY tendo como base um PBLI. Essas avaliações balizarão o resultado das notas e conteúdo entregue/apresentado.

Total Máximo - 100 pontos

7.2  RECUPERAÇÃO

Será proposto pelo professor um trabalho de avaliação, seguido de apresentação contendo o foco de empreendedorismo digital atual, conforme apresentado nas atividades assíncronas, ou avaliação do conteúdo de toda disciplina, individualmente, valendo como média entre a avaliação já obtida e essa nova da recuperação.  Será efetuada nova avaliação quantitativa e aualitativa justificada.

BIBLIOGRAFIA

BÁSICA

1. BACKES, André. Linguagem C: completa e descomplicada, Rio de Janeiro: Elsevier, 2013.

2. FEOFILOFF, Paulo. Algoritmos em linguagem C. Rio de Janeiro: Campus, 2009.

3. MCROBERTS, Michael. Arduino básico. São Paulo: Novatec, 2011.

BIBLIOGRAFIA COMPLEMENTAR

1. ETTER, Delores M. Engineering problem solving with C. 4. ed. Boston: Pearson, 2013.

2. HARTEL, Pieter; MULLER, Henk. Functional C. Harlow, UK: Addison-Wesley, 1997.

3. KERNIGHAN, Brian W.; RITCHIE, Dennis. C, a linguagem de programação. 4. ed. Porto Alegre; Rio de Janeiro: EDISA; Campus, 1988.

4. SEDGEWICK, Robert. Algorithms in C. 3rd. ed. Boston: Addison-Wesley, 1998-2002.

5. SCHILDT, Herbert. C completo e total. São Paulo: Makron Books; McGraw-Hill, 1991.

OUTRAS

1- ASCENCIO, A.F. e CAMPOS, E. A.  Fundamentos da Programação de Computadores - Algoritmos, Pascal, C/C++ e Java. 2a. Edição. São Paulo: Pearson Prentice Hall, 2007.

2- SCHILDT, h. C Completo e Total. 3a. Edição. São Paulo: Makron Books do Brasil, 1997.

3- MIZRAHI, V.V. Treinamento em Linguagem C. 2a. Edição. São Paulo: Prentice Hall, 2008

4- VAREJÃO, F. M. Linguagens de Programação - Conceitos e Técnicas. Rio de Janeiro: Campus, 2004

5- SEBESTA, R. W. Conceitos de LInguagens de programação. Porto Alegre: Bookman, 2003

6- BARNES, D.J; KÖLLING, M. Programação Orientada a Objeto com JAVA. São Paulo, 2009.

7- MIZRAHI, V.V. Treinamento em linguagem C++.  mÓDULO 1. 2a. Edição. São Paulo, Prentice Hall, 2006

8- CHAPMAN, S. J. Java for engineers an Scientists. Upper Saddler River, NJ: Prentice Hall, 2004

9- Manuais e softwares e aplicativos a serem utilizados no curso

10- Material atualizado desenvolvido e fornecido pelo professor nos paradigmas/linguagens utilizados

 

APROVAÇÃO

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

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

 


logotipo

Documento assinado eletronicamente por Luciano Vieira Lima, Professor(a) do Magistério Superior, em 06/02/2023, às 17:22, 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 4245707 e o código CRC 0B8F577C.




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