• Bem vindo à nossa comunidade - Quer se juntar ao resto dos nossos membros? Registre-se*Registros aprovados pela adminitração

Alguns Conceito básico de programação C++

lucasxdd

Lord XPZ
C++ é uma linguagem de programação de alto nível com facilidades para o uso em baixo nível. Foi desenvolvida por Bjarne Stroustrup (foto) como uma melhoria da linguagem C, e desde os anos 1990 é uma das linguagens mais populares do mundo.

O leitor poderá se sentir à vontade para expor suas opiniões, sugestões e dúvidas. Os que tiverem interesse também poderão contribuir para o desenvolvimento deste livro e ajudar a difundir os conhecimentos da fascinante linguagem C++.

Quem sabe programar em 
Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
, é capaz de programar 
Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
, devido à semelhança entre as linguagens e o fato do C++ ser uma extensão do C. Contudo o C não é completamente um subconjunto do C++. Grande parte de 
Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
 C pode ser perfeitamente 
Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
 em C++, mas existem algumas pequenas diferenças 
Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
 e 
Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
 entre as linguagens que tornam alguns trechos de código C válidos em código C++ inválido, ou códigos que exibem comportamentos diferentes em cada linguagem.

Algumas diferenças básicas:

  • O C permite a conversão implícita entre o 
    Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
     void* para 
    Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
     para outros tipos, algo que o C++ não permite.
  • O C permite que constantes de caracteres sejam inseridas em chamadas de funções com parâmetros tipo char*, em C++ é preciso declarar o parâmetro como const char *;
Além destas pequenas diferenças, C++ tem um conjunto de características que a torna fundamentalmente diferente de "C". Esse conjunto, torna possível programar em C++ de um modo totalmente diferente do modo de programar da linguagem "C". O que traz a diferença é o modo da orientação na montagem do código.

Chamamos o modo de programar em "C" de orientado a procedimentos e chamamos o modo do "C++" de orientado a objetos. Muitas pessoas confundem as coisas quando começam a programar usando um compilador C++, pois esta linguagem permite programar nos dois modos. Essa é uma das características que a torna mais flexível.

Apesar de C++ permitir programar em modo orientado a procedimentos, podemos dizer que nestes casos estamos programando em "C", usando um compilador C++. Quando usamos C++ programamos em modo orientado a objetos. Devido a estas características, o C++ permite programar em modo misto, ou seja, escrevendo partes do código orientadas a procedimentos e outras orientadas a objetos.

As difernças entre os dois modos de programar serão esclarecidas nos capítulos subsequentes. Por hora nos basta deixar claro que os dois modos são diferentes. Usar estes dois modos de programar ao mesmo tempo é uma das facilidades que o C++ permite, enquanto que outras linguagens orientadas a objetos como Java, Eifel, etc, não permitem.

Imagine que você deve fazer um programa para fazer a máquina de um pequeno relógio de pulso funcionar, então você pensa:

_Bom, isso pode ser feito com Assembly...

_Porém, pensando melhor, você decide mudar de linguagem quando você pondera:

_O problema maior é que se eu tiver que mudar o processador do relógio, vou ter que refazer o programa. É melhor usar linguagem "C".

_Depois você termina por avaliar outra possibilidade:

_Bem, se eu já estou pensando em "C" é melhor usar "C++", depois vai ser mais fácil de entender o código, reaproveitar em outras coisas e ainda vai ser mais fácil de expandir para outros modelos de relógio.

E assim é o que podemos perceber como C++ é poderosa, flexível e abrangente. Ela pode ser usada para programar qualquer tipo de hardware, desde os mais simples até os mais complexos. Além disso, C++ é uma linguagem que gera programas em código de máquina, que funcionam com ou sem a participação de sistemas operacionais no dispositivo.

Alguns profissionais afirmam que C++ é a linguagem mais poderosa que existe, veja algumas características dela:

  • É um superconjunto da 
    Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
    , e contém vários melhoramentos;
  • Deu origem a grandes linguagens como 
    Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
     e 
    Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
    ;
  • É a porta para a 
    Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
    ;
  • C++ pode virtualmente ser efetivamente aplicado a qualquer tarefa de 
    Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
    ;
  • Há vários compiladores para diversas plataformas tornando a linguagem uma opção para programas multiplataforma.
A linguagem C++ é utilizada em projetos como:

