De Objective Caml para C e C++
57 pág.

De Objective Caml para C e C++


DisciplinaEstrutura de Dados I8.836 materiais180.694 seguidores
Pré-visualização14 páginas
o qual
faz parte da biblioteca padrão do C++. Este arquivo contém declarações de tipos e funções relacionadas com fluxos
de entrada e saída (iostream abrevia input/output stream), ou seja com leitura e escrita de textos.
Em C e em C++, todas as linhas iniciando com o caractere # ('jogo da velha') são 'diretivas de pré-processamento'.
Nessas linguagens, a compilação começa com uma fase dita de pré-processamento que realiza diversas operações de
manipulação do código fonte como a inclusão de arquivos. Por exemplo, a diretiva #include resulte na inclusão
do conteúdo de um arquivo.
As linhas 2 a 6 contém a definição de uma função, cujo nome é main (informações importantes sobre esse nome
são dadas no final desta seção). Antes do nome da função vem o tipo do resultado da mesma: aqui é o tipo int que
corresponde a números inteiros. Depois do nome da função, vem uma lista de parâmetros entre parênteses. Aqui a
lista é vazia e não há parâmetros. main portanto é uma função que não tem argumentos, e que retorna um valor do
tipo int. Em Caml esse tipo é denotado unit->int.
Depois da lista de parâmetros, vem o corpo da função, colocado entre chaves. Neste exemplo, o corpo dessa função é
uma seqüência composta de dois comandos (ou instruções).
O primeiro comando (linha 4) aplica o operador de impressão C++, que se escreve << (menor menor). Esse
operador é infixo e tem dois argumentos: o primeiro, a esquerda, é um fluxo de saída, no caso é std::cout, a
saída padrão, o segundo argumento é o valor que será impresso, no caso é o texto &quot;ola.\n&quot;. O resultado da
aplicação deste operador é o próprio fluxo de saída. Assim, ele pode ser encadeado, como no exemplo seguinte:
std::cout << &quot;Oi\n&quot; << &quot;Tudo bem?&quot;;
O segundo comando (linha 5) é uma instrução pré-definida da linguagem C++ que, tem um argumento, e instrui que
a função deve terminar a sua execução e retornar o valor dado em argumento, no caso o valor 0.
Introdução 4
Agora que explicamos cada linha do exemplo, devemos voltar ao nome da função: main. As linguagens C e C++
têm como convenção que a execução de um programa sempre inicia com a chamada da função chamada main. O
valor que retorna a função main é comunicado ao sistema operacional e pode ser usado para informar da ocorrência
ou não de algum problema. Por convenção, o valor 0 indica uma execução bem-sucedida.
Portanto, quando irá desenvolver um programa nessas linguagens, sempre deverá definir uma função com esse
nome, que será o ponto inicial da execução desse programa.
Um primeiro programa em C
O programa C seguinte é equivalente ao programa C++ dado em exemplo no parágrafo anterior.
#include <stdio.h>
int main ()
{
 fprintf(stdout, &quot;ola.\n&quot;);
 return 0;
}
Para experimentar a programação em C, abre um editor de texto, cópia o código dado e grave o mesmo em um
arquivo chamado exemplo2.c. Para compilar esse arquivo e gerar um programa executável nomeado exemplo2,
entre com o seguinte comando no console:
gcc -ansi -Wall exemplo2.c -o exemplo2
Então quais são as diferenças com o programa C++? Basicamente, são reduzidas ao uso de funções diferentes para
realizar a impressão da mensagem ola. na saída padrão. Em C, utiliza-se uma função nomeada printf que é
disponibilizada na biblioteca padrão através do arquivo stdio.h. Observe a similaridade com o comando
Printf.printf da linguagem Objective Caml: o primeiro argumento é o fluxo de saída (stdout designa a
saída padrão em C), e o segundo argumento é um texto a ser impresso. Em Objective Caml, como em C, esse texto
pode ter diretivas de formatação de valores que são então passados como argumentos adicionais à função fprintf.
Lembre-se...
\u2022\u2022 C e C++ não possuem interpretadores: Código nessas linguagens deve ser compilado para poder ser executado.
\u2022 Um compilador para C é o programa gcc, para C++ pode usar o g++.
\u2022 Um programa C ou C++ deve possuir uma função chamada main. Um programa sempre começa a se executar
pela função main.
Os tipos básicos 5
Os tipos básicos
Introdução
O sistema de tipos de uma linguagem de programação é composta por:
\u2022\u2022 Tipos básicos, que são os elementos de base para representar informações mais simples e construir tipos mais
complexos
\u2022 Construtores de tipos, que tem como papel combinar tipos mais elementares para construir tipos mais complexos;
\u2022\u2022 Regras de conversão entre tipos, que definem se e como valores de um tipo podem ser convertidos para um outro
tipo.
O sistema de tipos também possui os construtores de tipos, que são apresentados em um módulo específico sobre .
Ainda possui regras que definem quando, e como valores de um tipo podem ser convertidos entre se.
Os tipos básicos de C e de C++ são apresentados nesse módulo. Primeiro lembramos os tipos básicos de Objective
Caml são unit, bool, char, int, float e string. Os tipos básicos de C++ são:
\u2022 void: o tipo vazio,
\u2022 bool: o tipo booleano,
\u2022 int: o tipo inteiro,
\u2022 char: o tipo dos caracteres,
\u2022 float e double são tipos para os números decimais.
A seguinte tabela provê uma correspondência entre os tipos básicos de C e C++ e os de Objective Caml.
Objective Caml C e C++
- void
unit -
char char
int short int, long int, long long int
float float, double, long double
string - (*)
(*) As linguagens C e C++ possuem construções para representar textos (string), mas essas não fazem parte conjunto
dos tipos básicos. A biblioteca padrão da linguagem C fornece funções de tratamento de textos utilizando uma
técnica baseada em ponteiros para caracteres. Essas funções são disponíveis na linguagem C++ que ainda fornece,
através de sua biblioteca padrão, um tipo nomeado string e funções que manipulam valores desse tipo.
O tipo vazio
Em Objective Caml, o tipo unit é o tipo das computações seqüênciais e possui apenas um valor, denotado (). Em
C e C++, existe um tipo similar, embora mais simples ainda! Trata-se do tipo void, que não possui valor algum. Ele
é usado para definir funções que não retornam resultado.
Booleanos
A linguagem C++ possui um tipo para representar os booleanos. Tem como nome bool e os valores true e
false, representando respectivamente verdadeiro e falso.
Os operadores booleanos são:
\u2022 negação: !,
\u2022 conjunção: &&,
Os tipos básicos 6
\u2022 disjunção: ||.
É importante notar que os operadores booleanos binários possuem uma ordem pré-definida para a avaliação de seus
operandos.
\u2022 A avaliação da expressão c1 && c2 começa pela avaliação da sub-expressão c1. Se a mesma for igual ao valor
false, a avaliação da expressão completa é terminada e resulta no valor false. Caso contrário, a segunda
sub-expressão c2, é avaliada e o resultado sera o da expressão completa.
\u2022 Similarmente, na avaliação de uma disjunção c1 || c2, caso a avaliação da sub-expressão resulte no valor
true, então é concluída a avaliação da expressão completa, resultando no valor true. Caso contrário, o valor da
expressão completa é o da sub-expressão c2.
Existe um quarto operador, que pode ser chamado operador condicional. É similar à construção
if...then...else de Objective Caml. A sintaxe é ... ? ... : ..., onde cada ... representa um
argumento. Possui três argumentos, sendo que o primeiro é uma condição e os dois últimos devem ter tipos
compatíveis. O valor da expressão é o valor do segundo argumento se a condição for verdadeira, do terceiro
argumento caso contrário. Considere, como exemplo, a seguinte expressão:
 i >= 0 ? 1 : -1
O valor dessa expressão será caso o valor de i for maior ou igual a zero, e caso contrário (>= é o operador
maior ou igual).
No caso do operador condicional, o segundo argumento é avaliado apenas se o resultado da avaliação do primeiro for
true, enquanto que o terceiro argumento será avaliado apenas quando o resultado da avaliação do primeiro for
false.
Booleanos na linguagem C
Na versão inicial da linguagem C, não existia tipo para os booleanos. Em C, as condições possuem o tipo inteiro,