Algoritmos e Programação com Exemplos em Pascal e C

Visualizações: 370
Classificação: (0)

Aprender programação não é uma tarefa simples. Requer um entendimento perfeito do problema, a análise de como solucioná-lo e a escolha da forma de implementação da solução. Algoritmos e programação com exemplos em Pascal e C apresenta o processo de construção de algoritmos e de programas, enfatizando as etapas de abstração, organização, análise e crítica na busca de soluções eficientes. Os elementos de um programa são introduzidos pouco a pouco ao longo do texto, inicialmente apresentados em pseudolinguagem e, em seguida, exemplificados nas linguagens de programação Pascal e C.

FORMATOS DISPONíVEIS

eBook

Disponível no modelo assinatura da Minha Biblioteca

16 capítulos

Formato Comprar item avulso Adicionar à Pasta

Introdução

PDF Criptografado

Introdução

1

introdução

Aprender programação não é uma tarefa simples. Requer um entendimento perfeito do problema a ser solucionado, a análise de como solucioná-lo e a escolha da forma de implementação da solução. Abstração, organização, análise e crítica são fundamentais.

Linguagens de programação utilizadas no livro

A escolha da linguagem a ser utilizada para um primeiro curso de programação é fundamental na formação do futuro programador.

O número de linguagens desenvolvidas nos últimos 30 anos é muito grande, desde linguagens como Fortran, Algol, Cobol, Ada, Smalltalk, até as mais recentes, como C++, C#, Java,

Ruby, Perl, Phyton. Devido à diversidade de linguagens atualmente utilizadas, foram necessárias algumas escolhas na elaboração deste livro.

Primeiramente foi feita a opção pelo paradigma de programação imperativo ou procedural

(apresentado na Seção 1.3), por ser muito utilizado em um grande número de cursos de graduação e por ter servido de base para o desenvolvimento dos demais paradigmas.

 

Capítulo 1 - Fundamentos

PDF Criptografado

capítulo

1

fundamentos

Este primeiro capítulo discute algoritmos, formas de expressar algoritmos, etapas para a construção de um algoritmo e de um programa, paradigmas de programação, programação estruturada e fundamentos de representação interna de dados.

Introduz, ainda, as linguagens de programação Pascal e C, utilizadas no livro.

■ ■

Edelweiss_01.indd 5

12/03/14 08:59

6

Algoritmos e Programação com Exemplos em Pascal e C

Computadores constituem uma poderosa ferramenta para auxiliar o trabalho do homem. O uso mais comum dos computadores é por meio de aplicativos já desenvolvidos e disponíveis, tais como editores de texto, planilhas eletrônicas, sistemas de gerenciamento de bancos de dados, programas de acesso à Internet e jogos. Entretanto, por vezes, as pessoas desenvolvem soluções específicas para determinadas aplicações, de modo a permitir que as informações dessas aplicações possam ser acessadas e manipuladas de forma mais segura, rápida e eficiente ou com um custo mais baixo. Este livro trata dessa segunda forma de uso dos computadores, ou seja, de como um usuário pode projetar e desenvolver soluções próprias para resolver problemas específicos de seu interesse.

 

Capítulo 2 - Unidades léxicas, variáveis, constantes e expressões

PDF Criptografado

capítulo

2

unidades léxicas, variáveis, constantes e expressões

Este capítulo apresenta as unidades léxicas de linguagens de programação imperativas, como Pascal e C.

Discute as declarações de variáveis, de constantes e de tipos, bem como a representação de expressões aritméticas e lógicas.

Neste capítulo, e nos que o sucedem, todos os conceitos são apresentados e analisados inicialmente em linguagem algorítmica, sendo a seguir comentados e exemplificados em

Pascal e C.

■ ■

Edelweiss_02.indd 25

12/03/14 08:59

26

Algoritmos e Programação com Exemplos em Pascal e C

Para que um algoritmo se transforme em um programa executável, é necessário que esse seja inicialmente traduzido para uma linguagem de programação pelo compilador correspondente, que irá gerar o programa a ser executado. Essa tradução é feita com base na gramática da linguagem. Nesse processo, cada símbolo, cada palavra e cada construção sintática utilizados no programa devem ser reconhecidos pelo compilador. Isso é possível porque toda linguagem de programação possui uma gramática bem definida que rege a escrita dos programas, ou seja, que define sua sintaxe.

 

Capítulo 3 - Algoritmos sequenciais

PDF Criptografado

capítulo

3

