Mudanças entre as edições de "PRG29003: Introdução a C++"
Linha 103: | Linha 103: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
# Siga as instruções de instalação. | # Siga as instruções de instalação. | ||
+ | |||
+ | = Alguns pequenos programas = | ||
+ | |||
+ | Jogos clássicos são um bom exemplo de problemas interessantes e relativamente simples de transformar em programas. A seguir são sugeridos programas para alguns desses jogos. | ||
== Jogo da Forca == | == Jogo da Forca == | ||
Linha 136: | Linha 140: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''Um início de implementação do jogo da Forca em C++'' | ''Um início de implementação do jogo da Forca em C++'' | ||
+ | |||
+ | == Jogo da Senha == | ||
+ | |||
+ | O jogo da Senha é um jogo clássico entre dois jogadores. Um jogador escolhe uma senha, composta por uma combinação de quatro peças coloridas, e a esconde usando um pequeno anteparo. O outro jogador deve então tentar descobrir a combinação de peças, limitado por dez tentativas. A cada tentativa, o dono da senha usa uma combinação de peças brancas e pretas para informar ao desafiante quantas peças ele acertou. Cada peça preta informa que uma peça tem a cor certa e está na posição correta. Cada peça branca informa que uma peça com cor certa está em posição errada. Assim, usando raciocínio lógico, o desafiante deve ser capaz de descobrir a combinação correta de peças coloridas. A figura a seguir mostra o tabuleiro desse jogo. | ||
+ | |||
+ | |||
+ | [[imagem:PRG2-Jogo-senha.jpg|400px]] | ||
+ | |||
+ | |||
+ | == Jogo ''Craps'' == |
Edição das 14h12min de 8 de fevereiro de 2018
A linguagem de programação a ser usada se chama C++. Como indica o nome, essa linguagem é uma extensão à linguagem C, de forma a aderir ao paradigma de orientação a objetos. Como esse assunto será visto em profundidade na 4a fase, na disciplina de POO (Programação Orientada a Objetos), faremos um uso mais superficial dessa linguagem. Quer dizer, usaremos algumas de suas construções, mas não nos deteremos em seus aspectos teóricos. O objetivo de usar C++ é introduzir essa linguagem, que será usada em próximas disciplinas.
Mas o que tem de especial a linguagem C++ ? Muita coisa, se comparada à linguagem C. Veja este exemplo sobre string em ambas linguagens:
Linguagem C | Linguagem C++ |
---|---|
#include <stdio.h>
#include <string.h>
int main() {
char nome[32], sobrenome[32];
char nomeCompleto[64];
printf("Nome: ");
scanf("%32s", nome);
printf("Sobrenome: ");
scanf("%32s", sobrenome);
strcpy(nomeCompleto, nome);
strcat(nomeCompleto, " ");
strcat(nomeCompleto, sobrenome);
printf("Nome completo: %s\n", nomeCompleto);
return 0;
}
|
#include <iostream>
#include <string>
using namespace std;
int main() {
string nome, sobrenome, nomeCompleto;
cout << "Nome: ";
cin >> nome;
cout << "Sobrenome: ";
cin >> sobrenome;
nomeCompleto = nome + " " + sobrenome;
cout << "Nome completo: " << nomeCompleto << endl;
}
|
Obs: para compilar o programa C++, grave-o em um arquivo com extensão .cpp ou .cc e compile-o assim (supondo que o arquivo se chame main.cpp):
g++ -std=c++11 -o exemplo main.cpp
Esse exemplo mostra algumas diferenças entre as linguagens:
- strings em C++ são representadas por variáveis do tipo string. Valores string podem ser concatenados com o operador +.
- A leitura de dados do console (entrada padrão) se faz por meio da variável predefinida cin (console input). Essa variável cin funciona como um arquivo somente leitura, e é similar a stdin da biblioteca C padrão. No exemplo, a leitura formatada se faz por meio do operador >> (operador leitura). Outras formas de ler dados serão vistas mais adiante na disciplina.
- A escrita de dados no console (saída padrão) se faz por meio da variável predefinida cout (console output). Essa variável também funciona como um arquivo, porém somente escrita, e é similar a stdout da biblioteca C padrão. A escrita formatada de dados se faz por meio do operador << (operador escrita). Outras formas de escrever dados serão vistas mais adiante.
Esses e outros detalhes diferem entre as linguagens C e C++, mas a principal diferença entre elas reside no paradigma de programação com que foram concebidas. A linguagem C segue o paradigma de programação estruturada, e C++ segue o paradigma de orientação a objetos. Em C++, um programa é pensado como um conjunto de objetos que se relacionam com o objetivo de apresentar a solução imaginada.
Em uma aula posterior teremos um primeiro contato com classes e objetos.
Uso do NetBeans
Na disciplina recomenda-se usar o ambiente integrado de desenvolvimento (IDE - Integrated Development Environment) NetBeans. Esse software auxilia na escrita de programas, pois integra um editor de texto, um gerenciador de projetos, compilador e depurador, além de ajuda on-line e outras facilidades. Os exemplos durante a disciplina serão disponibilizados como projetos do NetBeans, mas não é obrigado utilizá-lo - pode-se trabalhar diretamente com um editor de textos (ex: gedit) e o compilador C++ (g++) e depurador (gdb), porém isso é um pouco mais trabalhoso ...
Para instalar o NetBeans siga estes passos:
- Certifique-se de que possui a máquina virtual Java instalada. Execute este comando em um terminal:
$ java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b16) Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode) $
- Se não tiver o Java instalado, faça o seguinte:
- Faça o download do instalador, escolhendo a versão adequada para o seu Linux (deve ser um arquivo .tar.gz para a versão do seu sistema operacional, se 32 ou 64 bits).
- Descompacte o arquivo do instalador dentro do seu diretório pessoal. Note que deve aparecer uma pasta chamada jre1.8.0.121 (ou algo parecido).
- Inclua esta linha ao arquivo .profile que existe em sua pasta pessoal, substituindo a versão do Java se necessário (use um editor de texto, como o gedit ou pluma):
export PATH=${PATH}:${HOME}/jre1.8.0.121/bin
- Saia da sua conta (encerre a sessão), e em seguida entre novamente.
- Faça o download do instalador do Netbeans:
- Execute o instalador em um terminal de texto. Supondo que o download foi realizado na pasta Download:
$ bash Download/netbeans-8.2-cpp-linux-x64.sh
- Siga as instruções de instalação.
Alguns pequenos programas
Jogos clássicos são um bom exemplo de problemas interessantes e relativamente simples de transformar em programas. A seguir são sugeridos programas para alguns desses jogos.
Jogo da Forca
O jogo da Forca é um jogo em que se tenta adivinhar uma palavra letra a letra. Um jogador escolhe uma palavra, e informa quantas letras ela possui. Outro jogador tenta descobrir a palavra, informando sucessivamente letras que imagina pertencer à palavra. Cada letra que não exista na palavra implica uma penalidade, acrescentando uma parte do corpo à forca, como ilustrado na figura a seguir. Se o corpo na forca ficar completo, o desafiador perde a partida.
Esse jogo pode ser facilmente implementado como um programa. Basicamente ele trata de manipulação de string e caracteres. Sendo assim, implemente esse jogo em linguagem C++.
Um bom ponto de partida é primeiro definir um protótipo que seja o mais simples posśivel, porém que contenha as características essenciais do jogo.
#include <iostream>
#include <string>
using namespace std;
int main() {
string palavra = "abacaxi"; // a palavra a ser descoberta
string incompleta = "_______"; // a parte da palavra que já está revelada
int tentativas = 7; // a quantidade de erros que podem ser cometidos
// abaixo deve-se escrever o algoritmo do jogo ...
}
Um início de implementação do jogo da Forca em C++
Jogo da Senha
O jogo da Senha é um jogo clássico entre dois jogadores. Um jogador escolhe uma senha, composta por uma combinação de quatro peças coloridas, e a esconde usando um pequeno anteparo. O outro jogador deve então tentar descobrir a combinação de peças, limitado por dez tentativas. A cada tentativa, o dono da senha usa uma combinação de peças brancas e pretas para informar ao desafiante quantas peças ele acertou. Cada peça preta informa que uma peça tem a cor certa e está na posição correta. Cada peça branca informa que uma peça com cor certa está em posição errada. Assim, usando raciocínio lógico, o desafiante deve ser capaz de descobrir a combinação correta de peças coloridas. A figura a seguir mostra o tabuleiro desse jogo.