Índice


1 - Computadores e Programação

1.1 Introdução...........................................................................................................................................1

1.2 Computador, a grande revolução do século XX....................................................................................2

1.3 O que é um computador?.....................................................................................................................3

1.4 Qual é a utilidade de um computador?...................................................................................................4

1.5 Classe de problemas que o computador resolve....................................................................................5

1.6 Organização interna de um computador.................................................................................................6

1.7 O que é o sistema operativo?................................................................................................................10

1.8 Linguagens de programação..................................................................................................................11

    1.8.1 Linguagem máquina........................................................................................................................12

    1.8.2 Linguagens de baixo nível...............................................................................................................12

    1.8.3 Linguagens de alto nível..................................................................................................................13

    1.8.4 Que linguagem se deve usar para ensinar programação?..................................................................17

1.9 Paradigmas de programação..................................................................................................................18

1.10 Fases do desenvolvimento de uma aplicação........................................................................................24

    1.10.1 Análise do problema.....................................................................................................................24

    1.10.2 Implementação da aplicação.........................................................................................................28

1.11 Princípios a ter em conta no desenvolvimento de software de qualidade...............................................31

1.12 O sistema operativo UNIX..................................................................................................................33

    1.12.1 Identificação dos utilizadores.........................................................................................................34

    1.12.2 Organização da memória de massa................................................................................................35

    1.12.3 O interpretador de comandos (shell).............................................................................................36

    1.12.4 Os comandos mais usuais do UNIX..............................................................................................37

    1.12.5 Redireccionamento de entrada/saída de comandos.........................................................................41

    1.12.6 Compilação de ficheiros em linguagem C.......................................................................................42

    1.12.7 Execução de programas................................................................................................................44

Leituras Recomendadas...............................................................................................................................46

 

2 - Algoritmos

2.1 Introdução.............................................................................................................................................49

2.2 Especificação do problema.....................................................................................................................50

2.3 Algoritmos e suas características.............................................................................................................51

2.4 Decomposição hierárquica da solução....................................................................................................52

2.5 Regras gramaticais do pseudocódigo......................................................................................................54

2.6 Modelos de algoritmos...........................................................................................................................64

    2.6.1 Modelo básico................................................................................................................................64

    2.6.2 Modelo básico modificado à entrada...............................................................................................64

    2.6.3 Modelo básico modificado à saída..................................................................................................75

2.7 O problema dos alumínios......................................................................................................................86

Exercícios....................................................................................................................................................95

Leituras Recomendadas..............................................................................................................................100

 

3 - Representação da Informação

3.1 Introdução............................................................................................................................................101

3.2 Sistemas de numeração.........................................................................................................................102

    3.2.1 O sistema de numeração decimal....................................................................................................102

    3.2.2 O sistema de numeração binário.....................................................................................................103

    3.2.3 Os sistemas de numeração octal e hexadecimal...............................................................................104

    3.2.4 Conversão decimal para binário......................................................................................................105

3.3 Representação de quantidades inteiras...................................................................................................106

    3.3.1 Representação em sinal e módulo...................................................................................................106

    3.3.2 Representação em complemento para um.......................................................................................107

    3.3.3 Representação em complemento para dois.....................................................................................109

3.4 Aritmética inteira...................................................................................................................................111

3.5 Representação de quantidades reais......................................................................................................114

3.6 Aritmética real......................................................................................................................................119

3.7 Representação de símbolos..................................................................................................................123

3.8 Big Endien versus Little Endien.........................................................................................................124

Exercícios..................................................................................................................................................125

Leituras Recomendadas..............................................................................................................................126

 

4 - Introdução à Linguagem C

4.1 Introdução...........................................................................................................................................127

4.2 A estrutura de um programa em C........................................................................................................128

4.3 Elementos básicos da linguagem C........................................................................................................131

4.4 Representação da informação...............................................................................................................134

4.5 Tipos de dados predefinidos.................................................................................................................135

4.6 Tipos de dados aritméticos...................................................................................................................135

    4.6.1 Tipos de dados inteiros..................................................................................................................136

    4.6.2 Tipos de dados reais......................................................................................................................137

    4.6.3 Tipo de dados carácter..................................................................................................................138

4.7 Constantes e variáveis...........................................................................................................................139

4.8 Sequenciação........................................................................................................................................142

    4.8.1 Expressões.....................................................................................................................................143

    4.8.2 Operadores....................................................................................................................................147

    4.8.3 Instruções de atribuição..................................................................................................................151

4.9 Exemplo de um programa......................................................................................................................155

4.10 Tipo de dados enumerado...................................................................................................................157

4.11 Tipo de dados void.............................................................................................................................159

4.12 Tipo de dados ponteiro.......................................................................................................................160

4.13 Bibliotecas de execução ANSI............................................................................................................164

    4.13.1 Biblioteca ctype............................................................................................................................165

    4.13.2 Biblioteca math.............................................................................................................................166

    4.13.3 Biblioteca errno............................................................................................................................169

    4.13.4 Biblioteca stdlib............................................................................................................................170

