PROGRAMA DE DISCIPLINA Disciplina: INTRODUÇÃO À PROGRAMAÇÃO Carga horária total: 60 h Carga horária teórica: 30 h Carga horária prática: 30 h Código da Disciplina: CCMP0041 Período de oferta: 2015.2 Turma: CB Professor responsável: Marcelo Santos Linder EMENTA: Conceitos básicos de linguagens de programação. Histórico, classificação e principais aplicações de linguagens de programação. Modelos de execução de programas. Ferramentas de desenvolvimento. Nomes, vetores e endereços. Tipos de dados. Constantes e variáveis. Expressões. Comandos de estruturação de fluxo de controle. Modularização. Escopo de nomes e tempo de vida de variáveis. Passagem de parâmetros. Recursividade. Tipos de dados definidos pelo usuário. Entrada e saída de dados. Arquivos. Uso em laboratório de uma linguagem de programação de alto-nível. OBJETIVO GERAL: Tornar os alunos capazes de visualizar soluções computacionais para problemas através da construção de programas, em linguagem de alto nível estruturada. OBJETIVOS ESPECÍFICOS: Familiarizar o aluno com o modelo sequencial de computação; Apresentar conceitos básicos de linguagens de programação; Capacitar o aluno no uso da linguagem C; Treinar o aluno no processo básico de desenvolvimento de software (concepção, edição, execução e teste de programas de computador). CONTEÚDO PROGRAMÁTICO: 1. Introdução 1.1. Conceito 1.1.1. Computador 1.1.2. Computação 1.1.3. Programa 1.1.4. Algoritmo 1.1.5. Linguagem UNIVASF 1
2. Linguagem de Programação 2.1. Conceitos básicos de linguagens 2.1.1. legibilidade 2.1.2. desempenho 2.1.3. segurança 2.1.4. portabilidade 2.1.5. confiabilidade 2.1.6. definição e uso de abstrações 2.1.7. expressividade 2.1.8. flexibilidade 2.1.9. custo (treinamento, desenvolvimento, execução, manutenção, etc.) 2.1.10. linguagem de máquina x simbólica 2.1.11. linguagem de baixo nível x alto nível 2.2. Paradigmas de linguagens de programação 2.2.1. Imperativo 2.2.2. Orientado a objetos 2.2.3. Funcional 2.2.4. Lógico 2.3. Especificação de linguagens de programação 2.3.1. Métodos formais x informais 2.3.2. Sintaxe e BNF 2.3.3. Semântica 2.3.4. Modelos de execução de linguagens 2.3.5. Interpretação 2.3.6. Compilação 2.3.7. Métodos híbridos 2.3.8. Máquina virtual x máquina real 2.3.9. Ambiente de programação 2.3.10. Editores 2.3.11. Compiladores 2.3.12. Ambiente integrado de desenvolvimentos (IDE) 2.3.13. Geradores de código 2.3.14. Programas auxiliares 3. Linguagem de Programação C 3.1. Breve histórico 3.2. Características básicas 3.3. C padrão ANSI 3.4. Estrutura de um Programa em C 3.5. Constantes 3.6. Palavras reservadas 3.7. Tipos primitivos 3.8. Declaração de variáveis 3.9. Operadores 1.1.1. aritméticos 1.1.2. atribuição 1.1.3. relacionais 2
1.1.4. lógicos 3.10. Funções de entrada e saída formatada 3.10.1. printf 3.10.2. scanf 3.11. Estruturas de controle de fluxo 3.11.1. if, if else 3.11.2. while 3.11.3. do while 3.11.4. for 3.11.5. comando continue 3.11.6. comando break 3.11.7. switch case 3.12. Agregados homogênios (Vetores unidimensionais e multidimensionais) 3.12.1. caracterização 3.12.2. declaração 3.12.3. inicialização na declaração 3.12.4. indexação 3.13. Agregados heterogênios (registros) 3.13.1. caracterização 3.13.2. declaração 3.13.3. inicialização na declaração 3.13.4. seleção de campo 3.14. String 3.14.1. caracterização 3.14.2. declaração 3.14.3. inicialização 3.14.4. manipulação 3.14.5. funções para manipulação de strings 3.14.5.1. gets 3.14.5.2. puts 3.14.5.3. strcpy 3.14.5.4. strlen 3.14.5.5. strcat 3.14.5.6. strcpm 3.14.5.7. strstr 3.14.5.8. strchr 3.15. Funções 3.15.1. caracterização 3.15.2. forma geral 3.15.3. comando return 3.15.4. função main 3.15.5. tipo void 3.15.6. passagem de parâmetros 3.15.6.1. por valor 3.15.6.2. por endereço 3.15.7. escopo de nomes e tempo de vida de variáveis 3
3.15.7.1. locais 3.15.7.2. parâmetros formais 3.15.7.3. variáveis globais 3.15.8. protótipo de função 3.16. Tipos de dados definidos pelo usuário 3.16.1. definição de tipo 3.17. Ponteiros 3.17.1. ponteiros e agregados heterogênios 3.17.2. ponteiros e agregados homogênios 3.18. Alocação dinâmica de memória 3.18.1. Mapa de memória 3.18.2. Heap 3.18.3. malloc e free 3.19. Recursão 3.20. Arquivos 3.20.1. Arquivos texto 3.20.2. Arquivos binários 3.21. Projetos de sistemas em linguagem C 3.22. Definição de macros 3.23. Diretivas para compilação condicional 3.24. Arquivos de cabeçalho 3.25. Divisão do projeto em arquivos separados 3.26. Definição de bibliotecas de ligação estática 3.27. Compilação separada com o uso do programa make METODOLOGIA: A disciplina será trabalhada com aulas expositivas, onde serão fornecidos os componentes teóricos e será feita a prática de exercícios. RECURSOS MATERIAIS UTILIZADOS: Quadro branco, marcador, notebook, projetor multimídia e computadores disponíveis nos laboratórios da UNIVASF. AVALIAÇÃO: A avaliação será realizada mediante duas provas e um trabalho. A média do discente resultará da média aritmética das notas obtidas. BIBLIOGRAFIA BÁSICA: 1. SCHILDT, H. C Completo e Total. Pearson Education, 2006. 2. SEBESTA, R. W. Conceitos de Linguagens de Programação. 5ª ed. Bookman, 2006. BIBLIOGRAFIA COMPLEMENTAR: 1. KERNIGHAM, B. W.; RITCHIE, D. M. A Linguagem de Programação C ANSI. Elsevier, 1989. 2. VAREJÃO, F. Linguagens de Programação Java, C, C++ e outras. Elsevier, 2004. UNIVASF 4
3. MOKARZEL, F.; SOMA, N. Introdução à Ciência da Computação. Elsevier, 2008. Carimbo do DRCA: Emitido pelo DRCA em / / 5