algoritmos sequenciais

Este capítulo trata da construção de algoritmos sequenciais.

São analisados os comandos de entrada de dados, de saída de dados e de atribuição. É apresentada a estrutura de um algoritmo completo, com cabeçalho, declarações, comandos e comentários, bem como sua tradução para as linguagens

Pascal e C.

■ ■

Edelweiss_03.indd 57

12/03/14 09:03

58

Algoritmos e Programação com Exemplos em Pascal e C

A partir deste capítulo, passarão a ser analisados problemas reais e serão mostrados algoritmos possíveis para solucioná-los via computador. A complexidade dos algoritmos aumentará gradativamente e, em cada capítulo, haverá a introdução de novos elementos, que ampliarão a gama de problemas passíveis de solução computacional.

No Capítulo 1 foi introduzido o conceito de algoritmo, tendo sido identificados alguns comandos básicos executados por um computador, como entrada e saída de dados e atribuição de um valor a uma variável. O Capítulo 2 tratou de variáveis e expressões, incluindo suas formas de representação.

 

Capítulo 4 - Estruturas condicionais e de seleção

PDF Criptografado

capítulo

4

estruturas condicionais e de seleção

Neste capítulo, são apresentados os comandos de seleção simples, dupla e múltipla. São analisadas, ainda, as possibilidades de aninhamento de comandos e o conceito de comando composto.

■ ■

Edelweiss_04.indd 89

12/03/14 09:03

90

Algoritmos e Programação com Exemplos em Pascal e C

Os algoritmos que solucionam os problemas apresentados até o momento são puramente sequenciais: todas as instruções são executadas na ordem em que foram definidas, uma após a outra, sem exceção. Este capítulo introduz uma nova classe de problemas, na qual uma ou mais ações podem ou não ser executadas, dependendo da avaliação prévia de condições. Para resolver esses problemas são apresentados três novos comandos que possibilitam a alteração do fluxo sequencial de execução de um programa.

No capítulo anterior, foi resolvido o problema do cálculo da média aritmética de três notas de um aluno em uma disciplina. Estendendo essa aplicação, o professor que utiliza esse programa quer que, além da média das notas obtidas na disciplina, seja informado se o aluno foi aprovado (no caso de sua média ser igual ou superior a 6). Essa informação não pode ser obtida somente com o conjunto de comandos do Capítulo 3, uma vez que requer a análise de uma condição e a execução de uma ação somente se a condição analisada for verdadeira.

 

Capítulo 5 - Estruturas de repetição

PDF Criptografado

capítulo

5

estruturas de repetição

Este capítulo apresenta comandos de repetição utilizados para implementar iterações de conjuntos de comandos.

Após a introdução dos conceitos de laço de repetição e de contador, são apresentados e discutidos os comandos de repetição por contagem, de repetição condicional por avaliação prévia de uma condição e de repetição condicional por avaliação posterior de uma condição.

■ ■

Edelweiss_05.indd 125

12/03/14 09:02

126

Algoritmos e Programação com Exemplos em Pascal e C

Nos algoritmos vistos nos capítulos anteriores, os comandos são executados em sequência, um após o outro, uma única vez ou até mesmo nenhuma vez, dependendo de uma condição especificada. Este capítulo introduz uma nova situação, bastante comum na programação: sequências de comandos que são executados repetidas vezes. O número de repetições pode ser conhecido a priori ou pode estar associado à ocorrência de uma condição que se verifique ao longo do processamento.

 

Capítulo 6 - Variáveis estruturadas: arranjos unidimensionais

PDF Criptografado

capítulo

6

variáveis estruturadas: arranjos unidimensionais

Este capítulo introduz um tipo de variável estruturada denominado arranjo, que agrupa dados do mesmo tipo.

Analisa os arranjos de uma dimensão, ou seja, unidimensionais, também denominados vetores.

Também discute como vetores devem ser declarados e manipulados, e apresenta alguns exemplos de algoritmos de classificação e de pesquisa de dados armazenados em vetores.

■ ■

Edelweiss_06.indd 163

12/03/14 09:02

164

Algoritmos e Programação com Exemplos em Pascal e C

Com as estruturas básicas de controle de fluxo já vistas, sequência, seleção e iteração, é possível resolver praticamente qualquer problema de forma algorítmica. Entretanto, os recursos de armazenamento até agora utilizados não são adequados para soluções que envolvam grandes volumes de dados.

