1. Introdução à Programação

1.1 Definições Iniciais

1.1.1 Lógica de Programação

Pode-se pensar em lógica como a "arte de bem pensar" ou "a ordem correta do pensamento". No dia-a-dia utiliza-se lógica para organizar os pensamentos, como:

  1. A gaveta está fechada
  2. O grampeador está dentro da gaveta.

Assim, deve-se abrir a gaveta para pegar o grampeador, ou ainda,

  1. Luciane é mais velha que Claudia.
  2. Claudia é mais velha que Marcos.

Portanto, Luciane é mais velha que Marcos.

Já a lógica na programação envolve o uso correto do raciocínio objetivando o desenvolvimento de técnicas que cooperem para a produção de soluções logicamente válidas e coerentes, resolvendo com qualidade os problemas que se deseja programar.

Da mesma forma que um mesmo raciocínio pode ser representado em diversos idiomas, a lógica de programação independe da linguagem utilizada, sendo, portanto, empregado o uso de algoritmos.

1.1.2 Algoritmo

Para resolver um problema computacional utiliza-se algoritmo, que é uma sequência finita de passos para atingir um objetivo bem definido. No dia-a-dia, algoritmos são utilizados constantemente em situações como trocar pneu de um carro, fazer uma omelete, buscar as crianças na escola, etc.

Na elaboração de um algoritmo devem ser especificados passos claros e precisos, que partindo de um estado inicial, após um período de tempo finito, produzem um estado final previsível e bem definido.

A descrição de um algoritmo pode ser feita através de pseudocódigo — linguagem semelhante à natural, com algumas regras comuns às linguagens de programação — ou de fluxogramas — representados por desenhos. A implementação de um algoritmo é chamado de programa, ou seja, a codificação de um algoritmo em alguma linguagem de programação.

1.1.3 Linguagem de programação e Compilador

Da mesma forma que nós, seres humanos, precisamos de uma linguagem para nos comunicar, uma linguagem de programação serve de comunicação entre o indivíduo que deseja resolver um determinado problema e o computador escolhido para ajudá-lo na solução.

Entretanto, o computador entende apenas a linguagem de máquina, dita de baixo nível, que consiste de sequências de zeros e uns. Assim, programar em uma linguagem de baixo nível é mais difícil e trabalhoso para o programador.

Atualmente, as linguagens de programação mais utilizadas são aquelas ditas de alto nível, consideradas mais próximas da linguagem humana, sendo, portanto, mais fáceis que linguagens de baixo nível. C++ é um exemplo de linguagem de alto nível.

Todavia, linguagem de alto nível não é a linguagem que o computador entende. Assim, o programador deve usar um compilador para converter o programa feito em linguagem de alto nível para código em linguagem de máquina. Caso existam erros de sintaxe no programa, a conversão não é realizada.

1.2 IDE (Integrated Development Environment) Code::Blocks

Code::Blocks é um Ambiente de Desenvolvimento Integrado (IDE) free para a linguagem C/C++. O Code::Blocks é multiplataforma operacional, ou seja, a mesma versão funciona em sistemas operacionais Linux, Mac e Windows. Consequentemente, todos os projetos criados no Code::Blocks funcionam em diferentes sistemas operacionais.

O Code::Blocks é um IDE que pode ser adaptado para funcionar com várias linguagens derivadas de C/C++, mas na disciplina de BAC004 será utilizada a versão do Code::Blocks que possui um compilador C/C++ embutido similar ao gnu C++ (gcc) do Linux.

Visite o site do Code::Blocks e baixe a versão binária para seu sistema operacional preferido.

Sugestões para download:

No site também pode ser encontrado um manual de uso mais detalhado do IDE nas línguas inglesa, alemã e francesa.

Para aqueles que possuem o sistema operacional Ubuntu instalado em sua máquina pode-se adicionar o repositório https://launchpad.net/~pasgui/+archive/ppa/.

1.2.1 Iniciando no Code::Blocks

codeblocks0.png

As figuras nesta seção mostram a versão 10.05 do Codeblocks, mas a versão 12.11 segue os mesmos parâmetros.

Ao iniciar o Code::Blocks será aberta a janela da Figura ao lado. Nota-se que abaixo das opções e ícones do IDE, existem 3 janelas embutidas:

  1. Management;
  2. Start Here;
  3. Log & Others.

Na janela Management existem 3 pequenas abas:

  1. Projects: um projeto no Code::Blocks consiste em uma pasta e um arquivo de configuração contendo informações à respeito dos arquivos existentes na pasta. Mas o Code::Blocks também pode compilar um único arquivo C/C++ sem a necessidade de criar um projeto. É recomendado, fortemente, que todos os programas desenvolvidos na disciplinas estejam organizados em projetos.
  2. Symbols: um símbolo no Code::Blocks podem ser de vários tipos: funções globais, definições de tipos globais, variáveis globais, símbolos de pré-processadores da linguagem, macros globais, entre outros. Cada um desses tipos de símbolos serão vistos de acordo com o andamento da disciplina.
  3. Resources: um recurso é um objeto gráfico existente para programação na interface gráfica do Windows. Nesta disciplina não serão utilizados esses tipos de objetos devido à necessidade de se aprofundar em outros conceitos.

