Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
transforma o "computador" num poderoso veículo de entretenimento; pod<strong>em</strong> ser um processador de texto,<br />
que transforma o "computador" num poderoso veículo de edição de textos; pod<strong>em</strong> ser uma planilha<br />
eletrônica, que transforma o "computador" num poderoso veículo para manipulação de tabelas numéricas,<br />
pod<strong>em</strong> ser programas para gerenciar, por ex<strong>em</strong>plo, o dia a dia comercial de uma farmácia e pod<strong>em</strong> ser<br />
ambientes que permitam o desenvolvimento de games ou de programas para gerenciar o dia a dia comercial<br />
de uma farmácia. Talvez com exceção de um game, os programas citados acima são, na verdade, conjuntos<br />
de programas que pod<strong>em</strong> ser executados de forma integrada. Um conjunto de programas que pod<strong>em</strong> ser<br />
executados de forma integrada é chamado software. Por seu turno, as unidades do computador, associadas a<br />
outros equipamentos chamados periféricos, como uma impressora, constitu<strong>em</strong> o hardware. O que nos é útil é<br />
um conjunto software + hardware. Um conjunto deste tipo é chamado de um sist<strong>em</strong>a de computação. De<br />
agora <strong>em</strong> diante, os nossos processadores serão sist<strong>em</strong>as de computação. Isto é, quer<strong>em</strong>os escrever<br />
programas que sejam executado por um sist<strong>em</strong>a de computação.<br />
Como foi dito acima, o desenvolvimento de um programa que gerencie o dia a dia comercial de uma<br />
farmácia requer um compilador (ou um interpretador) que o traduza para a linguag<strong>em</strong> de máquina.<br />
Antigamente, as <strong>em</strong>presas que desenvolviam compiladores desenvolviam apenas estes programas, de tal<br />
sorte que o programador necessitava utilizar um processador de texto à parte para edição do programa fonte.<br />
Atualmente, os compiladores são integrados num sist<strong>em</strong>a de computação que contém, entre outros:<br />
1. Processador de texto, para a digitação dos programas fontes;<br />
2. Depurador, que permite que o programa seja executado comando a comando, o que facilita a<br />
descoberta de erros de lógica;<br />
3. Help, que descreve as sintaxes e as s<strong>em</strong>ânticas de todas as instruções da linguag<strong>em</strong>;<br />
4. Linker, que permite que um programa utilize outros programas.<br />
Rigorosamente falando, um sist<strong>em</strong>a constituído de um compilador e os softwares listados acima<br />
deveria ser chamado de ambiente de programação; é mais comum, entretanto, chamá-lo, simplesmente, de<br />
compilador.<br />
Os ambientes de programação que utilizamos para desenvolver os programas deste livro foram o<br />
compilador Turbo C, versão 2.01, e Turbo C++, versão 3.0, ambos desenvolvidos pela Borland<br />
International, Inc., o primeiro <strong>em</strong> 1988 e o segundo <strong>em</strong> 1992. Como se pode ver, são sist<strong>em</strong>as desenvolvidos<br />
há bastante t<strong>em</strong>po (as coisas <strong>em</strong> computação andam muito mais rápido), já estando disponíveis gratuitamente<br />
na internet. Estar<strong>em</strong>os, portanto, utilizando um compilador “puro C” e um compilador C++, que é up grade<br />
da linguag<strong>em</strong> C para a programação orientada a objeto, paradigma que não está no escopo deste livro.<br />
1.11 Exercícios propostos<br />
1. Três índios, conduzindo três brancos, precisam atravessar um rio dispondo para tal de um barco cuja<br />
capacidade é de apenas duas pessoas. Por questões de segurança, os índios não quer<strong>em</strong> ficar <strong>em</strong> minoria, <strong>em</strong><br />
nenhum momento e <strong>em</strong> nenhuma das margens. Escreva um algoritmo que oriente os índios para realizar<strong>em</strong> a<br />
travessia nas condições fixadas. (Cabe observar que, usualmente, este exercício é enunciado envolvendo três<br />
jesuítas e três canibais. A alteração feita é uma modesta contribuição para o resgate da verdadeira história<br />
dos índios).<br />
2. O jogo conhecido como Torre de Hanói consiste de três torres chamadas orig<strong>em</strong>, destino e auxiliar<br />
e um conjunto de n discos de diâmetros diferentes, colocados na torre orig<strong>em</strong> na ord<strong>em</strong> decrescente dos seus<br />
diâmetros. O objetivo do jogo é, movendo um único disco de cada vez e não podendo colocar um disco sobre<br />
outro de diâmetro menor, transportar todos os discos para torre destino, podendo usar a torre auxiliar como<br />
passag<strong>em</strong> intermediária dos discos. Escreva algoritmos para este jogo nos casos n = 2 e n = 3.<br />
3. Imagine que se disponha de três esferas numeradas 1, 2 e 3 iguais na forma, duas delas com pesos<br />
iguais e diferentes do peso da outra. Escreva um algoritmo que, com duas pesagens numa balança de dois<br />
pratos, determine a esfera de peso diferente e a relação entre seu peso e o peso das esferas de pesos iguais.<br />
4. A média geométrica de n números positivos é a raiz n-ésima do produto destes números. Supondo<br />
que o processador é capaz de calcular raízes n-ésimas, escreva um algoritmo para determinar a média<br />
geométrica de n números dados.<br />
5. Sabendo que o dia 01/01/1900 foi uma segunda-feira, escreva um algoritmo que determine o dia da<br />
s<strong>em</strong>ana correspondente a uma data, posterior a 01/01/1900, dada. Por ex<strong>em</strong>plo, se a data dada for<br />
23/01/1900, o algoritmo deve fornecer como resposta terça-feira.