3 resultados encontrados para include



Procurar em : Hardware
Tópico : Conversão De Códigos Ada Para C/c++
Respostas : 1
Vistos : 1858

Conversão De Códigos Ada Para C/c++ em 28.05.16 21:47

Olá a todos :)

Ada, uma linguagem de programação OO, muito poderosa por sinal, mas muito pouco conhecida, então, neste artigo, vou mostrar como converter seus códigos de C/C++ para ada, e de Ada para C/C++. Mas antes, eu vou fazer uma introdução a linguagem, para que você possa conhecer um pouco da linguagem e de sua sintaxe :)
Obs: Apenas irei mostrar as principais formas de converter o código, assim, não irei apresentar algumas formas de conversão.

Sendo assim, eu vou separar este artigo em 4 partes:

{0.0} -- Informações importantes.
{1.0} -- Introdução a linguagem de programação Ada.
{2.0} -- Conceitos básicos da conversão. 
{3.0} -- Exemplo.

>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<

{0.0} Informações importantes
OS: Ubuntu 11.04
Compilador Ada: gnat
Compilador C & C++: gcc & g++

{1.0} Introdução a linguagem de programação Ada

"Ada é uma Linguagem de programação estruturada, de tipagem estática, é uma linguagem imperativa, orientada a objetos e é uma linguagem de alto nível."

Estrutura basica de um programa em Ada

-- declarações das bibliotecas
procedure nome_do_programa is
-- variaveis
begin
-- corpo do programa
end nome_do_programa;



Para deixar mais claro a estrutura do programa, segue um exemplo de um simples Olá mundo em Ada...

with Ada.Text_IO; use Ada.Text_IO;

procedure main is
begin
        put_line("Ola mundo");
end main;



O comando put_line, pertence a biblioteca, Text_IO, o uso do comando "use", não é estritamente necessário, como você pode ver neste exemplo:
with Ada.Text_IO;

procedure main is
begin
        Ada.Text_IO.put_line("Ola mundo");
end main;



Ao contrário de C, que tem uma função principal(main), qualquer procedimento sem parâmetros pode ser uma rotina "main". O processo assim designado é escolhido no momento da ligação(linkagem).

Exemplo do comentário feito acima:


Crie um arquivo chamado ola.adb, neste arquivo escreva o seguinte código:
with Ada.Text_IO; use Ada.Text_IO;

procedure ola is
begin
        put("Ola");
end ola;



Salve, e crie um arquivo chamado nome.adb, neste novo arquivo, escreva o seguinte código:
with Ada.Text_IO; use Ada.Text_IO;
with ola;

procedure nome is
        nome : string(1 .. 50);
        n : natural;
begin
        put_line("Qual eh o seu nome ?");
        get_line(nome, n);

        ola;
        put_line(", " & nome(1 .. n) & ". :)");
end nome;



Salve, e vamos compilar :)
Para compilar, vá no diretório onde você salvou os arquivos, pelo terminal e digite o seguinte comando:
gnatmake nome.adb


Após a compilação, teste o seu novo programa:
./nome
Qual eh o seu nome ?
Alexandre
Ola, Alexandre. :)



Para terminar está parte do artigo, vamos implementar mais alguns arquivos e funções no nosso programa, para apresentar mais alguns conceitos como
if
,
elsif
, vamos primeiramente implementar a função para perguntar a nossa idade:

Crie um arquivo chamado idade.adb, neste arquivo, escreva o seguinte código:
with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

function idade(nome : string; n : natural) return Integer is
        age : integer;