Na janela Start Here existem alguns links que levam as opções:

  1. Create a new project - criar um novo projeto;
  2. Open an existing project - abrir um projeto existente em alguma pasta do sistema;
  3. Visit the Code::Blocks forums - abrir o link de fórum do site do Code::Blocks;
  4. Report a bug - abrir um link para relatar algum defeito de uso do Code::Blocks;
  5. Request a new feature - abrir um link para sugerir alguma nova funcionalidade no Code::Blocks;
  6. Recent projects - mostra uma lista recente de projetos criados no Code::Blocks no sistema operacional;
  7. Recent files - mostra uma lista recente de arquivos criados no Code::Blocks, que podem estar ou não vinculados a algum projeto.

Na janela Log & Others existem algumas abas que mostram históricos de compilações, erros de programação, criação de executáveis e de ferramentas de Depuração (debug). As mensagens mostradas nestas abas serão analisadas no decorrer da disciplina. É importante que cada mensagem contida nestas abas seja entendida para que se minimizem os erros de lógica e de programação dos programas.

O Code::Blocks permite duas formas de criar arquivos em C/C++:

  1. Criando um arquivo C/C++;
  2. Criando um projeto;

1.2.2 Criando um arquivo C/C++

Esta é a forma mais simples de começar a programar em linguagem C/C++. Para criar um programa inicial em C/C++, realize os seguintes passos:

  1. Clique na opção do menu: File, escolha New depois selecione File….
  2. Na janela aberta, escolha o ícone C/C++ Source;
  3. Clique no botão Go;
  4. Na janela aberta, clique no botão Next;
  5. Na janela aberta, escolha a opção C++;
  6. Depois clique no botão "…" (três pontinhos) para selecionar a pasta onde será criado o arquivo;
  7. Escolhida a pasta, dê um nome ao arquivo. Por exemplo: olamundo.cpp1
  8. Clique no botão Salvar;
  9. Clique no botão Finish;

Para testar o seu arquivo digite o código a seguir:

#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

Para compilar e executar seu programa, tecle F9.

1.2.3 Criando um projeto

Um projeto no Code::Blocks consiste em criar uma pasta contendo um ou mais arquivos escritos na linguagem C/C++. É uma boa prática de programação para organizar seus programas.

Para criar um novo projeto siga os passos:

  • Clique em File;
  • Selecione a opção New e depois clique em Project…;

Siga a sequência de imagens e observe os textos inseridos abaixo de cada Figura.

codeblocks1.png

1 - Escolha o tipo de projeto "Console Application" e clique depois em "Go"

codeblocks2.png

2 - Clique em "Next"

codeblocks3.png

3 - Escolha "C++" e clique em "Next"

codeblocks4.png

4 - Digite o título do projeto e escolha a pasta ("folder") que será criado o projeto

codeblocks5.png

5 - Escolha o compilador ("compiler") - GNU GCC Compiler

Ao término da execução destas janelas será criado um item janela Management do Code::Blocks, mais precisamente na aba Workspace.

Clique no ícone que é semelhante à uma pasta denominada "Sources" e clique no arquivo main.cpp que terá um conteúdo semelhante ao código C/C++ a seguir.

#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

O nome do arquivo main.cpp pode ser alterado, é obrigatório somente que exista a função main descrita no arquivo.

Para compilar e executar seu programa, tecle F9.

1.3 Estrutura básica de um programa em C/C++

Um programa C/C++ consiste na definição de uma ou mais funções. Na listagem a seguir é apresentada a forma geral de definição de função, que possui um tipo de dado e um nome acompanhado de parênteses. A seguir, deve-se inserir uma chave de início { (abre chaves) de bloco de comandos, escrever as instruções no corpo da função e terminar com uma chave de fechamento } (fecha chaves) do bloco.

tipo nome_da_funcao()
{ // início do bloco de comandos/instruções
  // instrução 1
  // instrução 2
  // instrução ..
  // instrução N
} // final do bloco de comandos/instruções

Todo programa C/C++ deve possuir uma função chamada main — do inglês “principal”, na qual a execução se inicia após a chave de início do bloco de comandos e, após executar as instruções contidas no corpo da função, termina quando é encontrada a chave de fechamento de bloco. Verifique que no início do programa é necessária a inclusão de uma ou mais bibliotecas, necessárias para a execução de comandos utilizados no decorrer do programa. Caso haja mais de uma biblioteca, deve-se inclui-la com #include <biblioteca>.

