1. Ementa
1.1. 1. Introdução ao conceito de Algoritmos. Histórico e fundamentos da linguagem C. Estrutura de um programa em C. Estudo de vetores e matrizes. Manipulação de String. Acesso à memória utilizando ponteiros. Operações com ponteiros. Implementação de Estruturas (Struct) e Unions. Compreensão de funções e bibliotecas. Manipulação de Arquivos.
2. Objetivos
2.1. Fomentar o desenvolvimento do raciocínio crítico para a implementação de programas eficiente a partir da apresentação da estrutura da linguagem C e boas práticas.
2.2. Cognitivos
2.2.1. - Desenvolver as habilidades inerentes ao desenvolvimento de aplicações em C; - Visualizar a estrutura de um código em C; - Entender o fluxo de desenvolvimento utilizando C; - Compreender da organização de memória; - Entender o caminho do compilador para um programa em C;
2.3. Habilidades
2.3.1. - Projetar programas utilizando boas práticas de programação; - Analisar criticamente possíveis problemas de compilação; - Construir algoritmos simples utilizando C; - Desenvolver raciocínio crítico para analisar o problema proposto de forma a fornecer a solução mais viável utilizando a linguagem C; - Possuir autonomia para a análise e otimização de códigos em C; - Manipular dados da memória utilizando ponteiros; - Automatizar tarefas repetitivas utilizando o conceito de função; - Compreender todo o ciclo de vida de um código em C;
2.4. Atitude
2.4.1. - Explicar o funcionamento de aplicações desenvolvidas com a linguagem C; - Identificar erros e propor soluções eficientes a partir de uma análise crítica dos logs de compilação; - Alterar e realizar operações otimizadas de dados na memória; - Instalar e configurar ambientes necessários para o desenvolvimento de aplicações em C; - Utilizar Bibliotecas para implementação de programas em C.
3. Avaliação
3.1. O processo avaliativo compreenderá: -Avaliação Regimental (A1) no valor de 0,0 a 5,0. -Avaliações parciais e processuais (A2) no valor de 0,0 a 5,0. -A Nota Final (NF) resulta da soma destas duas notas (A1 A2). É considerado aprovado na disciplina o aluno que obtiver Nota Final (NF) igual ou superior a 6,0 (seis) e que tenha, no mínimo, 75% (setenta e cinco por cento) de frequência às atividades acadêmicas.
3.2. Diagnóstica
3.2.1. - Através de perguntas e respostas diretas ao aluno no início do curso;
3.3. Formativa
3.3.1. - Exercícios de fixação em grupo para cada tema trabalhado em sala de aula; - Discussões sobre a resolução dos exercícios em sala de aula; - Desafios práticos extraclasse e em grupo para cada estágio;
3.4. Somativa
3.4.1. - Avaliações teóricas e individuais em sala de aula para cada estágio. - Aplicações escritas individuais, atividades no Ambiente Virtual de Aprendizagem (Blackboard), seminários e trabalhos desenvolvidos em computador.
4. Bibliografia
4.1. Básica
4.1.1. - DAMAS, Luiz Manoel D. Linguagem C. 10. ed. Rio de Janeiro: LTC Editora, 2007. - SCHILDT, H. C Completo e total. São Paulo: Makron Books, 1976. - DEITEL, Harvey M.; DEITEL, Paul J. Como programar em C. 6. ed. São Paulo: Livro Técnico e Científico, 2011.
4.2. Complementar
4.2.1. - ZIVIANY, Nivio. Projeto de algoritmos com implementação em pascal e C.2. ed. São Paulo: Thomson, 2004. - SOFFNER, Renato. Algoritmo e Programação em Linguagem C. São Paulo. Saraiva, 2013 - MANZANO, José A. N. G. Estudo dirigido de linguagem C. 17. ed. São Paulo: Érica, 2013. - MIZRAHI, Victorine Viviane; Treinamento em Linguagem C, Pearson, 2008 - MANZANO, José Augusto N. G. Linguagem C : acompanhada de uma xícara de café - São Paulo : Érica, 2015.
5. Conteúdo
5.1. Primeira Avaliação
5.1.1. 1. 1. Introdução à Linguagem de Programação C 1.1. Histórico da Linguagem C 1.2. Principais características 1.3. O Compilador C 2. Anatomia de um programa em C 2.1. A estrutura de um programa em C 2.2. Tipos de dados elementares, constantes, variáveis, casting 2.3. Operadores e expressões 2.4. Comandos de controle de fluxo 2.5. Entrada/saída básica 2.6. O Pré-processador 3.1. Matrizes unidimensionais (vetores) 3.2. Declaração e uso de matrizes 3.3. Inicialização de matrizes 3.4. Matrizes e strings 3.5. Matrizes multidimensionais 3.6. Manipulação de strings 4. Estruturas e uniões 4.1. Características 4.2. Declaração 4.3. Inicialização 4.4. Estruturas aninhadas 4.5. Estruturas auto-referenciadas
5.2. Segunda Avaliação
5.2.1. 5. Apontadores 5.1. Organização de dados na memória 5.2. Características 5.3. Declaração 5.4. Atribuição de valores para apontadores 5.5. Vetores e apontadores 6.6. Aritmética de apontadores 6. Utilização de funções 6.1. Conceitos e sintaxe geral de funções em C 6.2. Retorno de funções e declaração de tipos 6.3. Parâmetros e argumentos 6.4. Passagem de parâmetros por valor 6.5. Passagem de parâmetros por referência 6.6. Principais funções da biblioteca C 7. Arquivos 7.1. Declaração e uso de streams 7.2. Funções de entrada/saída avançada 7.3. Entrada/saída de baixo nível
6. Recursos
6.1. Quadro branco; Computador com Datashow; Ambiente de desenvolvimento de software na linguagem de programação C.
7. Estratégias de Ensino
7.1. Técnicas de Ensino
7.1.1. serão empregadas para o desenvolvimento dos conteúdos: - Aulas orientadas a problemas; - Aulas expositivas dialogadas empregando quadro e equipamento de multimídias; - Resolução intensiva de exercícios em quadro; - Ambiente Virtual de Aprendizagem (AVA) - Exercícios dirigidos em sala de aula; - Debates / Fóruns de discussão;
7.2. Tecnologias de Informação e Comunicação (TICS)
7.2.1. serão empregadas as ferramentas: - Visual Studio Code; - Eclipse IDE for C++ Developers; - GCC; - REPL online IDE; - Visual Code