(Parte 1 de 10)

Bacharelado em Sistemas de Informação

Algoritmos Prof. Ms. Antonio Marcos SELMINI

Apostila de

Algoritmos / Linguagem C 2008

Algoritmos / Linguagem C – Prof. Ms. Antonio Marcos SELMINI 2

Prefácio

Este material é o resultado das notas de aulas das disciplinas Algoritmos e Estruturas de Dados.

O principal objetivo deste material é auxiliar os alunos na disciplina de Algoritmos ministrada na Faculdade de Informática e Administração Paulista (FIAP). Vale destacar também que este material não substitui em hipótese alguma os livros indicados como bibliografia básica, pois deverão ser consultados para uma melhor formação profissional.

Prof. Ms. Antonio Marcos Selmini

Algoritmos / Linguagem C – Prof. Ms. Antonio Marcos SELMINI 3

Capítulo 1 - Introdução à Microinformática6
1.1 Introdução6
1.2 Precursores do Computador6
1.3 Gerações dos Computadores7
Capítulo 2 - Programação de Computadores9
2.1 Introdução9
2.2 Lógica de Programação9
2.3 Algoritmos10
2.4 Representação de Algoritmos1
2.5 Linguagens de Programação14
2.6 Variáveis15
2.7 Tipos de Dados16
2.8 Declaração de Variáveis17
2.9 Operadores18
2.10 Comandos de Entrada e Saída de Dados21
2.1 Exemplos de Algoritmos21
2.12 Exercícios em Classe2
2.13 Exercícios Complementares25
Capítulo 3 - Estruturas de Seleção27
3.1 Introdução27
3.2 Estrutura de Seleção Simples27
3.3 Estrutura de Seleção Composta28
3.4 Estrutura de Seleção Agrupada30
3.5 Exercícios em Classe31
3.6 Exercícios Complementares32
Capítulo 4 - Estruturas de Repetição35
4.1 Introdução35
4.2 Estrutura de Repetição Enquanto35
4.3 Estrutura de Repetição Faça-Enquanto37
4.4 Estrutura de Repetição Para38

Algoritmos / Linguagem C – Prof. Ms. Antonio Marcos SELMINI 4

4.6 Exercícios Complementares42
Capítulo 5 - Introdução a Linguagem C4
5.1 Introdução4
5.2 Mapa de Memória em C45
5.3 Tipos de Dados em C45
5.4 Inicialização de Variáveis46
5.5 Operadores em C46
5.6 Comandos de entrada e saída de dados46
5.7 Estrutura de um programa em C47
5.8 Estrutura de Seleção47
5.8.1 Comando de Seleção if47
5.8.2 Comando de Seleção switch51
5.9 Estruturas de repetição51
5.9.1 Comando while51
5.9.2 Comando do - while53
5.9.3 Comando for54
Capítulo 6 - Arrays Unidimensionais (Vetores)56
6.1 Introdução56
6.2 Arrays unidimensionais56
6.3 Acessando elementos de um array unidimensional57
6.4 Inicialização de arrays58
6.5 Exemplos de manipulação de arrays58
6.6 Exercícios em Classe58
6.7 Exercícios Complementares60
Capítulo 7 - Manipulação de Strings e Caracteres61
7.1 Introdução61
7.2 Funções para manipulação de strings62
7.3 Exercícios em Classe64
7.4 Exercícios Complementares6
Capítulo 8 - Arrays Bidimensionais (Matrizes)67
8.1 Introdução67
8.2 Declarando um array bidimensional67
8.3 Exercícios em Classe69

Algoritmos / Linguagem C – Prof. Ms. Antonio Marcos SELMINI 5