Exercícios....................................................................................................................................................173

Leituras Recomendadas...............................................................................................................................174

 

5 - Estruturas de Controlo

5.1 Introdução.............................................................................................................................................175

5.2 Instruções decisórias..............................................................................................................................175

    5.2.1 A instrução decisória binária if........................................................................................................176

    5.2.2 A instrução decisória múltipla switch..............................................................................................179

    5.2.3 Comparação das instruções decisórias............................................................................................180

5.3 Instruções repetitivas.............................................................................................................................181

    5.3.1 As instruções repetitivas do while e while.......................................................................................181

    5.3.2 A instrução repetitiva for................................................................................................................184

    5.3.3 Ciclos repetitivos imbricados..........................................................................................................186

    5.3.4 Ciclos repetitivos infinitos...............................................................................................................187

    5.3.5 A instrução nula.............................................................................................................................188

    5.3.6 As instruções de salto break e continue........................................................................................188

5.4 Exemplos..............................................................................................................................................190

Exercícios...................................................................................................................................................193

Leituras Recomendadas..............................................................................................................................197

 

6 - Entrada e Saída de Dados Formatadas

6.1 Introdução............................................................................................................................................199

6.2 Interacção entre a aplicação e o utilizador..............................................................................................201

6.3 Entrada de dados..................................................................................................................................202

    6.3.1 Leitura de caracteres......................................................................................................................204

    6.3.2 Leitura de valores numéricos...........................................................................................................206

    6.3.3 Leitura de valores enumerados........................................................................................................209

    6.3.4 O especificador de conversão %n...................................................................................................210

6.4 Saída de dados......................................................................................................................................210

    6.4.1 Escrita de caracteres.......................................................................................................................213

    6.4.2 Escrita de valores numéricos...........................................................................................................214

    6.4.3 Escrita de valores enumerados........................................................................................................216

    6.4.4 Escrita de ponteiros........................................................................................................................216

    6.4.5 O especificador de conversão %n...................................................................................................216

Exercícios....................................................................................................................................................217

Leituras Recomendadas...............................................................................................................................218

 

7 - Programação Procedimental

7.1 Introdução.............................................................................................................................................219

7.2 Subprogramas........................................................................................................................................221

7.3 Funções da linguagem C.........................................................................................................................222

    7.3.1 Definição de uma função..................................................................................................................223

    7.3.2 Alusão de uma função......................................................................................................................224

    7.3.3 Invocação de uma função................................................................................................................225

    7.3.4 Uso indevido de funções..................................................................................................................226

    7.3.5 Procedimentos na linguagem C.........................................................................................................226

    7.3.6 Parâmetros formais..........................................................................................................................227

    7.3.7 Exemplos simples.............................................................................................................................229

7.4 Exemplos avançados...............................................................................................................................233

7.5 Organização de um programa em subprogramas......................................................................................244

7.6 Classes de armazenamento......................................................................................................................245

7.7 Visibilidade dos objectos.........................................................................................................................247

7.8 Subprogramas recursivos.........................................................................................................................250

7.9 Ponteiros para funções.............................................................................................................................251

7.10 Manipulação da memória pilha...............................................................................................................251

Exercícios......................................................................................................................................................256

Leituras Recomendadas.................................................................................................................................259

 

8 - Sequências e Ponteiros

8.1 Introdução...............................................................................................................................................261

8.2 Características das sequências..................................................................................................................262

    8.2.1 Declaração de uma sequência............................................................................................................262

    8.2.2 Inicialização de uma sequência...........................................................................................................264

    8.2.3 Sequências como parâmetros de subprogramas..................................................................................264

    8.2.4 Exemplo............................................................................................................................................266

8.3 Exemplos mais complexos.........................................................................................................................269

8.4 Ponteiros..................................................................................................................................................284

    8.4.1 Dualidade ponteiro sequência.............................................................................................................284

    8.4.2 Aritmética de ponteiros......................................................................................................................285

    8.4.3 Acesso indexado versus acesso por ponteiro......................................................................................286

    8.4.4 Sequências de ponteiros e ponteiros para sequências..........................................................................287

    8.4.5 Sequências de ponteiros para funções................................................................................................288

8.5 Sequências bidimensionais........................................................................................................................289

    8.5.1 Exemplo de processamento de matrizes.............................................................................................293

    8.5.2 Dualidade ponteiro sequência............................................................................................................300

8.6 Sequências tridimensionais........................................................................................................................301

8.7 Considerações finais sobre sequências......................................................................................................304

Exercícios......................................................................................................................................................306

Leituras Recomendadas.................................................................................................................................310

 

9 - Sequências de Caracteres

9.1 Introdução...............................................................................................................................................311

9.2 Características das sequências de caracteres............................................................................................312

    9.2.1 Declaração e inicialização de sequências de caracteres......................................................................312

    9.2.2 Atribuição de sequências de caracteres.............................................................................................314

    9.2.3 Sequências de caracteres versus caracteres.......................................................................................315

    9.2.4 Leitura de sequências de caracteres...................................................................................................315

    9.2.5 Escrita de sequências de caracteres...................................................................................................318

    9.2.6 Sequências de caracteres como parâmetros de subprogramas............................................................319

    9.2.7 Considerações finais sobre sequências de caracteres..........................................................................320

