Introdução à Programação (EC)

Introdução à Programação (EC)


oliveira(AT)inf.pucrs.br

Objetivos

O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de:

Ementa

Discussão sobre algoritmos como ferramentas para a descrição da solução de problemas e os fundamentos necessários para sua implementação, usando a linguagem de programação C. Exame das noções de variáveis e tipos em C. Estudo de programas sequenciais, comandos de entrada e saída e o processo de compilação de programas escritos em C. Construção de programas C iterativos e uso do conceito de subprograma (procedimentos e funções). Estudo de estruturas de dados através do tratamento de agregados homogêneos (e.g. vetores, matrizes) e heterogêneos (e.g. structs) e sua representação em C. Conceitos básicos de programação orientada a objetos na linguagem C++.

Programa

  1. O processo de solução de problemas via programação

    1. Organização e coleta dos dados.

    2. Formulação do problema e da solução.

    3. Decomposição da solução em etapas.

    4. Reconhecimento de padrões.

    5. Abstração.

    6. Projeto da solução.

    7. Realização da solução.

    8. Teste e correção da solução.

  2. Introdução à programação sequencial

    1. Características de uma linguagem imperativa: constantes, variáveis, comandos, decisões, laços e procedimentos implementados como subprogramas.

    2. Estrutura de programas simples.

    3. Sistemas operacionais e o processo de edição e execução de programas.

    4. Variáveis numéricas, operadores básicos e comandos de atribuição.

    5. Comandos de entrada e saída.

    6. Expressões aritméticas: operadores aritméticos e sua prioridade.

    7. Comandos condicionais: if e switch.

    8. Expressões lógicas e a sua relação com expressões aritméticas.

  3. Controle de fluxo

    1. Comando while.

    2. Comando for e comparação com while.

    3. Comando repeat.

    4. Rótulos, quebras de laços (comando break) e saltos (comando go to).

  4. Tipos e Agregados Homogêneos

    1. Classes de armazenamento e escopo de definições de tipos.

    2. Agregados homogêneos: conceito, declaração e uso.

    3. Vetores lineares: conceito, inicialização.

    4. Ponteiros: definição, relação com vetores, alocação dinâmica.

    5. Vetores: acesso a conteúdos e manipulação de valores.

    6. Matrizes como vetores multidimensionais.

  5. Modularização e hierarquização de código

    1. Introdução à modularização e hierarquização de código.

    2. Conceitos e vantagens de utilização da modularização.

    3. Declaração e criação de funções implementadas como subprogramas.

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

    5. Detalhamento de includes, headers e macros.

  6. Arquivos

    1. Tipos fundamentais de arquivos: texto e binário.

    2. Arquivos texto: abertura, fechamento e operações fscanf() e fprintf().

    3. Arquivos binários: abertura, fechamento e operações fread() e fwrite().

    4. Arquivos mistos.

  7. Agregados Heterogêneos

    1. Agregados Heterogêneos: conceito e uso.

    2. Declaração de structs.

    3. Uso e construção de tipos complexos.

    4. Agregados de agregados heterogêneos (i.e. vetores/matrizes de structs).

    5. Passagem de structs por valor e por referência.

    6. C++: structs como o início de classes para dar suporte a orientação a objetos:

      1. Construtores e destrutores;

      2. Operadores de entrada e saída;

      3. Operadores com sobrecarga.

Avaliação

G1 = ( P1 + P2 + P3 + 2 * MT) / 5

Materiais

  1. Uma lista de exercícios para programar está aqui.

  2. Exercícios e exemplos também estão aqui.

  3. Uma coleção de exercícios interessantes está aqui.

  4. Aprenda os truques do repl.it aqui.

  5. Alguns cursos gratuitos pra reforçar o seu C estão aqui.

  6. O imperdível vídeo do Binky que explica apontadores (pointers) está aqui.

Bibliografia

Livros texto

Livros complementares