begin
        put_line(nome(nome'first .. n) & ", qual eh a sua idade ?");
        get(age);
        return age;
end idade;



e no arquivo nome, adicione as seguintes linhas, nos seus respectivos lugares:

with idade;
[code]age : integer;
age := idade(nome, n);



Assim então, o código do arquivo nome, fica da seguinte forma:

with Ada.Text_IO; use Ada.Text_IO;
with ola;
with idade;

procedure nome is
        nome : string(1 .. 50);
        n : natural;
        age : integer;
begin
        put_line("Qual eh o seu nome ?");
        get_line(nome, n);

        ola; -- chama a procedure do arquivo ola
        put_line(", " & nome(1 .. n) & ". :)");
       
        age := idade(nome, n);
end nome;



para compilar, use a mesma linha de comando...

Agora, vamos criar uma função, para verificar se você está bem ou mal, de saúde, para isso, crie um arquivo chamado estado.adb:

with Ada.Text_IO; use Ada.Text_IO;

function estado(nome : string; n : natural) return String is
        es : string(1 .. 3); -- es = estado da saude;
begin
        put_line(nome(nome'first .. n) & ", como você está se sentindo [bem/mal] ?");
        get(es);
        return es;
end estado;



e no arquivo nome.adb, escreva as seguintes modificações:
with estado;
--
es : string (1 .. 3);
--
es := estado(name, n);
       
        if es = "bem" then
                put_line("Que bom!!!");
        elsif es = "mal" then
                put_line(":-(");
                put_line("Procure um médico");
        else
                put_line("Não conheço esse estado de saúde!!!!");
        end if;



código do arquivo nome.adb

with Ada.Text_IO; use Ada.Text_IO;
with ola;
with idade;
with estado;

procedure nome is
        name : string(1 .. 50);
        n : natural;
        age : integer;
        es : string (1 .. 3);
begin
        put_line("Qual eh o seu nome ?");
        get_line(name, n);

        ola; -- chama a procedure do arquivo ola
        put_line(", " & name(1 .. n) & ". :)");
       
        age := idade(name, n);
        es := estado(name, n);
       
        if es = "bem" then
                put_line("Que bom!!!");
        elsif es = "mal" then
                put_line(":-(");
                put_line("Procure um médico");
        else
                put_line("Não conheço esse estado de saúde!!!!");
        end if;
end nome;



{2.0} Conceitos básicos da conversão

Uma das primeiras coisas que precisamos saber sobre a diferença entre as linguagens, são os operadores, para isso, veja a seguinte tabela:



Tópicos com a tag include em Power Pixel 110go68






{2.1} Tipos
A conversão de variáveis do C/C++ para ada, ou de ada para C/C++, é relativamente simples:

C/C++
int a;
int i, j, k;
int b, c = 10;
int d = 1;



Ada
a : Integer;
i, j, k : Integer;
b, c : Integer := 10;
d : Integer := 1;




{2.2} Declaração de new types e subtypes

C/C++

typedef int INT;
INT i;
int j;

i=j; // funcionara perfeitamente, o compilador não ira detectar isso como um erro



Ada

type INT is new integer;
i : INT;
j : integer;

a := b; -- O Compilador ira detectar isso como um erro



A palavra-chave importante é new, o que realmente resume a forma como Ada está tratando essa linha, ele pode ser lido como "um novo tipo INT foi criado a partir do tipo inteiro", enquanto que a linha C pode ser interpretada como "um novo nome INT foi introduzida como um sinônimo para int ".
Esta tipagem forte pode ser um problema, e assim por Ada também oferece um recurso para reduzir a distância entre o novo tipo e o seu parente, considere o seguinte código:

Ada

subtype INT is Integer;
i : INT;
j : Integer;

i := j; -- O compilador não vai considerar isso errado.



{2.3} C/C++ statements para Ada

{2.3.0} IF

C/C++

if (expressão)
{
  statement
}
else if (expressão)
{
  statement
}
else
{
  statement
}




Ada

package Our_List is
  type List_Rep is private;

  function Create return List_Rep;

private
  type List_Rep is
    record
       -- código
    end record;
end Our_List;



{3.0} Exemplo

O código que será usado como exemplo de conversão será o código criado no começo do artigo:
Obs: a conversão será feita para C++.

caso você tenha deletado ele, ai vai ele novamente:

ola.adb

with Ada.Text_IO; use Ada.Text_IO;

procedure ola is
begin
        put("Ola");
end ola;



nome.adb

with Ada.Text_IO; use Ada.Text_IO;
with ola;
with idade;
with estado;

procedure nome is
        name : string(1 .. 50);
        n : natural;
        age : integer;
        es : string (1 .. 3);
begin
        put_line("Qual eh o seu nome ?");
        get_line(name, n);

        ola; -- chama a procedure do arquivo ola
        put_line(", " & name(1 .. n) & ". :)");
       
        age := idade(name, n);
        es := estado(name, n);
       
        if es = "bem" then
                put_line("Que bom!!!");
        elsif es = "mal" then
                put_line(":-(");
                put_line("Procure um médico");
        else
                put_line("Não conheço esse estado de saúde!!!!");
        end if;
end nome;



idade.adb

with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

function idade(nome : string; n : natural) return Integer is
        age : integer;
begin
        put_line(nome(nome'first .. n) & ", qual eh a sua idade ?");
        get(age);
        return age;
end idade;



estado.adb

with Ada.Text_IO; use Ada.Text_IO;

function estado(nome : string; n : natural) return String is
        es : string(1 .. 3); -- es = estado da saude;
begin
        put_line(nome(nome'first .. n) & ", como você está se sentindo [bem/mal] ?");
        get(es);
        return es;
end estado;



Para converter esse arquivo para C/C++, você primeiramente precisa conhecer alguns comandos do C/C++, tais como printf(), getchar(), cin, cout ...

Bom, então, para converter esse arquivo, vamos começar pelo começo, ou seja, pelo arquivo ola.adb

C/C++ { arquivo: ola.cpp }

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] "comum.h"

void ola()
{
        cout << "Ola";
}



bom, como o código em C/C++, não se interage como o código em Ada, a gente vai ter que criar uma header, e nessa header tera as principais informações a serem trocadas entre os arquivos:

Então, crie uma header chamada comum.h

e nesse arquivo, já adicione a função ola:


// comum.h
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] COMUM_H_
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] COMUM_H_

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] <iostream>
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] <string>
using namespace std;

void ola();
int idade(char *nome);
string estado(char *nome);

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]



agora, vamos criar o main do projeto, que no vaso será o arquivo nome, mas no projeto em C/C++ ele vai receber o nome de main.c
então, crie o arquivo main.cpp, e escreva o seguinte código:


// main.cpp
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] "comum.h"

int main(void)
{
        char name[50];
        string es;
        int age;

        cout << "Qual é o seu nome ?" << endl;
        cin.get(name, 50);

        ola();
        cout << ", " << name << ", :-)" << endl;

        age = idade(name);
        es = estado(name);

        if(es == "bem")
                cout << "Que bom!!!" << endl;
        else if(es == "mal")
                cout << "Procure um médico" << endl;
        else
                cout << "Não conheço esse estado de saúde!!!!" << endl;
        return 0;
}




// idade.cpp
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] "comum.h"