Por exemplo, se um professor tem 30 alunos em uma turma e deseja calcular a média aritmética dessa turma, quantas variáveis ele necessita para ler as médias dos 30 alunos? Pode usar 30, mas uma só é suficiente. Isso porque, nesse problema, as médias dos alunos, após serem lidas e acumuladas em uma variável, não precisam mais ser guardadas. Uma única variável pode ser reaproveitada para ler todas as 30 médias. A cada nova média, ao ser utilizada a mesma variável para nova leitura, a média anterior é perdida, ou seja, “jogada no lixo”, sem que isso afete o resultado pretendido, pois o valor anterior já foi acumulado para calcular a média.

 

Capítulo 7 - Variáveis estruturadas: arranjos multidimensionais

PDF Criptografado

capítulo

7

variáveis estruturadas: arranjos multidimensionais

■ ■

Edelweiss_07.indd 195

Este capítulo apresenta e analisa arranjos de duas ou mais dimensões, também denominados matrizes.

Inicialmente, são vistos os conceitos relacionados a matrizes de duas dimensões, e em seguida os conceitos são estendidos para matrizes com um número qualquer de dimensões.

12/03/14 09:02

196

Algoritmos e Programação com Exemplos em Pascal e C

Seja o seguinte problema: ler as 5 notas de 7 alunos, identificados por um número entre 1 e

7, calcular a média de cada aluno e, após, imprimir as notas e médias dos alunos, ordenadas pela média, da maior para a menor. Quantas variáveis são necessárias para armazenar as notas e as médias nesse problema? São necessárias 35 variáveis simples ou 7 vetores (um por aluno), cada um com 6 elementos, sendo 5 para armazenar as notas e o último para a média (Figura 7.1). Outra opção é reunir em uma só estrutura os 7 vetores, ou seja, usar uma estrutura com 7 linhas e 6 colunas. Nesse caso, para acessar uma determinada nota ou média será preciso utilizar dois índices: um para linha, para especificar o aluno desejado, e outro para coluna, para especificar a nota ou média desejada (Figura 7.2). Uma estrutura assim, um arranjo de 2 dimensões, é chamada de matriz.

 

Capítulo 8 - Tipo definido por enumeração

PDF Criptografado

capítulo

8

tipo definido por enumeração

Este capítulo apresenta um tipo de dado escalar chamado de enumeração, no qual os valores possíveis são definidos pelo programador.

Além disso, discute as formas de declarar esse tipo de dado, bem como as formas de manipular variáveis definidas com esse tipo.

■ ■

Edelweiss_08.indd 221

12/03/14 09:02

222

Algoritmos e Programação com Exemplos em Pascal e C

Ao trabalhar com vetores e matrizes deve-se tomar muito cuidado ao referenciar um elemento a fim de não especificar as dimensões na ordem incorreta. O problema se torna mais crítico em matrizes de três ou mais dimensões. Por exemplo, na matriz da Figura 7.3, que armazena as 6 notas de 7 alunos que integram 2 turmas, as três dimensões correspondem, respectivamente, à turma, ao aluno e à nota, nessa ordem, conforme a declaração: notas (arranjo [1..2, 1..7, 1..6] de real)

O acesso a uma nota deve ser feito especificando primeiro qual a turma, depois qual o aluno e, finalmente, qual a nota. A referência a notas(1,2,3) corresponde à turma 1, ao segundo aluno e à terceira nota. Deve-se ter em mente a ordem das dimensões cada vez que um elemento for referenciado. É muito fácil (e comum) escrever, por exemplo, notas (3,2,1) pensando em terceira nota do segundo aluno da turma 1, o que daria acesso a outro elemento

 

Capítulo 9 - Subprogramas

PDF Criptografado

capítulo

9

subprogramas

Este capítulo discute o conceito de subprogramação, analisando dois tipos de subprogramas: procedimentos e funções.

São detalhadas a declaração e a chamada de um subprograma.

Diferentes tipos de parâmetros são analisados: formais e reais, de entrada e de saída, passados por valor ou por referência.

São apresentadas as diferenças entre variáveis locais e globais, o conceito de escopo de identificadores e o conceito de desenvolvimento de algoritmos por meio de refinamentos sucessivos.

■ ■

Edelweiss_09.indd 235

12/03/14 09:01

236

Algoritmos e Programação com Exemplos em Pascal e C

A arte de programar consiste na arte de organizar e dominar a complexidade dos sistemas.

— Dijkstra, 1972.