Capítulo 9 - Introdução aos Ponteiros73
9.1 Definição73
9.2 Declaração de ponteiros73
9.3 Operadores de ponteiros (& e *)74
9.4 Cuidados com ponteiros75
9.5 Exercícios em Classe76
Capítulo 10 - Funções7
10.1 Introdução7
10.2 Protótipos de funções78
10.3 Passagem de Parâmetros80
10.4 Passagem de arrays para funções81
10.5 Escopo de variáveis82
10.6 Exercícios em Classe82
Capítulo 1 - Estruturas87
1.1 Definição e declaração de estruturas em C87
1.2 Matrizes de estruturas89
1.3 Passando elementos de estruturas como parâmetros para funções89
1.4 Passando estruturas inteiras para funções90
1.5 Ponteiros para estruturas91
1.6 Comando typedef91
1.7 Exercícios em Classe92
1.8 Exercícios Complementares93
Capítulo 12 - Manipulação de arquivos em C95
12.1 Introdução95
12.2 Streams95
12.3 Abrindo um arquivo96
12.4 Fechando um arquivo97
12.5 Escrevendo e lendo caracteres em um arquivo97
12.6 Escrevendo e lendo strings em um arquivo98
12.7 Funções fread() e fwrite()9
12.8 Exercícios100

Algoritmos / Linguagem C – Prof. Ms. Antonio Marcos SELMINI 6

Capítulo 1

Introdução à Microinformática

1.1 Introdução

A cada dia presenciamos em jornais, revistas, na televisão o surgimento de novas invenções. Mas de todos esses inventos, talvez o maior e mais sensacional tenha sido o computador. O ano inicial da construção do primeiro computador é 1946, mas sabe-se que suas bases foram estabelecidas ao longo de dois séculos. O computador que conhecemos hoje, com suas funcionalidades é muito recente tendo quase 60 anos. Desses quase 60 anos sua divulgação e aquisição por parte da população tem pouco mais de 20 anos.

O ENIAC (primeiro computador) foi construído nos Estados Unidos e tinha o tamanho aproximado de um caminhão. Funcionava por poucas horas. Era construído com muitas válvulas e consumia energia suficiente para abastecer centenas de casas. Era um computador muito complicado de operá-lo e só os seus projetistas o conseguiam fazer.

Os principais fatores responsáveis pela divulgação e aquisição dos computadores são:

Redução da dimensão física; Aumento da confiabilidade; Aumento da capacidade de processamento; Redução de custo para aquisição e manutenção; Ampliação da gama de utilidades e aplicações;

Uma pergunta que surge com freqüência em programas de televisão (programas educativos de perguntas e respostas) ou até mesmo entre os alunos é quem inventou o computador. Essa é uma pergunta difícil de responder porque não existe apenas um criador. O computador foi resultado de uma série de equipamentos e ou máquinas que foram sendo desenvolvidos por diversos personagens marcantes da história.

1.2 Precursores do Computador

Como mencionado na seção anterior dizer o inventor do computador é algo praticamente impossível. Diferente de outras invenções, o computador não “nasceu da noite para o dia”, mas foi o resultado do aperfeiçoamento de várias máquinas que foram surgindo em diferentes épocas.

O surgimento dessa poderosa máquina é apenas um reflexo da evolução do homem e também uma conquista pela busca por processos de automatização e substituição do trabalho humano.

Um dos primeiros dispositivos de calcular que se tem conhecimento é o ábaco. O ábaco do grego significa “tábua de calcular”. É considerado um dos primeiros precursores das máquinas de somar sendo um dispositivo auxiliar para o usuário que faz cálculos mentais.

Algoritmos / Linguagem C – Prof. Ms. Antonio Marcos SELMINI 7

Um personagem muito importante para o desenvolvimento dos computadores atuais é Blaise Pascal. Esse matemático francês foi responsável pela criação de uma máquina de somar, a partir da qual foram criados diversos modelos. A máquina criada por Pascal foi chamada de Pascalina e na época foi considerada a perfeição em máquinas de calcular. Vale destacar que antes da Pascalina outros cientistas criaram outras máquinas mas que não tiveram desempenho tão bom quanto a Pascalina.

Outro matemático de grande importância foi Charles Babbage. Dentre as várias invenções de Babbage destaca-se a Máquina Analítica. A Máquina Analítica tinha alguns princípios básicos muito interessantes tais como:

Dispositivos de entrada; Facilidade de armazenar números para processamento; Processador, que na época era chamado de calculador numérico; Unidade organizacional que tinha como função organizar as tarefas a serem executadas; Dispositivo de saída com cartões perfurados;

