Archive for the ‘C++: De Aprendiz a Mestre!’ Category

C++: De Aprendiz a Mestre! – Random Numbers

Aprender a programar passa sempre por experimentar código, aprendendo e percebendo o que ele faz na realidade. Não podemos limitar-nos a ler o código e “decorar” o que ele possívelmente fará.

Hoje experimentei 2 casos para a obtenção de números aleatórios.

Obter apenas 1 número aleatório:

1
2
3
4
5
6
7
8
9
10
#include<iostream> 
#include<cstdlib>
 
 using namespace std;
 
 int main()
 {
 	int random_number = rand();
	cout < < random_number << endl;
 }

Para a obtenção de números aleatórios usamos a função rand() que nos permite gerar um número aleatório sem qualquer restrição.

Obter vários números aleatórios:

Usando um ciclo for:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream> 
#include<cstdlib>
 
 using namespace std;
 
 int main()
 {
 	for (int i = 0; i < 5; i++)
 	{
 		int random_number = rand();
		cout << random_number << endl;
  	}
 }

Usando um ciclo while:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream> 
#include<cstdlib>
 
 using namespace std;
 
 int main()
 {
 	int i = 0;
 
 	while(i < 5)
 	{
 		int random_number = rand();
		cout << random_number << endl;
 
		i++;
  	}
 }

Para obtermos vários números aleatórios basta adicionar um ciclo for ou while ao código já apresentado.

No entanto é possível também gerar números aleatórios num intervalo bem definido.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdlib> 
#include <ctime> 
#include <iostream>
 
using namespace std;
int main() 
{ 
    srand((int)time(0)); 
    int random_number; 
 
    for(int i = 0; i < 5; i++)
    { 
        random_number = (rand()%10) + 1; 
        cout << random_number << endl; 
    } 
}

Neste exemplo vamos gerar 5 números aleatórios compreendidos entre o intervalo [0 e 10].

Share

Por vezes na programaçao em C e C++ necessitamos de converter um tipo de dados num outro tipo de dados diferente para que possamos prosseguir com a implementação de um qualquer tipo de funcionalidade. Para isso é necessário efectuar um “type casting”.

Exitem situações em que o cast é implicito. Neste caso a conversão é feita automáticamente sem que o programador necessite de fazer seja o que for.

Exemplo 1:

1
2
char a = 3;
int i = a;

Exemplo 2:

1
2
int i = 123456789;
char a = i;

Neste exemplo alguns compiladores irão gerar alguns avisos devido à variável a que é um char não ter capacidade para armazenar todos os dados.

Conversão Explicita de tipos de Dados:

A forma correcta de efectuar-mos o casting de dados é a seguinte:

Exemplo:

1
2
int i = 123456789;
char a = (char)i;
Share

C++: De Aprendiz a Mestre! –> Porquê Evitar o “void main()”

O mundo da programação é um mundo complexo e cheio de pequenos pormenores que podem ditar a excelência da codificação. Em C++ existem coisas que os “programadores” as vezes fazem, mas que na realidade nunca o deveriam fazer.

Numa fase incial a programação em C/C++ assenta sobre a função main() onde são declaradas as funcionalidades da aplicação ou chamadas outras funções.

Segundo os “gurus” do C/C++ a função main() é uma função que retorna um inteiro e como tal deve ser especificada como tal.

 

1
2
3
4
5
6
7
8
9
#include<iostream>
 
using namespace std;
 
int main()
{
     return 0;
}
</iostream>

 

Sobre este assunto encontrei os seguintes artigos que abordam de uma forma mais aprofundada esta situação:

http://www.eskimo.com/~scs/readings/voidmain.960823.html
http://users.aber.ac.uk/auj/voidmain.shtml
http://home.att.net/~jackklein/ctips01.html#int_main

Assim posso decididamente afirmar que declarar a função main() como void main() é:

– Errado segundo as normas do C/C++
– Não garante a correcta execução da aplicação
– Pode causar inconsistencias entre a aplicação e o sistema operativo.

Share

 

Na continuação da minha apredizagem da programação usando a linguagem de Programação C++, hoje decidi implementar um pequeno programa de calculo de dois números usando classes. Eu não me considero um completo novato na pogramação, uma vez que já sou capaz de programar com aluma fluidez em C, mas ainda não estou nada familiarizado com a programação usando o paradigma de programação orientada a objectos.

Aqui fica o código fonte que desenvolvi:

Soma.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#pragma once
 
#include<iostream>
 
using namespace std;
 
class Soma
{
 
private:
	float valor_1;
	float valor_2;
public:
	Soma(void);
	virtual ~Soma(void);
 
	//Métodos de Acesso de Leitura
	float getValor_1() const{return valor_1;}
	float getValor_2() const{return valor_2;}
 
	//Métodos de Acesso de Escrita
	bool setValor_1(const float valor_1);
	bool setValor_2(const float valor_2);
 
	//Metodo Calculo da Soma
	void Somar(void) const;
};</iostream>

Soma.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "Soma.h"
#include<iostream>
 
using namespace std;
 
Soma::Soma(void)
{
	this -> valor_1 = 0;
	this -> valor_2 = 0;
}
 
Soma::~Soma(void)
{
}
 
bool Soma::setValor_1(const float valor_1)
{
	this -> valor_1 = valor_1;
	return true;
}
 
bool Soma::setValor_2(const float valor_2)
{
	this -> valor_2 = valor_2;
	return true;
}
 
void Soma::Somar(void) const
{
	float resultado = 0;
	resultado = valor_1 + valor_2;
 
	cout < < "Resultado = " << resultado <<  endl;
 
}

main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
#include"Soma.h"
 
using namespace std;
 
int main()
{
	Soma S1;
 
	float x, y;
 
	cout < < "Introduza o 1o Numero: ";
	cin >> x;
	cout < < endl << "Introduza o 2o Numero: ";
	cin > y;
 
	S1.setValor_1(x);
	S1.setValor_2(y);
 
	S1.Somar();
 
	system("PAUSE");
}</iostream>

Não sei se este pequeno exemplo que implementei está correcto ou se estou a cometer algum erro básico, pelo que todas as opiniões serão tidas em conta.

Share

C++: De Aprendiz a Mestre! –> Tutoriais na Internet!

Para que se possa aprender seja o que for temos de pesquisar e inteirar-nos das principais informações sobre o assunto. Aprender a programar também passa por aí, mas não só.

Aprender a programar é muito mais do que estudar a as características e sintaxe da linguagem de programação em questão.

É necessário exercitar e aplicar esses conhecimentos a exercícios práticos e assim conseguir resolver e adaptar os nossos conhecimentos às particularidades da programação e da algoritmia.

A internet é uma grande fonte de informação, e contém toda a informação essencial para aprender a programar, por esse motivo eu apresento um conjunto de link’s com boa informação para quem quer aprender a programar usando a linguagem de programação C++.

http://www.cplusplus.com/
http://www.cprogramming.com/tutorial/c++-tutorial.html
http://lazyfoo.net/SDL_tutorials/

No entanto todos estes recursos e mais alguns não são o suficiente para aprender a programar, ter uma boa força de vontade, espírito crítico e criador são aspectos fundamentais.

Related Posts Plugin for WordPress, Blogger...Share