Um aspecto fundamental na programação estruturada é a decomposição de um algoritmo em módulos, usando a técnica denominada programação modular (Staa, 2000). O objetivo da programação modular é diminuir a complexidade dos programas, usando a estratégia de “dividir para conquistar”: dividir problemas complexos em problemas menores.

 

Capítulo 10 - Manipulação de strings

PDF Criptografado

capítulo

10

manipulação de strings

Neste capítulo, são apresentadas características específicas do tipo de dado string, seu comprimento e formas de manipular como uma variável simples ou como um arranjo, bem como algumas funções para serem utilizadas com strings.

É discutido como strings são definidas em

Pascal e C e algumas das funções mais comumente utilizadas para processá-las nessas linguagens.

■ ■

Edelweiss_10.indd 271

12/03/14 09:01

272

Algoritmos e Programação com Exemplos em Pascal e C

Strings ou cadeias de caracteres, como nomes de pessoas, de objetos ou textos, são utilizadas na quase totalidade dos problemas. Na pseudolinguagem, string é um tipo de dado simples. Em cada linguagem de programação, este tipo de dado tem uma implementação diferente, com uma ou mais funções para sua manipulação.

Neste capítulo, são apresentadas algumas características específicas desse tipo de dado e são apresentadas algumas funções para serem utilizadas com strings. Em seguida, é visto como strings são definidas em Pascal e C e algumas das funções mais comumente usadas para processá-las nessas linguagens.

 

Capítulo 11 - Registros

PDF Criptografado

capítulo

11

registros

Este capítulo introduz o tipo denominado registro, utilizado para agrupar dados heterogêneos. Apresenta, ainda, os conceitos de registro e de campo de um registro, e discute como fazer a declaração de um registro, bem como acessar e manipular seus campos.

■ ■

Edelweiss_11.indd 293

12/03/14 09:01

294

Algoritmos e Programação com Exemplos em Pascal e C

Em capítulos anteriores, foi analisada uma forma de agrupar dados por meio do tipo denominado arranjo. Este capítulo apresenta outro tipo utilizado para agrupar dados, denominado registro.

Retome o exemplo que levou à definição dos arranjos no Capítulo 6: um professor precisava armazenar as notas de todos os seus 30 alunos. Para armazenar todas as notas, foi definido um arranjo, no qual cada elemento era uma nota. Nos arranjos, todos os elementos são homogêneos, ou seja, têm o mesmo tipo, que no caso em discussão era o tipo real. Se o mesmo professor quiser armazenar, junto às notas de cada aluno, mais algumas informações, como o nome do aluno (uma string), seu número de faltas (um valor inteiro) e o conceito final (um caractere), essas informações não poderão ser armazenadas no arranjo das notas por serem de tipos diferentes do tipo do arranjo. Informações heterogêneas, entretanto, podem ser armazenadas em registros, o novo tipo de dado estruturado apresentado neste capítulo.

 

Capítulo 12 - Conjuntos

PDF Criptografado

capítulo

12 conjuntos

Este capítulo apresenta conjuntos, um tipo de dado estruturado que agrupa elementos do mesmo tipo, sem repetição ou ordem.

Discute como declarar variáveis com esse tipo de dado, como construir conjuntos e quais são as operações que podem ser realizadas sobre eles.

■ ■

Edelweiss_12.indd 315

12/03/14 09:00

316

Algoritmos e Programação com Exemplos em Pascal e C

Retomando o exemplo do professor utilizado na discussão inicial de arranjos e registros, suponha que o professor deseje, ao final do ano, analisar os resultados obtidos em suas turmas, separando os nomes de seus alunos em dois grupos, um de aprovados e o outro de reprovados. Os elementos desses grupos serão todos do mesmo tipo, como no caso dos arranjos, mas a ordem entre eles não será relevante e não poderá haver elementos repetidos internamente aos grupos. Essas características correspondem às propriedades dos conjuntos, exatamente o tipo de dado que será apresentado neste capítulo para permitir a definição de variáveis como conjuntos.

 

Capítulo 13 - Arquivos

PDF Criptografado

capítulo

13 arquivos

Este capítulo discute a criação e o uso de arquivos para garantir o armazenamento dos dados durante e após a execução dos programas.

São apresentados alguns tipos de arquivos e discutidos especialmente os arquivos de tipo texto e binário.

Ainda, são analisados a declaração, o controle e as formas de acesso a arquivos.

■ ■

Edelweiss_13.indd 335

12/03/14 13:19

336

Algoritmos e Programação com Exemplos em Pascal e C