int idade(char *nome)
{
        int age;
        cout << nome << ", qual eh a sua idade ?" << endl;
        cin >> age;
        return age;
}




// estado.cpp
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] "comum.h"

string estado(char *nome)
{
        string es;
        cout << nome << ", como você está se sentindo [bem/mal] ?" << endl;
        cin >> es;
        return es;

Créditos :
Bencz (Testar)
Hashy ( desenvolver & Divulgar)

Como fazer um programa "Hello World" no Visual C++ em 28.05.16 15:40

Tutorial:
1- Instale o Visual C++ 2010 Express
2- Crie um novo projeto e selecione a opção "Win32 Console Aplication", dê um nome ao seu projeto e clique em "Finish".
3- Na pàgina que aparecerá altere a configuração "int_tmain" para "int main ()". Depois, no lado esquerdo espanda a pasta "Header Files" e abra o "stdafx.h" em uma nova guia. Logo coloque a linha "# include <iostream>" após a linha "#include <tchar.h>" isso permitirá o acesso de Streams padrões de entrada e saída. Isso dá basicamente permissões ao console de entrada e saída.
4. Voltando ao arquivo da .cpp da main, coloque "using namespace std" após a linha #include stdafx.h. Isso diz ao copilador para assumir automaticamente que para cada comando as bibliotecas padrão devem ser usadas.
5. Agora vá até a função "int main()". Depois crie uma linha e escreva: "cout<<"Hello World";", adicione a linha "cin.get();" também.
6. Certifique-se que após o "cin.get ();" você manteve a função "return 0;". Se tiver certeza de que tudo foi feito corretamente, pressione F7 para iniciar o processo de copilação.
7. Abra seu programa na pasta e veja se esta funcionando corretamente. Você deverá ver o texto "Hello World" impresso em uma tela de console.

Creditos  : Forum Concorrente ( Locked )
Convidado


Procurar em : Tutoriais
Tópico : Criando plugins Criando plugins de AMXX – AMX Mod X – Counter Strike
Respostas : 4
Vistos : 2202

Criando plugins Criando plugins de AMXX – AMX Mod X – Counter Strike em 04.08.15 20:47

Requisitos para a aprendizagem:

- Ter conhecimento pelo menos de alguma linguagem (recomendável C ou C++);
- Saber a estrutura do AMX MOD X;
- Noções de cabeçalhos, funções, implementações, operadores, clases, etc;
- Dominar lógica;
- Conhecer em profundo todas as funções do AMX MOD X.
- Conhecer os Paths.
- Saber manipular os executáveis;
- Conhecer a engine do Half-Life.

Tutorial:

Primeiro você vai precisar do programa AMXX Studio, para baixá-lo .
https://www.amxmodx.org/downloads.php

Ele é um utilitário, que serve para editar e compilar seus plugins, estilo um DEV-C++.

Após o termino do download, execute-o e instale a onde desejar;
Após a instalação ele vai querer instalar outra coisa, você deve clicar em não;
Pronto, seu AMXX Studio está instalado e com um ícone no seu desktop.

Agora sim podemos começar a escrever plugins

Abra seu AMXX Studio, provavelmente ele vai ter um ‘plugin’ já aberto, que é um exemplo, você pode apagar tudo o que se encontra nele pois nós vamos começar do zero.

Primeira etapa:

Incluir a biblioteca que você utilizará. Para fazer isso basta escrever:

{#}include{/#} <Nome da Biblioteca>

Para saber qual biblioteca você vai precisar, você precisa saber quais funções vai usar, para isso use o AMXX Documentation, para isso clique aqui.

A biblioteca principal, que você devera usar em todos os plugins é a amxmodx, assim dando o include:

{#}include{/#} <amxmodx>

Pronto, após inserir a biblioteca você deverá escrever a função principal, que nesse caso (do AMXModX) se chama “plugin_init“, para isso clique aqui.

Como escrever uma função no AMXModX:

Primeiro você terá que definir qual tipo de função é. Nesse caso é uma função do tipo PUBLIC. Para se iniciar a função se escreve da seguinte forma:

public nome_da_funcao()
{
// espaço aonde será chamada outras funções.
}

No caso da função principal:

public plugin_init()
{
// espaço aonde será chamada outras funções.
}

Agora o seu plugin já tem um inicio, por onde ele vai começar

Sua próxima etapa é registrar o seu plugin, clique aqui para acessar a área do site oficial e proceder.

public plugin_init()
{
register_plugin(“Welcome MSG”,”1.0″,”OffspringBR”) // a funçao deve ser usada na forma de register_plugin(“Nome do Plugin”,”Versao do Plugin”, “
Nome do Autor” )
// . . .
}

public plugin_init()
{
register_plugin(“Welcome MSG”,”1.0″,”OffspringBR”)
return PLUGIN_CONTINUE // define que seu plugin continuará rodando…
}

Pronto, para esse plugin a função principal vai fazer nada mais do que registrar o criador do plugin.

Próxima etapa

O plugin se baseia em, quando o usuário entrar no servidor ele receberá uma mensagem de boas vindas no chat. Então, o que precisamos?
Nós precisamos identificar quando o usuário entra no servidor e para isso (graças a equipe AMX MOD X) tem-se uma função pronta incluída na BIBLIOTECA amxmodx que nós já adicionamos.
A função é client_putinserver(id), que pode ser iniciada como uma função publica, ou seja, PUBLIC:client_putinserver

public client_putinserver(id) // iniciando a função para identificar se o usuario entrou no server, o ‘id’ representa a indentificaçao do usuario, ou seja, quem é ele para o jogo.
{
// . . .
}

Agora sabemos quando o usuário entrou no servidor

Próximo passo seria dar as boas-vindas, mas como quando o usuário entra ele vê muitas outras coisas além do chat nós vamos pedir para o plugin esperar alguns segundos até mostrar a mensagem e para mostrar a mensagem nós vamos criar uma FUNÇÃO, que pode ser chamada como você quiser, nesse caso vou chamá-la de ‘print_msg‘, já que sabemos como iniciar a função vou continuar a explicar o que será feito dentro dela e depois voltaremos a função que identifica o usuário quando entrar no servidor.
Agora a parte mais simples, imprimir a mensagem no chat do usuário, vamos usar a função client_print(id, tipo_de_mensagem, “mensagem”)

public print_msg(id) // Inciando a funçao feita por voce, ela será public e tera como parametro (
o que ta dentro do ‘()’ ) o ‘id’ do usuário
{
client_print(id, print_chat, “Bem-vindo ao meu servidor”)
// aqui é chamada a funçao client_print como explicado acima…
o segundo parametro ‘print_chat’ define que a mensagem vai aparecer no chat do usuário
}

Pronto! Agora podemos voltar a função que identifica o usuário que entrou.
O que ela vai fazer? Vai chamar a função ‘print_msg‘ que vai Imprimir no chat a mensagem, com um espaçamento de tempo de 4 segundos, utilizando a função set_task (tempo, “função”, id):

public client_putinserver(id)
{
set_task(4.0, “print_msg”, id)// vai chamar a funçao ‘print_msg’ depois de 4 segundos para o usuário ‘id’
return PLUGIN_CONTINUE // continua a rodar o plugin
}

Agora sim! O plugin está 100% pronto!

O algoritmo foi bem básico, é só você pensar o que você quer fazer, e foi: Quando o usuário entrar (função client_putinserver) eu vou imprimir (client_print) depois de um certo tempo (funçao set_task).

Parte final

Agora você deve clicar em File > Save As e salvar com o nome que você quiser.
Depois de salvo você clica na Setinha Verde ‘>’ para compilar! E pronto! Seu plugin AMXX estará na mesma pasta de onde você salvou como dito acima.

Pronto, esse foi o algoritmo usado, e é assim que você deverá pensar quando for escrever seu plugin. O seu resultado final devera ser parecido com este:

{#}include{/#} <amxmodx>

public plugin_init()
{
register_plugin(“Welcome MSG”,”1.0″,”OffspringBR”)
//return PLUGIN_CONTINUE
}

public client_putinserver(id)
{
set_task(4.0, “print_msg”, id)
//return PLUGIN_CONTINUE
}

public print_msg(id)
{
client_print(id, print_chat, “Bem-vindo ao meu servidor”)
}

 

Ir para:

BH Servers

Recomendamos a BH Servers com proteção DDOS gratuita em Cloud Server de alta performance. Entrega imediata.