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


oliveira(AT)inf.pucrs.br

Consulte o cronograma

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 = (2.5 P1 + 3 P2 + 3.5 P3 + E) / 10

Materiais

Materiais da disciplina:
  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.

Livros texto

Livros complementares