Programar em C++/Alô, Mundo!: diferenças entre revisões

Origem: Wikilivros, livros abertos por um mundo aberto.
[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição
Sem resumo de edição
Linha 24: Linha 24:
[[Programar em C++: Operator Overloading|Operator Overloading]]
[[Programar em C++: Operator Overloading|Operator Overloading]]
[[Programar em C++: Inherence|Inherence]]
[[Programar em C++: Inherence|Inherence]]
[[Programar em C++: Polymorphism|Polymorphism]]
[[Programar em C++: Polimorfismo|Polimorfismo]]
[[Programar em C++: Virtual Members|Virtual Members]]
[[Programar em C++: Virtual Members|Virtual Members]]
[[Programar em C++: Templates|Templates]]
[[Programar em C++: Templates|Templates]]
Linha 216: Linha 216:
[[Programar em C++: Operator Overloading|Operator Overloading]]
[[Programar em C++: Operator Overloading|Operator Overloading]]
[[Programar em C++: Inherence|Inherence]]
[[Programar em C++: Inherence|Inherence]]
[[Programar em C++: Polymorphism|Polymorphism]]
[[Programar em C++: Polimorfismo|Polimorfismo]]
[[Programar em C++: Virtual Members|Virtual Members]]
[[Programar em C++: Virtual Members|Virtual Members]]
[[Programar em C++: Templates|Templates]]
[[Programar em C++: Templates|Templates]]

Revisão das 20h51min de 5 de agosto de 2006



1º Programa Vamos começar com um programa que apesar de ser simples já tem quase todos os conceitos da linguagem, vejamos

Source Code Resultado
//o meu primeiro programa
/* é melhor memorizar estas linhas as vamos usar muitas vezes*/
#include <iostream>
using namespace std;
int main ()
{
  int a;
  cout << “Hello world! Digite um número:\n”;
  cin >> a;
  cout << “digitou o número: “ << a <<”\n”;
  cout << "Prima qualquer tecla para continuar… ";
  system (“pause”);
  return 0;
}
Hello world! Digite um número:
3
Digitou o número: 3
Prima qualquer tecla para continuar… 



//o meu primeiro programa /* é melhor memorizar estas linhas as vamos usar muitas vezes*/

Esta é uma linha de comando, o précompilador ao analisar o código encontra a sequência “//” e vai eliminar o texto que está a seguir até ao fim da linha. A linguagem C++ permite também fazer comentários por mais do que uma linha, chama-se comentário por bloco e o que faz é eliminar tudo o que encontrar entre a sequencia inicial /* e o final */. A vantagem de temos esta possibilidade é podermos comentar o nosso código. Existem algumas regras de boas conduta para comentários que foram feitas por pessoas que já têm muito tempo nisto: - uma é criar logo no topo um comentário a dizer o que é o nosso programa faz numa forma geral – outra é fazer comentários a cada função que aparece no código a explicar. - Outra é comentar uma linha mais obscura, mais difícil de entender, que não é óbvia. - A outra é não comentar tudo. o comentar deve ser para sobressair.



#include <iostream>

O símbolo “#” é uma chamada de atenção ao compilador a dizer que aquela linha é para o pré-processador. O pré-processador apenas faz umas alterações ao código fonte, que basicamente consistem em eliminar pedaços de código que escrevemos, e/ou substituir pedaços de código que escrevemos por outro (copy-paste), enfim, é alterar o código fonte por outro código fonte.

Depois temos o “include” (que basicamente diz para incluirmos código). Incluir o quê? Deve incluir o ficheiro iostream . (in+out+stream  fluxo de entrada e saída, padronizadas) (como entrada padronizada temos o teclado e como saída temos o monitor) (este ficheiro contem declarações para funções que o nosso source code irá necessitar)

Existem outros arquivos (ficheiros biblioteca), o iostream é para fluxos de entrada e saída mas temos muitos mais como para matemática,, a de tempo, …. Podemos ver na parte dos anexos, algumas que existem e com as funções de cada uma. Mais, nós próprios podemos criar uma biblioteca. E até podemos comprar bibliotecas existem imensas aí.

Mas o que é que é isto de bibliotecas. É código que alguém fez antes. As que enunciamos antes são as standard, são aquelas que têm as funcionalidades básicas. Repare-se que precisamos da biblioteca até para escrever no ecrã (stream + out) que nos permite utilizar a função cout.

O ficheiro iostream está envolvido em < >, isto significa que o précompilador deve procurar o ficheiro no sitio usual (que é onde o programa está instalado. o programa que falo é o compilador). Se tivéssemos o ficheiro iostream envolvido em “” significaria que o précompilador deveria procurar em qualquer local no computador.

Na verdade estas bibliotecas são compostas por 2 partes: um índex de todas as funções e depois a definição de todas as funções existentes no índex.

As directivas de preprocessamento não terminam com o ponto e virgula como nas instruções.



using namespace std;

Esta linha é a que nos permite poupar de escrever tanto. nós no programa utilizámos apenas “cout” se não tivéssemos inserido esta linha teríamos de escrever std::cout. Assim o uso da linha namespace std evita o uso de std:: antes do cout.

O C++ usa os namespace para organizar os diferente nomes usados nos programas. Cada nome usado no ficheiro biblioteca standard iostream faz parte do namespace chamado de std.

namespace --isto permite que as variáveis sejam localizadas em certas regiões do código. namespace std – permite que todos os objectos e funções da biblioteca standard input-output possam ser usadas sem qualquer qualificações especificas.

isto é um conceito avançado - vamos deixar isto para o fim.



int main(){}

É a função principal. A programação em C++ é utilização de funções atrás de funções. Esta função main () é a tal com que vamos chamar as outras. Por isso mesmo ela é obrigatória em qualquer programa. Mais! Ela é a primeira função a correr e quando o programa acabar de correr a função main() o programa acaba! Se não existisse uma main function, o computador não saberia como começar o programa. Se existissem várias main functions, também não saberia por qual começar

() Repare-se que todas as funções têm ( ), só assim é que o compilador reconhece que é uma função. A ideia de ter funções é permitir o encapsulamento de uma ideia ou operação, dar um nome a isso e depois chamar essa operação de várias partes do programa simplesmente usando o seu nome.

int O int significa que a função vai retornar um inteiro. Temos mas tipologias de dados como poderemos verificar mas já podemos avançar as seguintes int que é a abreviatura de inteiro char que é a abreviatura de caratere float que é a abreviatura de floating number, ou seja um número real …

{} O compilador ao ver as chavetas compreende aquilo como um bloco, ou body corpo. O corpo de uma função começa com { e termina com } como temos as instruções bem separadas já não há necessidade de colocar o “;” no final para indicar onde é o fim do bloco. No nosso exemplo existem 2 instruções no corpo da função. As instruções são executadas por ordem: do topo até ao fim a menos que funções que alterem a leitura – execution code Control


cout << “Hello world! Digite um número:\n”;

(c+out) Podemos utilizar esta função porque pusemos no header o namespace std e que terá acção via o iostream. O que esta função nos permite é enviar o que temos entre aspas para o monitor (out).

O fluxo de dados pode ter 2 direcções: • input – do exterior do programa para o interior - para o programa. Esse exterior pode ser, de um ficheiro guardado no computador como pode ser do teclado • output – é na direcção para o exterior, ie, do nosso programa para o exterior que pode ser o monitor, uma impressora ou um ficheiro.

O cout envia então dados para o standard output device, que é usualmente o monitor. Depois temos o operador << - que é o operador de inserção de dados. Insere a informação sequente ao operador. O cout é um objecto da biblioteca standard que tem como um dos “method” imprimir strings para o standard output (que normalmente é o ecrã). O linker do compilador irá ligar este código com o das bibliotecas standard para produzir o executável.

Mas temos a hipótese de poder formatar o texto enviado, por exemplo se acrescentássemos \n a meio tipo: cout<<("este é o resultado do \n meu primeiro programa! "), o resultado seria chegar ao fim do output e teríamos uma nova linha. experiementem!

cin >> a;

(c+in) o que esta linha o que faz é colocar o valor que foi digitado num pedaço de memória a que foi chamado de “a”. Também só a conseguimos usar porque declarámos antes que estamos a usar o namespace=std que contém o descritivo desta função, e vamos executá-la via o “in+stream” – fluxo de dados de entrada.


cout << “digitou o número: “ << a<<”\n”;

Aqui voltamos a utilizar a função cout primeiro para imprimir no ecrã a frase “digitou o número: “ depois vai buscar o valor que está naquele pedaço de memória a que chamámos de “a” e por fim coloca a formatação de fim de linha através de “\n”


system ("pause");

Coloquei esta linha para que o programa não finaliza-se sem que pudéssemos ver uma janela com o resultado, se não o fizesse a janela abria-se e fechava sem que nos apercebêssemos de que o programa tinha corrido, devido á rapidez

return 0

Faz com que a função retorne o valor zero que é o fim da execução do programa. Repare-se que podíamos ter posto return (0) que até seria mais correcto (pois é uma função), mas como o valor é zero, o compilador aceita. Esta instrução manda retornar o valor zero para o sistema operativo (Windows, Unix,..). Este zero representa a dizer que o programa finalizou normalmente. Pode acontecer que o programa não finalize como seria de esperar, ele tem um crash (ou porque ficou com falta de memória.). O sistema operativo necessita de lidar com estas terminações abnormais de uma forma diferente das normais. Por isso é que o programa diz ao sistema operativo que terminou normalmente

Questão: porque é que o sistema operativo necessita de saber que o programa terminou bem?


;

O ponto e virgula é importante nesta linguagem toda, funciona tipo o ponto final, separa as frases e contextos. Repare que apenas as funções, ou melhor a declaração das funções e as directivas de préprocessamento é que não têm e o “;” isto do “;” é tão importante que o código podia ser todo escrito quase numa linha tipo: int main (){int a; cout << “Hello world! Digite um número:\n”; cin >> a;cout << “digitou o número: “ << a<<”\n”; system (“pause”); return 0;} É realmente o ; que faz a terminação das instruções.

E isto permite ainda uma segunda lição que é os espaços em branco não interessam ao compilador mas para nós torna o código muito mais legível.