Sobre o livro
Esta obra tem como principal objectivo fornecer competências sólidas no desenvolvimento de programas de pequena e média complexidade. Assim, introduz-se uma metodologia que procura atingir a descrição final da solução de problemas, por refinamentos sucessivos, através da aplicação da decomposição hierárquica das soluções. Outro objectivo principal consiste na aprendizagem da linguagem de programação C na sua norma ANSI. Nesse sentido são estudados aspectos relacionados com a portabilidade, robustez, reutilização, legibilidade e eficiência das soluções.
Especificamente, pretende-se atingir os seguintes objectivos:Público Alvo
Este livro é dirigido aos estudantes de disciplinas de iniciação à programação, que frequentam licenciaturas que exijam conceitos sólidos de programação e de um conhecimento profundo da linguagem C, assim como a todos aqueles que queiram dominar esta linguagem de programação.
ÍNDICE
1 - Computadores e Programação
1.1 Introdução
1.2 Computador, a grande revolução do século XX
1.3 O que é um computador?
1.4 Qual é a utilidade de um computador?
1.5 Classe de problemas que o computador resolve
1.6 Organização interna de um computador
1.7 O que é o sistema operativo?
1.8 Linguagens de programação
1.8.1 Linguagem máquina
1.8.2 Linguagens de baixo nível
1.8.3 Linguagens de alto nível
1.8.4 Que linguagem se deve usar para ensinar programação?
1.9 Paradigmas de programação
1.10 Fases do desenvolvimento de uma aplicação
1.10.1 Análise do problema
1.10.2 Implementação da aplicação
1.11 Princípios a ter em conta no desenvolvimento de software de qualidade
1.12 O sistema operativo UNIX
1.12.1 Identificação dos utilizadores
1.12.2 Organização da memória de massa
1.12.3 O interpretador de comandos (shell)
1.12.4 Os comandos mais usuais do UNIX
1.12.5 Redireccionamento de entrada/saída de comandos
1.12.6 Compilação de ficheiros em linguagem C
1.12.7 Execução de programas
Leituras Recomendadas
2 - Algoritmos
2.1 Introdução
2.2 Especificação do problema
2.3 Algoritmos e suas características
2.4 Decomposição hierárquica da solução
2.5 Regras gramaticais do pseudocódigo
2.6 Modelos de algoritmos
2.6.1 Modelo básico
2.6.2 Modelo básico modificado à entrada
2.6.3 Modelo básico modificado à saída
2.7 O problema dos alumínios
Exercícios
Leituras Recomendadas
3 - Representação da Informação
3.1 Introdução
3.2 Sistemas de numeração
3.2.1 O sistema de numeração decimal
3.2.2 O sistema de numeração binário
3.2.3 Os sistemas de numeração octal e hexadecimal
3.2.4 Conversão decimal para binário
3.3 Representação de quantidades inteiras
3.3.1 Representação em sinal e módulo
3.3.2 Representação em complemento para um
3.3.3 Representação em complemento para dois
3.4 Aritmética inteira
3.5 Representação de quantidades reais
3.6 Aritmética real
3.7 Representação de símbolos
3.8 Big Endien versus Little Endien
Exercícios
Leituras Recomendadas
4 - Introdução à Linguagem C
4.1 Introdução
4.2 A estrutura de um programa em C
4.3 Elementos básicos da linguagem C
4.4 Representação da informação
4.5 Tipos de dados predefinidos
4.6 Tipos de dados aritméticos
4.6.1 Tipos de dados inteiros
4.6.2 Tipos de dados reais
4.6.3 Tipo de dados carácter
4.7 Constantes e variáveis
4.8 Sequenciação
4.8.1 Expressões
4.8.2 Operadores
4.8.3 Instruções de atribuição
4.9 Exemplo de um programa
4.10 Tipo de dados enumerado
4.11 Tipo de dados void
4.12 Tipo de dados ponteiro
4.13 Bibliotecas de execução ANSI
4.13.1 Biblioteca ctype
4.13.2 Biblioteca math
4.13.3 Biblioteca errno
4.13.4 Biblioteca stdlib
Exercícios
Leituras Recomendadas
5 - Estruturas de Controlo
5.1 Introdução
5.2 Instruções decisórias
5.2.1 A instrução decisória binária if
5.2.2 A instrução decisória múltipla switch
5.2.3 Comparação das instruções decisórias
5.3 Instruções repetitivas
5.3.1 As instruções repetitivas do while e while
5.3.2 A instrução repetitiva for
5.3.3 Ciclos repetitivos imbricados
5.3.4 Ciclos repetitivos infinitos
5.3.5 A instrução nula
5.3.6 As instruções de salto break e continue
5.4 Exemplos
Exercícios
Leituras Recomendadas
6 - Entrada e Saída de Dados Formatadas
6.1 Introdução
6.2 Interacção entre a aplicação e o utilizador
6.3 Entrada de dados
6.3.1 Leitura de caracteres
6.3.2 Leitura de valores numéricos
6.3.3 Leitura de valores enumerados
6.3.4 O especificador de conversão %n
6.4 Saída de dados
6.4.1 Escrita de caracteres
6.4.2 Escrita de valores numéricos
6.4.3 Escrita de valores enumerados
6.4.4 Escrita de ponteiros
6.4.5 O especificador de conversão %n
Exercícios
Leituras Recomendadas
7 - Programação Procedimental
7.1 Introdução
7.2 Subprogramas
7.3 Funções da linguagem C
7.3.1 Definição de uma função
7.3.2 Alusão de uma função
7.3.3 Invocação de uma função
7.3.4 Uso indevido de funções
7.3.5 Procedimentos na linguagem C
7.3.6 Parâmetros formais
7.3.7 Exemplos simples
7.4 Exemplos avançados
7.5 Organização de um programa em subprogramas
7.6 Classes de armazenamento
7.7 Visibilidade dos objectos
7.8 Subprogramas recursivos
7.9 Ponteiros para funções
7.10 Manipulação da memória pilha
Exercícios
Leituras Recomendadas
8 - Sequências e Ponteiros
8.1 Introdução
8.2 Características das sequências
8.2.1 Declaração de uma sequência
8.2.2 Inicialização de uma sequência
8.2.3 Sequências como parâmetros de subprogramas
8.2.4 Exemplo
8.3 Exemplos mais complexos
8.4 Ponteiros
8.4.1 Dualidade ponteiro sequência
8.4.2 Aritmética de ponteiros
8.4.3 Acesso indexado versus acesso por ponteiro
8.4.4 Sequências de ponteiros e ponteiros para sequências
8.4.5 Sequências de ponteiros para funções
8.5 Sequências bidimensionais
8.5.1 Exemplo de processamento de matrizes
8.5.2 Dualidade ponteiro sequência
8.6 Sequências tridimensionais
8.7 Considerações finais sobre sequências
Exercícios
Leituras Recomendadas
9 - Sequências de Caracteres
9.1 Introdução
9.2 Características das sequências de caracteres
9.2.1 Declaração e inicialização de sequências de caracteres
9.2.2 Atribuição de sequências de caracteres
9.2.3 Sequências de caracteres versus caracteres
9.2.4 Leitura de sequências de caracteres
9.2.5 Escrita de sequências de caracteres
9.2.6 Sequências de caracteres como parâmetros de subprogramas
9.2.7 Considerações finais sobre sequências de caracteres
9.3 Exemplos
9.4 Biblioteca string
9.5 Exemplo avançado
9.6 Conversão de sequências de caracteres
9.7 Sequências de sequências de caracteres
Exercícios
Leituras Recomendadas
10 - Estruturas
10.1 Introdução
10.2 Características das estruturas
10.2.1 Declaração de estruturas
10.2.2 Inicialização de estruturas
10.2.3 Acesso aos campos das estruturas
10.2.4 Atribuição de estruturas
10.2.5 Leitura e escrita de estruturas
10.2.6 Estruturas como parâmetros de subprogramas
10.2.7 Estruturas como resultado de saída de funções
10.2.8 Campos de estruturas de tipo sequência
10.2.9 Estruturas hierárquicas
10.2.10 Estruturas ligadas
10.3 Exemplo
10.4 Uniões
10.5 Sequências de estruturas
10.6 Exemplo da construção de uma base de dados
10.7 Exemplos de definição de estruturas de dados
Exercícios
Leituras Recomendadas
11 - Ficheiros
11.1 Introdução
11.2 Fluxos de comunicação
11.3 Abertura de um fluxo de comunicação
11.4 Fecho de um fluxo de comunicação
11.5 Fluxos de texto
11.5.1 Leitura de um fluxo de texto
11.5.2 Escrita num fluxo de texto
11.5.3 Leitura e escrita de linhas de texto
11.5.4 Considerações sobre os fluxos de texto standard
11.6 Passagem de argumentos na linha de comando
11.7 Exemplos
11.7.1 Exemplos simples de utilização de ficheiros de texto
11.7.2 Gestão de uma base de dados com ficheiros de texto
11.8 Fluxos binários
11.8.1 Leitura e escrita de fluxos binários
11.8.2 Gestão de uma base de dados com ficheiros binários
11.9 Funções para colocação do indicador de posição
11.10 Esvaziamento do armazenamento tampão
11.11 Exemplo da manutenção de uma base de dados
11.12 Funções para operar sobre ficheiros
Exercícios
Leituras Recomendadas
12 - Introdução à Pesquisa e Ordenação
12.1 Introdução
12.2 Complexidade algorítmica
12.3 Pesquisa
12.3.1 Pesquisa sequencial
12.3.2 Pesquisa binária
12.3.3 Comparação entre as pesquisas sequencial e binária
12.4 Ordenação
12.4.1 Ordenação por selecção
12.4.2 Ordenação por troca
12.4.3 Ordenação por inserção
12.4.4 Comparação dos algoritmos de ordenação
12.5 Ordenação por fusão
Exercícios
Leituras Recomendadas
Índice Remissivo