Nos Capítulos 6 e 7, discutiu-se como trabalhar com grandes volumes de dados usando arranjos. Mas, se o volume de dados que tiver que ser processado for realmente elevado, utilizar arranjos para o seu armazenamento é um problema, pois esses são descartados ao serem encerrados os programas, perdendo-se os dados armazenados.

Suponha que, para resolver um determinado problema, seja necessário armazenar um número indeterminado de valores inteiros e que no mínimo três programas precisem processar esses valores. Se forem utilizados arranjos nos programas, os arranjos deverão ser declarados sempre com um tamanho suficiente para garantir que não faltará espaço para os dados durante o processamento, o que muito provavelmente resultará em arranjos com espaço ocioso. Além disso, a cada execução de um dos programas que usam os dados, esses deverão novamente ser fornecidos, o que muito provavelmente gerará erros. A solução mais indicada para essa situação é criar um arquivo com os dados a serem processados e fazer que todos os programas que deles necessitem utilizem esse arquivo. Essa estratégia é a mais indicada para qualquer tipo de dado, numérico ou não numérico, que necessite ser armazenado com garantia de persistência.

 

Capítulo 14 - Ponteiros e alocação dinâmica de memória

PDF Criptografado

capítulo

14

ponteiros e alocação dinâmica de memória

Este capítulo apresenta variáveis denominadas ponteiros ou apontadores, utilizadas para gerenciar a alocação dinâmica de memória.

Discute como deve ser feita a declaração de ponteiros, as operações que podem ser realizadas sobre eles e como podem ser manipuladas as variáveis por eles apontadas.

■ ■

Edelweiss_14.indd 395

12/03/14 09:00

396

Algoritmos e Programação com Exemplos em Pascal e C

Os capítulos anteriores apresentaram diversos tipos de variáveis, simples e compostas. Essas variáveis têm em comum sua forma de alocação: devem sempre ser declaradas no início dos programas, associando seus nomes aos tipos de dados que irão armazenar. O espaço que ocupam na memória é alocado pelo sistema antes do início da execução do programa e só é liberado ao seu final. Esse procedimento é, às vezes, denominado alocação estática de memória e as variáveis alocadas dessa forma são ditas variáveis estáticas.

 

Capítulo 15 - Recursividade

PDF Criptografado

capítulo

15

recursividade

Este capítulo introduz o conceito de recursividade, estendendo esse conceito para subprogramas recursivos.

Discute também a implementação de soluções de problemas utilizando a ativação de subprogramas de forma recursiva.

■ ■

Edelweiss_15.indd 417

12/03/14 09:00

418

Algoritmos e Programação com Exemplos em Pascal e C

Este capítulo discute a implementação de soluções para problemas utilizando a ativação de subprogramas de forma recursiva, ou seja, fazendo os subprogramas chamarem a si mesmos.

A utilização de recursividade é apropriada para o processamento com determinadas estruturas de dados.

15.1

conceito de recursividade

Um problema é dito recursivo se é definível em termos de si mesmo. Um exemplo disso é a definição dos números naturais:

o primeiro número natural é zero; o sucessor de um número natural é um número natural.

Diversas situações do nosso dia a dia podem ser definidas recursivamente. A seguir, são analisados dois casos muito comuns em que a recursividade é tratada naturalmente. ler um livro. Um livro normalmente é dividido em capítulos. A leitura de um livro consiste em ler o primeiro capítulo e, depois, repetir o processo para ler o restante do livro. O restante do livro tem a mesma estrutura do livro original, sem o capítulo lido, podendo ser também encarado como um livro. Se o livro tem 12 capítulos, o processo inicia com a leitura do capítulo 1, seguida da leitura do restante do livro, ou seja, dos 11 capítulos restantes. A leitura desses 11 capítulos, por sua vez, consiste em ler o primeiro (no caso, o capítulo 2) e seguir lendo os 10 capítulos restantes. O processo recursivo se repete até que seja lido o

 

Detalhes do Produto

Livro Impresso
Book
Capítulos

Formato
PDF
Criptografado
Sim
SKU
BPP0000265482
ISBN
9788582601907
Tamanho do arquivo
14 MB
Impressão
Desabilitada
Cópia
Desabilitada
Vocalização de texto
Não
Formato
PDF
Criptografado
Sim
Impressão
Desabilitada
Cópia
Desabilitada
Vocalização de texto
Não
SKU
Em metadados
ISBN
Em metadados
Tamanho do arquivo
Em metadados