Trabalho Final de Lógica para Computação Instruções:

Propaganda
Universidade Católica de Pelotas
Centro Politécnico
Bacharelado em Ciência da Computação
Trabalho Final de Lógica para Computação
Instruções:
O trabalho deve ser feito em duplas. O resultado final deve ser enviado como um arquivo .pl para
[email protected] até 15/07/2010, contendo o nome completo dos membros da equipe e o texto
do programa fonte em SWI-Prolog com comentários descrevendo sua construção e operação. Em caso
de dúvida, contate a lista: [email protected].
Questão Única:
Selecionar um dos textos abaixo e representar sob a forma de um programa em SWI-Prolog. O
programa deve permitir a instanciação de novos objetos (sob a forma de fatos) em tempo de
execução e responder consultas sobre os objetos existentes.
1. Combustíveis
Um combustível é qualquer substância que reage com o oxigênio (ou outro comburente)
liberando energia na forma de calor, chamas e gases. Supõe a liberação da energia nele contida
em forma de energia potencial a uma forma utilizável. Em geral se trata de algo susceptível de
combustão mas há excepções que se explicam a seguir.
Existem várias substâncias que estão ou podem ser usadas como combustível. Entre as sólidas
incluem-se o carvão, a madeira e a turfa. O carvão é queimado em caldeiras para esquentar água,
que pode vaporizar-se para mover máquinas a vapor, ou diretamente para produzir calor utilizável
em usos térmicos (calefação). A turfa e a madeira são utilizadas principalmente para a calefação
doméstica e industrial. A turfa foi utilizada para a geração de energia nas locomotivas, que
utilizavam madeira como combustível, muito comum no passado.
Entre os líquidos usados como combustível encontramos os de origem vegetal ou animal, como o
álcool e o óleos vegetais de rícino e gorduras à partir do século XX surgem os combustíveis
minerais, considerados fósseis, são os derivados do petróleo como óleo diesel, o querosene e a
gasolina (ou nafta).
Entre os combustíveis gasosos estão o gás natural ou os GLP (Gases Liquefeitos de Petróleo),
representados pelo Propano e o Butano. As gasolinas e até os gases são utilizados para os motores
de combustão interna.
Nos corpos dos animais em geral, o combustível principal é constituído por carboidratos, lipídios e,
em certas circusntâncias, as proteínas, que proporcionam energia para os músculos, o
crescimento e os processos de renovação e regeneração célular.
Por extensão se chamam também combustíveis às substâncias empregadas para produzir energia
no reator nuclear no processo de fissão nuclear, embora este processo não seja de forma alguma
uma combustão.
Tampouco é um combustível, na acepção estrita do termo, o hidrogênio quando utilizado no
processo de fusão nuclear, que proporciona grandes quantidades de energia, no que se fundem
quatro átomos de hidrogênio para converter-se em um de hélio. Este meio de obter energia não
foi dominado adequadamente pelo homem (mas que em sua forma mais violenta, é a bomba de
hidrogênio, conhecida como Bomba H). No Universo é comum, posto que é a fonte de energia das
estrelas.
Os combustíveis fósseis são misturas de compostos orgânicos que se extraem do subsolo com o
propósito de produzir energia por combustão. A origem desses compostos são seres vivos que
morreram há milhões de anos. Consideram-se combustíveis fósseis o carvão, procedente de
bosques do período carbonífero, o petróleo e o gás natural, procedente de outros organismos.
2. Satélites Artificiais
Um satélite artificial é qualquer corpo feito pelo homem e colocado em órbita ao redor da Terra
ou de qualquer outro planeta. Hoje em dia, ao contrário do que ocorria no início da história dos
satélites artificiais, o termo satélite vem sendo usado praticamente como um sinônimo para
"satélite artificial". O termo "satélite artificial" tem sido usado quando se quer distingui-los dos
satélites naturais, como a Lua.
Os satélitesartificiais podem ser:
Biosatélites --- são satélites projetados para levar ao espaço organismos vivos para
experimentação científica.
Satélites miniaturizados --- são satélites com dimensões e massas reduzidas. Hoje, esses
satélites são categorizados como minisatélites (500–200 kg), microsatélites (menos de 200 kg)
e nanosatélites (menos de 10 kg).
Satélites de energia solar --- são satélites que usam células solares para captar a energia solar
e a convertem em um feixe de microondas, transmitido para grandes antenas na Terra por
potentes transmissores a bordo do satélite. A energia captada pela antena pode então ser
usada como uma fonte alternativa de energia.
Estações espaciais --- são estruturas fabricadas pelo homem e projetadas para permitir que
seres humanos possam viver no espaço exterior. Uma estação espacial difere de uma
espaçonave. Ao contrário das espaçonaves, as estações espaciais não possuem capacidade de
propulsão nem de aterrissagem. Por outro lado as estações espaciais são projetadas para
permitir a permanência humana por médios períodos de tempo, que variam de semanas até
alguns anos.
Armas anti-satélites, --- por vezes chamados de satélites assassinos, são satélites projetados
para destruir satélites "inimigos" e outros tipos de alvos em órbita. Tanto os Estados Unidos
quanto a antiga URSS têm esses tipos de satélites.
Satélites astronômicos--- são satélites usados para observações astronômicas, tanto no
óptico, quanto em outras bandas do espectro eletromagnético.
Satélites de comunicação --- são satélites estacionários utilizados em telecomunicação.
Satélites do Sistema Global de Navegação (GPS) --- são satélites que enviam sinais de rádio a
receptores móveis na Terra possibilitando a determinação precisa de sua localização
geográfica. A recepção direta do sinal dos satélites GPS, combinada com uma eletrônica cada
vez melhor, permite que o sistema GPS determine a posição com um erro de poucos metros,
em tempo real.
Satélites de reconhecimento --- são satélites projetados para observação da Terra ou antigos
satélites de comunicação utilizados para fins militares ou de espionagem. Pouco se sabe sobre
a capacidade real desses satélites, pois os países que os desenvolvem geralmente não
divulgam informações sobre eles.
Satélites de observação da Terra --- são satélites projetados para uso não-militar, para, por
exemplo, monitoramento ambiental, meteorologia, mapeamento geográfico, etc.
Satélites meteorológicos --- são satélites projetados essencialmente para monitorar o tempo
e o clima na Terra.
Os satélites artificiais ocupam diferentes órbitas e claro, que possuem diferentes características.
Normalmente essas rotas são definidas em relação à Terra. A maioria dos satélites de
telecomunicações são satélites geoestacionários, ou seja, eles ocupam uma órbita
geoestacionária.
Outras órbitas possíveis são: órbita terrestre baixa, órbita circular intermediária, órbita polar,
órbita geossíncrona, órbita supersíncrona, órbita subsíncrona, órbita elíptica, órbita de
transferência de Hohmann, órbita heliossíncrona, órbita de transferência lunar e órbita de calunia
eliptica.
3. Linguagens de Programação
Uma linguagem de programação é um método padronizado para expressar instruções para um
computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de
computador. Uma linguagem permite que um programador especifique precisamente sobre quais
dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais
ações devem ser tomadas sob várias circunstâncias.
O conjunto de palavras (tokens), compostos de acordo com essas regras, constituem o código
fonte de um software. Esse código fonte é depois traduzido para código de máquina, que é
executado pelo processador.
Uma das principais metas das linguagens de programação é permitir que programadores tenham
uma maior produtividade, permitindo expressar suas intenções mais facilmente do que quando
comparado com a linguagem que um computador entende nativamente (código de máquina).
Assim, linguagens de programação são projetadas para adotar uma sintaxe de nível mais alto, que
pode ser mais facilmente entendida por programadores humanos. Linguagens de programação
são ferramentas importantes para que programadores e engenheiros de software possam
escrever programas mais organizados e com maior rapidez.
Linguagens de programação também tornam os programas menos dependentes de computadores
ou ambientes computacionais específicos (propriedade chamada de portabilidade). Isto acontece
porque programas escritos em linguagens de programação são traduzidos para o código de
máquina do computador no qual será executado em vez de ser diretamente executado. Uma meta
ambiciosa do Fortran, uma das primeiras linguagens de programação, era esta independência da
máquina onde seria executada.
Uma linguagem de programação pode ser convertida, ou traduzida, em código de máquina por
compilação ou interpretação, que juntas podem ser chamadas de tradução. Se o método utilizado
traduz todo o texto do programa (também chamado de código), para só depois executar (ou
rodar, como se diz no jargão da computação) o programa, então diz-se que o programa foi
compilado e que o mecanismo utilizado para a tradução é um compilador (que por sua vez nada
mais é do que um programa). A versão compilada do programa tipicamente é armazenada, de
forma que o programa pode ser executado um número indefinido de vezes sem que seja
necessária nova compilação, o que compensa o tempo gasto na compilação. Isso acontece com
linguagens como Pascal e C.
Se o texto do programa é traduzido à medida que vai sendo executado, como em Javascript,
Python ou Perl, num processo de tradução de trechos seguidos de sua execução imediata, então
diz-se que o programa foi interpretado e que o mecanismo utilizado para a tradução é um
interpretador. Programas interpretados são geralmente mais lentos do que os compilados, mas
são também geralmente mais flexíveis, já que podem interagir com o ambiente mais facilmente.
Embora haja essa distinção entre linguagens interpretadas e compiladas, as coisas nem sempre
são tão simples. Há linguagens compiladas para um código de máquina de uma máquina virtual
(sendo esta máquina virtual apenas mais um software, que emula a máquina virtual sendo
executado em uma máquina real), como o Java. E também há outras formas de interpretar em
que os códigos-fontes, ao invés de serem interpretados linha-a-linha, têm blocos "compilados"
para a memória, de acordo com as necessidades, o que aumenta a performance dos programas
quando os mesmos módulos são chamados várias vezes, técnica esta conhecida como JIT.
Como exemplo, podemos citar a linguagem Java. Nela, um compilador traduz o código java para o
código intermediário (e portável) da JVM. As JVMs originais interpretavam esse código, de acordo
com o código de máquina do computador hospedeiro, porém atualmente elas compilam, segundo
a técnica JIT o código JVM para código hospedeiro.
A tradução é tipicamente feita em várias fases, sendo as mais comuns a Análise léxica, a Análise
sintática ou Parsing, a Geração de código e a Otimização. Em compiladores também é comum a
Geração de código intermediário.
Download