#include <biblioteca>
int main ()
{
  //instrução_1;
  //instrução_2;
  //    ...
  //instrução_n;
  return 0;
}

1.3.1 Primeiro Programa

Na listagem a seguir é apresentado o primeiro exemplo de programa, cuja finalidade é calcular e imprimir a soma de dois números inteiros passados pelo usuário.

#include <iostream>;  // Biblioteca para entrada e saída de dados
using namespace std;  // Métodos default para entrada e saída de dados
 
// função principal do programa C/C++
int main ()
{
  // Variáveis para entrada de dados: num1 e num2
  // Variável soma para receber o cálculo do valor de num1 somado com o valor de num2
  int num1, num2, soma;
 
  // Mensagem para o usuário e "pula uma linha"
  cout << "Soma de dois numeros" << endl;  
  // Mensagem para o usuário digitar o valor para a variável num1
  cout << "Entre com o primeiro numero: ";
  // Faz a leitura do valor digitado pelo usuário e o atribui para a variável num1
  cin >> num1;
  // Mensagem para o usuário digitar o valor para a variável num2
  cout << "Entre com o segundo numero: ";
  // Faz a leitura do valor digitado pelo usuário e o atribui para a variável num2
  cin >> num2;
  // Efetua o cálculo da soma entre num1 e num2 e o atribui para a variável soma
  soma = num1 + num2;
  // Mensagem para o usuário com o resultado do cálculo que foi atribuída a variável soma
  cout << "A soma é: " << soma << endl;
  // Retorna o valor 0 para o sistema operacional, indicando que não houve nenhum erro de execução do seu programa
  return 0;
}

Pode-se digitar o código da listagem no Code::Blocks e salvá-lo com o nome soma.cpp. A extensão de arquivo .cpp indica que o arquivo é um programa feito na linguagem C/C++. O programa acima possui apenas instruções na função main (principal). O nome de uma função pode ser qualquer um2, com exceção de main(), reservado somente para a função que inicia a execução do programa. Se um programa for constituído de uma única definição de função, esta será main(). O programa escrito na linguagem C/C++ termina quando for executada a última instrução da função main.

A função main() do programa apresentado é do tipo int, que indica que a função possui valor de retorno, que neste caso, será "interceptado" pelo sistema operacional.

1.3.2 Instruções de Programa

Geralmente, as instruções C++ terminam em um ponto-e-vírgula (;). O primeiro programa soma.cpp possui várias instruções e comentários3 que são executadas sequencialmente.

  1. Instrução cout (pronuncia-se "C out"): é a instrução associada à saída padrão (stdout), geralmente o vídeo/monitor. Os símbolos << conectam a mensagem a ser impressa à instrução cout. As definições e declarações necessárias para seu uso estão contidas na biblioteca iostream que também contém os elementos necessários para a execução de operações de leitura e impressão I/O — (Input/Output).
  2. Instrução cin (pronuncia-se "C in"): que é a instrução que manipula toda a entrada do teclado por meio do usuário. Os símbolos >> conectam a entrada de dados à variável que a conterá. As definições necessárias ao uso da instrução cin e >> estão na biblioteca iostream.

1.3.3 Teste de Mesa

Um recurso muito utilizado para verificar erros de lógica em um algoritmo é a simulação ou Teste de mesa. Alguns autores da área de Engenharia de Software consideram que todo programa implementado deve ter suas instruções testadas. Para isso, a partir de dados escolhidos com resposta conhecida simula-se a execução do algoritmo ou programa e compara-se a resposta obtida com a resposta esperada. Se não houver coincidência está detectado um defeito de software que pode levar a erros de execução.

Saber escolher os dados para os testes é de muita importância na simulação. Assim, deve-se escolher amostras de dados de forma que provoquem a execução de todas as instruções presentes no algoritmo ou programa, testando todas as diferentes possibilidades de saída.

Para realizar o teste de mesa são listadas todas as variáveis utilizadas no algoritmo e registrados todos os valores assumidos pelas variáveis, na ordem em que ocorrem. Para localizar facilmente a variável que foi definida ou alterada em um dado momento, é conveniente identificar com um número cada uma das instruções contidas no algoritmo. Na Tabela a seguir estão representadas as linhas, variáveis e saída (mensagens) do programa soma.cpp descrito anteriormente. O termo lixo descrito na Tabela generaliza sequências de código existentes na memória do computador no momento da execução. Os valores em negrito significam que acabaram de serem atribuídos às variáveis correspondentes.

Linha Variáveis Saída
[] num1 num2 soma
9 lixo lixo lixo
12 lixo lixo lixo Soma de dois números
14 lixo lixo lixo Entre com o primeiro número
16 12 lixo lixo
18 12 lixo lixo Entre com o segundo número
20 12 7 lixo
22 12 7 19
24 12 7 19 A soma é 19
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License