É uma pena que a tecnologia disponível no tempo de Babbage não permitiu, pois teria sido um computador programável como conhecemos nos dias atuais.

Dentre esses dois grandes personagens citados há também uma figura feminina de destaque. Seu nome era Ada Augusta King, filha do poeta inglês Lord Byron. Ada foi amiga de Babbage. Sugeriu que a Máquina Analítica utilizasse o sistema binário e também escreveu pequenos programas para ela. Ada é considerada a primeira programadora de computadores do mundo.

Os desenvolvimentos não paravam e em toda parte do mundo cientistas desenvolviam suas engenhosas criações. Em 1930, a IBM lança uma máquina eletromecânica batizada de Harvard Mark I. O Mark I processava número com precisão de 23 dígitos e executava todas as quatro operações aritméticas, além de cálculos de logaritmos e funções trigonométricas. O Mark I também tinha programas embutidos. Era uma máquina lenta, mas era completamente automático.

Após o desenvolvimento do Mark I, o outro grande desenvolvimento americano foi o ENIAC (Electrical Numerical Integrator and Calculator). Era construído a base de válvulas e ocupava um espaço de 167 metros quadrados. Era um computador de alta velocidade e programável que usava a base de numeração decimal (base 10). Foi utilizado de 1946 a 1955.

1.3 Gerações dos Computadores

A evolução do computador segundo as tecnologias empregadas são divididas em gerações. Cada geração é caracterizada por um marco tecnológico. Basicamente os marcos tecnológicos utilizados para classificar a evolução dos computadores são três:

Válvulas eletrônicas; Transistores; Circuitos Integrados;

Caracterizada pelo uso de válvulas na composição dos computadores; Entradas e saídas baseadas em fitas perfuradas;

Algoritmos / Linguagem C – Prof. Ms. Antonio Marcos SELMINI 8

Computadores aplicados a resolução de problemas técnicos, científicos e militares; Programação baseada em linguagem de máquina;

Caracterizada pelo uso de transistores (talvez seja a invenção mais importante do século X); Entrada de dados através de cartão perfurado; Surgimento dos primeiros Sistemas Operacionais; Utilização de discos magnéticos removíveis; Desenvolvimento e aplicação das primeiras linguagens de programação em substituição a linguagem de máquina;

Utilização dos circuitos integrados em substituição aos transistores; Surgimento do Sistema Operacional DOS (Disk Operating System); Aumento significativo das capacidades de armazenamento;

4ª Geração ()

Para alguns historiadores a 3ª geração vai até os dias atuais. Outros afirmam que a 3ª geração termina em 1970, dando inicio a 4ª geração, caracterizada pela utilização de circuitos integrados de larga escala e utilização de técnicas de Inteligência Artificial.

Algoritmos / Linguagem C – Prof. Ms. Antonio Marcos SELMINI 9

Capítulo 2

Programação de Computadores

2.1 Introdução

No capítulo anterior foram apresentadas as principais características históricas e personagens que contribuíram para o surgimento dos computadores que conhecemos hoje. Como o objetivo principal da disciplina é na programação de computadores, a partir deste capítulo serão abordados os principais conceitos e técnicas envolvidas na construção de programas. O funcionamento do computador será abordado em outras disciplinas.

Uma pergunta que ainda não foi colocada em questão é: o que é um computador? Por ser um equipamento que está presente no nosso dia-a-dia e que muitas vezes nos torna totalmente dependente, muitos poderiam ficar sem apresentar uma resposta. A resposta é muito simples: Um computador é uma máquina que processa dados de entrada, gerando dados de saída. Entenda-se por processamento qualquer manipulação nos dados de entrada para gerar os dados de saída. Os dados de entrada representam as informações que são fornecidas para o computador para que ele possa manipular os dados de saída representam os resultados do processamento sobre os dados de entrada. A figura descreve a situação exposta.

Figura 2.1 – Esquema de processamento de dados.

Como o objetivo da disciplina é nas técnicas básicas de programação vamos estudar como escrever programas para a partir de uma entrada de dados gerar a saída.

(Parte 1 de 10)

Comentários