9.3 Exemplos.................................................................................................................................................320

9.4 Biblioteca string........................................................................................................................................327

9.5 Exemplo avançado...................................................................................................................................333

9.6 Conversão de sequências de caracteres....................................................................................................334

9.7 Sequências de sequências de caracteres...................................................................................................336

Exercícios......................................................................................................................................................340

Leituras Recomendadas.................................................................................................................................344

 

10 - Estruturas

10.1 Introdução.............................................................................................................................................345

10.2 Características das estruturas.................................................................................................................346

    10.2.1 Declaração de estruturas.................................................................................................................346

    10.2.2 Inicialização de estruturas................................................................................................................348

    10.2.3 Acesso aos campos das estruturas..................................................................................................349

    10.2.4 Atribuição de estruturas..................................................................................................................350

    10.2.5 Leitura e escrita de estruturas..........................................................................................................350

    10.2.6 Estruturas como parâmetros de subprogramas................................................................................352

    10.2.7 Estruturas como resultado de saída de funções...............................................................................353

    10.2.8 Campos de estruturas de tipo sequência.........................................................................................354

    10.2.9 Estruturas hierárquicas...................................................................................................................354

    10.2.10 Estruturas ligadas.........................................................................................................................355

10.3 Exemplo...............................................................................................................................................356

10.4 Uniões..................................................................................................................................................361

10.5 Sequências de estruturas.......................................................................................................................361

10.6 Exemplo da construção de uma base de dados......................................................................................362

10.7 Exemplos de definição de estruturas de dados.......................................................................................368

Exercícios.....................................................................................................................................................370

Leituras Recomendadas................................................................................................................................374

 

11 - Ficheiros

11.1 Introdução............................................................................................................................................375

11.2 Fluxos de comunicação.........................................................................................................................376

11.3 Abertura de um fluxo de comunicação...................................................................................................377

11.4 Fecho de um fluxo de comunicação.......................................................................................................380

11.5 Fluxos de texto.....................................................................................................................................381

    11.5.1 Leitura de um fluxo de texto...........................................................................................................381

    11.5.2 Escrita num fluxo de texto..............................................................................................................384

    11.5.3 Leitura e escrita de linhas de texto..................................................................................................385

    11.5.4 Considerações sobre os fluxos de texto standard..........................................................................386

11.6 Passagem de argumentos na linha de comando......................................................................................387

11.7 Exemplos.............................................................................................................................................388

    11.7.1 Exemplos simples de utilização de ficheiros de texto.......................................................................388

    11.7.2 Gestão de uma base de dados com ficheiros de texto.....................................................................395

11.8 Fluxos binários.....................................................................................................................................399

    11.8.1 Leitura e escrita de fluxos binários..................................................................................................399

    11.8.2 Gestão de uma base de dados com ficheiros binários.....................................................................400

11.9 Funções para colocação do indicador de posição.................................................................................401

11.10 Esvaziamento do armazenamento tampão...........................................................................................403

11.11 Exemplo da manutenção de uma base de dados.................................................................................403

11.12 Funções para operar sobre ficheiros...................................................................................................418

Exercícios....................................................................................................................................................418

Leituras Recomendadas...............................................................................................................................422

 

12 - Introdução à Pesquisa e Ordenação

12.1 Introdução...........................................................................................................................................423

12.2 Complexidade algorítmica....................................................................................................................424

12.3 Pesquisa..............................................................................................................................................426

    12.3.1 Pesquisa sequencial......................................................................................................................428

            12.3.1.1 Pesquisa sequencial............................................................................................................428

            12.3.1.2 Pesquisa do maior valor de uma sequência..........................................................................429

            12.3.1.3 Pesquisa do menor valor de uma sequência.........................................................................430

            12.3.1.4 Pesquisa do primeiro valor que serve..................................................................................430

            12.3.1.5 Pesquisa do melhor valor que serve....................................................................................431

            12.3.1.6 Pesquisa do pior valor que serve.........................................................................................431

            12.3.1.7 Exemplificação dos algoritmos de pesquisa sequencial.........................................................432

    12.3.2 Pesquisa binária............................................................................................................................433

    12.3.3 Comparação entre as pesquisas sequencial e binária......................................................................435

12.4 Ordenação..........................................................................................................................................436

    12.4.1 Ordenação por selecção...............................................................................................................437

    12.4.2 Ordenação por troca....................................................................................................................439

    12.4.3 Ordenação por inserção...............................................................................................................442

    12.4.4 Comparação dos algoritmos de ordenação...................................................................................444

12.5 Ordenação por fusão..........................................................................................................................445

Exercícios...................................................................................................................................................447

Leituras Recomendadas..............................................................................................................................450

 

Índice Remissivo


Voltar