[ul]

  • Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
    ;
  • Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
    ;
  • Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
    ;
  • Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
    ;
  • Programas de 
    Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
    .
  • Função, do latim functioonis, representa na computação, um pequeno algoritmo com uma função simples e bem definida. É como se cada função fosse um micro programa, ou um tijolo na construção do programa principal. O uso de funções facilita muito o desenvolvimento, pois, divide o problema principal em pequenos problemas mais simples. Essa técnica se chama, Dividir para conquistar.
    A experiência mostra que o uso de funções facilita e acelera a criação e manutenção de sistemas.
    Todo programa em C++ tem pelo menos uma função, o main. Veja o exemplo do 
    Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
     em C++:
    #include <iostream> //Biblioteca com funções de entrada e saída de dados

    using namespace std;

    int main (void) //Função principal do programa
    {
    cout << "Olá mundo!"; //cout também é uma função, e precisa ser importada da biblioteca iostream

    //Esta função main retorna um valor int, ou inteiro, por isso faz a operação de retornar 0
    return 0;
    }


    Do exemplo Olá mundo, vemos que toda função em C++ tem um nome. O nome de uma função junto com o tipo de dados que retorna é chamado assinatura da função.
    int main (void) //Assinatura da função main



    Essa assinatura informa que a função de nome main retorna na sua execução um valor do tipo int, ou inteiro, e recebe void como parâmetro. Receber void significa que a função não recebe parâmetro, se a função retorna void, significa que não retorna nada. Algumas funções não precisam retornar nenhum valor para funcionar, apenas realizar alguma ação.
[/ul]
 
Editado por um moderador:

lucasxdd

Lord XPZ
Variável - Uma variável consiste em um elemento ao qual lhe damos um nome e lhe atribuímos determinado tipo de informação (valor). Variáveis são a base de qualquer programa, ou seja, a variável é a raiz de tudo. Baseado nas variáveis que vamos manipular estruturas, funções e aplicações. Alguns tipos mais usados por nós foram mencionados no módulo anterior, dessa forma, só entrarei em mérito de tipos de variáveis, caso seja necessário durante o módulo.

Programação Orientada a Objeto (C++)Ha muito tempo as linguagens de programação eram estruturadas, ou seja, para se atingir um determinado objetivo, era necessário passar por varias outras etapas antes disso acontecer. O que mudou e para melhor com a invenção da linguagem orientada a objetos (POO).

Mas o que é uma linguagem orientada a objetos?

Bom, em linhas curtas POO nada mais é que o jeito de programar, para atingir um objetivo sem ter de passar por etapas que não são tão importantes. Como por exemplo, tenho um programa que move a roda da frente de uma bicicleta. Neste caso fizemos uma rotina orientada ao objeto RODA e mais precisamente RODA DA FRENTE, sem antes ter que passar por outras partes da bicicleta, como por exemplo, acionar o pedal para que a roda se mova,mecanismo da catraca e da correia.

Em C++ para se criar um objeto, define-se uma class (classe em inglês).

Uma class é similar a uma struct, que veremos mais adiante.

HerançaCom certeza um dos conceitos mais utilizados na programação orientada a objetos e com certeza para se desenvolver um servidor (nosso caso).

O conceito de herança, como o próprio nome diz, é quando uma função herda atributos (variáveis) de outra. Um exemplo clássico:

Criamos uma classe pessoa e vamos criar uma função que vai herdar os atributos de pessoa.

Construtores e DestrutoresÉ comum alguma parte do objeto requerer uma inicialização antes de ser usado. Assim é possível ter uma função membro da class que tem o mesmo nome da class a qual será executada na criação do objeto. Da mesma forma temos também uma função destrutora que será usada no final quando o objeto é destruído da memoria. O destrutor tem o mesmo nome da função construtor, porem precedido de ~(til). O exemplo abaixo demonstra este conceito, que por sinal será muito utilizado por nós no decorrer do projeto, portanto vale a pena dar uma estudada a mais neles.

Hooks em arquivos executáveis.Existem por aí vários tipos de hooks (inserção do código desenvolvido em um aplicativo existente).

Comentarei sobre dois métodos de hook, mas colocarei em prática apenas um deles.

O Hook através do OllyDbg e o Hook através do lordpe. A grende diferença está, que hookando a dll pelo lordpe, a dll fará parte “nativamente” do executável, não utilizará virtual protect, portanto será mais segura em termos.
 
Topo Bottom