sábado, 5 de maio de 2012

Regeit Commands

o if é um comando de condição
exemplo:

if(a>b)then
....a=5;

else é o contrario do if
exemplo:

if(a>b)then
.....a=5
else
....a=4;

o while é uma condição de repetição:
exemplo:

while(a>b)do
....a=a+1;
end;

tem o repeat tbm
exemplo:

repeat
.....a=a+1;
until(a=5);

array é um vetor, uma lista mesmo
exemplo de um array chamado vetor com duas posições:

vetor[1] = 2;
vetor[2] = 3;

Usando Comandos de Sistema MS-DOS

Uma boa medida que podemos tomar em nossos algorítmos é transmitir ao computador comandos básicos de sistema operacional. E não existe nada mais básico do que comandos de sistemas monotarefas, como por exemplo o DOS.

Saber comandos de sistema pode ajudar fazer grandes coisas com pouco código, como por exemplo, criar ou abrir uma pasta, exibir o horário do sistema, verificar em que sistema operacional o seu programa está rodando, etc.

Para indicar uma linha de comando ao sistema basta usar a função SYSTEM que está na biblioteca padrão de C (stdlib.h) e de C++ (cstdlib).

Esta função deve ser digitada da seguinte maneira: 1° digite o nome da função depois seu argumento entre parênteses. O comando deve ser escrito entre aspas, pois ele é string.

Abaixo estão os comandos mais básicos de DOS. A maioria desses comandos também funciona no konsole do Linux.
comando     descrição
cd PASTA     abre uma pasta
chdir PASTA     abre uma pasta
cls     limpa a tela
color XX     mudar a cor da tela. XX é um hexadecimal onde o primeiro número é a cor do fundo e a segunda é a cor da letra.
copy ORIGEM DESTINO     copia o arquivo de origem para o seu destino.
date/t     mostra a data do sistema, sem alterá-la.
dir     exibe uma lista de arquivos e subpastas em
diskcopy UNIDADE1 UNIDADE2     copia o conteúdo de um disquete para o outro.
md PASTA     cria uma pasta
mem     mostra a memória utilizada e livre do sistema.
mkdir PASTA     cria uma pasta.
pause     pausa o programa e solicita o pressionamento de uma tecla para continuar
time/t     mostra a hora do sistema, sem alterá-la.
title NOME     define um nome para a janela do prompt.
tree     mostra a estrutura de pastas de uma unidade de forma gráfica
ver     mostra a versão do sistema operacional
vol     mostra o nome e o número de série do volume, caso haja um.

No exemplo abaixo, tem um programa escrito com vários comandos de DOS.

Esse programa fará o seguinte:

Mudará o nome da janela para - EXEMPLO DE COMANDOS.

Mudará a cor do fundo e da letra do prompt.

Mostrará em qual pasta está sendo executado o programa.

Verificará a versão do sistema.

Mostrará o nome e número de série do sistema.

Exibirá quanta memória foi utilizada.

Limpará a tela.

Exibirá a data e a hora do sistema.

e pedirá que seja pressionada uma tecla antes de fechar o programa.
01.#include <stdio.h>
02.#include <stdlib.h>
03.
04.int main (void){
05.system ("color 17");
06.system ("title EXEMPLO DE COMANDOS");
07.printf ("Programa executado em:\n");
08.system ("cd");
09.printf ("\nRodando em sistema:");
10.system ("ver");
11.printf ("\nNo volume:\n");
12.system ("vol");
13.printf ("\n");
14.printf ("Verificando memoria...");
15.system ("mem");
16.printf ("\n");
17.system ("pause");
18.system ("cls");
19.system ("color 80");
20.printf ("programa completamente executado em\n");
21.system ("date/t");
22.printf ("as ");
23.system ("time/t");
24.printf ("\n\n");
25.system ("pause");
26.}
Faça o Download deste Código


É comum, no aprendizado de uma linguagem de programação, que seu primeiro programa faça com que o computador exiba "Olá mundo!". Na linguagem C++ este primeiro programa já introduz muitos conceitos sobre a linguagem. Veja o código do nosso primeiro programa:

#include <iostream>

using namespace std;

int main ()
{
  cout << "Olá mundo!";
  return 0;
}

Assim como para começar a dirigir não é necessário saber toda a mecânica do carro, para programar não precisamos logo de início nos prender a todos os detalhes.

No programa acima, vamos dar atenção apenas ao conteúdo que se encontra entre as chaves:

 {
   cout << "Olá mundo!";
   return 0;
 }

    cout << "Olá mundo!";

A palavra cout vem de Console OUT (saída do console), onde geralmente temos a saída no monitor. O cout é seguido do operador << e da frase que se quer informar entre aspas: "Olá mundo!", intuitivamente, isso nos leva a ideia de que a sequência de caracteres será levada ao cout.

    return 0;

Este comando termina o programa, o estudaremos melhor no capítulo sobre funções e retornos.


ATENÇÃO:

Caso seu sistema operacional seja o Microsoft Windows, você deve adicionar imediatamente antes de return 0; a seguinte linha:

    system ("pause");

A função system() executa um comando do Windows. É como se o próprio usuário digitasse pause no prompt do MSDOS. Este comando deve ser evitado, pois diminui a portabilidade do programa, já que pause só existe nos sistemas Microsoft. No entanto, se está usando Windows é necessário adicionar esta linha, caso contrário o computador escreveria "Olá mundo!" e fecharia o programa antes que pudéssemos ler qualquer coisa. Uma forma elegante de lidar com estas peculiaridades do Windows é usar predefinições, de forma que o programa seja portável para qualquer sistema operacional:

#if defined(_MSC_VER)
// estas linhas serão executadas apenas quando o programa
// for compilado por alguma versão do Microsoft Visual C
  system("pause");
#endif

Em sistemas parecidos com UNIX, como GNU/Linux ou FreeBSD, pode-se usar um terminal de linha de comando facilmente, pois os mesmos possuem o recurso facilmente acessível, mesmo quando o usuário está usando a interface gráfica. Por isso, para esses sistemas um comando para solicitar pausa ao sistema não é necessário.
[editar] Entrada de dados e comentários no código

Comentário é um recurso muito útil em programação. Ele permite que o programador adicione texto ao programa para facilitar o entendimento do programa por parte de outros programadores, ou até dele mesmo. Os comentários são usados para explicar trechos de código, adicionar cláusulas e qualquer texto em geral.

Vamos agora para um programa mais completo com entrada de dados e comentários dentro do código:

// Este é um comentário de uma linha

/*
  Este é
  um comentário
  de várias
  linhas
*/

#include <iostream>

using namespace std;

int main ()
{
  int x;
  cout << "Digite um número: ";
  cin >> x;
  cout << "\nVocê digitou o número: " << x << endl;
  system ("pause");
  return 0;
}

[editar] Comentários no programa

Observemos esta linha:

 // Este é um comentário de uma linha

Esta é uma linha de comando para o preprocessador (ou precompilador).

O que é o preprocessador? Durante o processo de montagem do programa em formato binário existem três fases principais: O preprocessamento, a compilação e a fase de ligação (link). O preprocessador é um programa invocado pelo compilador para remover comentários e substituir certas partes do programa conforme a necessidade do código criado pelo programador.

O preprocessador faz algumas alterações no texto fonte, que basicamente consistem em eliminar pedaços de código e/ou substituí-los por outros (copy-paste). Enfim, o mesmo altera o código fonte contendo comandos iniciados com # e outros comandos específicos, por outro código sem comandos de preprocessamento, puramente em linguagem C++.

Ao analisar o código, o preprocessador encontra a sequência // e vai eliminar o texto que está a seguir até ao fim da linha.

Mais uma forma de adicionar comentários:

/*
 Este é
 um comentário
 de várias
 linhas
*/

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 sequência inicial /* e o final */.

A vantagem de termos esta possibilidade é poder comentar o nosso código. Existem algumas regras de boa conduta para comentários que foram criadas por pessoas que já têm muito tempo nisto:

    Uma é criar logo no topo um comentário a dizer o que é o nosso programa, e o que 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.

Esta última regra pode ser esquecida quando o programa é didático, neste caso pode-se usar o programa como texto comentado.
[editar] Incluindo cabeçalhos

#include <iostream>

O símbolo # é uma chamada de atenção ao compilador a dizer que aquela linha é para o preprocessador, depois temos o "include" (que basicamente diz para incluir código). Incluir o quê?

Deve incluir o ficheiro/arquivo iostream. (in+out+stream, "fluxo de entrada e saída", padrão) (na maioria das vezes, como entrada padrão temos o teclado e como saída temos o monitor) (este ficheiro/arquivo contém declarações das funções e definições que o nosso código fonte irá necessitar)

Este código que será incluído é chamado de cabeçalho devido a uma característica evidente, o fato de ser código de declaração inicial do programa, que deve estar no topo do arquivo/ficheiro.

Existem outros arquivos (ficheiros cabeçalho), o iostream é para fluxos de entrada e saída, mas temos muitos mais para matemática, manipulação de tempo, tratamento de caracteres, etc...

Na maioria das vezes, os arquivos de cabeçalho fazem parte de uma biblioteca. Podemos ver na parte dos anexos, algumas bibliotecas que existem juntamente com as funções de cada uma. Nós próprios podemos criar uma biblioteca com código e nosso próprio cabeçalho. E até podemos comprar bibliotecas existentes comercialmente, através de empresas especializadas em desenvolvimento, que também terão seus arquivos/ficheiros de cabeçalhos.

Mas, o que são bibliotecas? São arquivos com um conjunto de códigos que alguém fez antes. As que enunciamos antes são as "standard", são aquelas que têm as funcionalidades básicas, pertencentes aos padrões da linguagem. Repare-se que precisamos da biblioteca até para escrever (no ecrã)/(na tela) (stream + out) que nos permite utilizar o cout.

O ficheiro/arquivo iostream está envolvido em < >, isto significa que o preprocessador deve procurar o ficheiro/arquivo no sítio/diretório usual (que é onde o compilador usa como padrão para os "includes"). Se tivéssemos o ficheiro/arquivo iostream envolvido em "" significaria que o preprocessador deveria procurá-lo dentro de uma lista de diretórios de inclusão, "includes", iniciando pelo diretório atual.

As bibliotecas são compostas por 2 partes: um índice de todas as funções e definições e declarações, o cabeçalho, e depois a definição de todas as funções existentes no índice, arquivos de código.

As directivas de preprocessamento não terminam com o ponto e vírgula como nas instruções.
[editar] Namespace

using namespace std;

Observando esta linha, alguns tradicionais programadores em linguagem C, têm uma novidade: namespaces são espaços de nomes dentro do código, eles funcionam, entre outras coisas, como um meio de evitar duplicação de nomes dentro de um projeto extenso, que geralmente contam com inúmeros arquivos.

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

O objeto de saída padrão, cout, está definido dentro do "namespace" std, ele é um objeto da classe "ostream" "output stream", para acessá-lo temos que referenciá-lo como "std::cout". Para evitar que tenhamos que informar "std::" todas as vezes que precisarmos usar os recursos deste "namespace", podemos informar que estamos usando-o dentro do arquivo atual, conforme vemos na linha declarada no início deste tópico.

O "namespace" permite que as variáveis sejam localizadas em certas regiões do código. Declarar o "namespace std" permite que todos os objectos e funções da biblioteca "standard input-output" possam ser usados sem qualquer qualificações específicas, desta maneira, não é mais necessário o uso de "std::".

Este é um conceito avançado que podemos explorar mais, vamos deixá-lo para depois.
[editar] Função "main"

int main(){}

Como na linguagem C, a função principal de entrada do programa a partir do sistema operacional é a função main. Por isso mesmo ela é obrigatória em qualquer programa. Se não existisse uma "main function", não haveria entrada para que o sistema iniciasse o programa.

Todas as funções são declaradas e usadas com o operador ( ), assim é que o compilador reconhece que estas são funções. 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. As funções declaradas como membros de uma classe de objetos podem ser chamadas de métodos.

Do ponto de vista funcional, um código dentro de uma função executa operações em outra parte do programa, que não é aquela de onde foi chamada, por este motivo as mesmas contam com um mecanismo de passagem de dados, ao declarar uma função indicamos quais os dados que entram e o que ela deve fornecer a quem lhe chamou. Pode-se dizer que, tal qual uma função matemática, a função em C/C++ poderá ser substituída, depois de sua execução, pelo valor que ela retorna, este valor será especificado antes do nome da função na declaração da mesma, conforme vemos no início deste tópico.

O int significa que a função vai retornar um inteiro. Temos mais 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 point number", ou seja, uma representação para número real.

Vejamos um exemplo:

Quando criamos uma função soma, obviamente só para ilustração pois isso não é necessário, podemos fazer:

int soma(int a, int b)
{ return a + b;
}

Agora imagine que tenhamos que somar 2 e 3, colocando o resultado em outra variável chamada valor, para isto faremos:

valor = soma(2, 3);

Primeiro analisamos qual é o resultado e depois substituímos a função pelo valor que ela retorna:

valor = 5;

Simples, não?

; - Final de sequência de instruções

O ponto e vírgula funciona como ponto final, separa as instruções e contextos. Repare que apenas as funções, ou melhor, as definições de funções e as directivas de preprocessamento é que não têm o ";"

É importante notar que o código poderia 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.

Ao encontrar as chaves "{}", o compilador reconhece como um delimitador de bloco, ou "body", corpo. O corpo de uma função ou bloco de código começa com "{" e termina com "}", como temos as instruções agrupadas, 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 existam funções que alterem o fluxo da leitura ou que existam códigos de controle de execução "execution control codes", que alteram o caminho de execução.
[editar] Entrada e saída (cin/cout)

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

(c+out) Podemos utilizar este objeto porque pusemos o header e o namespace std. As informações serão direcionadas através do iostream, um subsistema de entrada e saída da biblioteca padrão. O que este objeto nos permite é enviar o que temos entre aspas para a saída (out), que é o monitor neste caso.

Quem já conhece a linguagem C, certamente está familiarizado com os streams da biblioteca padrão, o stdin, o stdout e o stderr... A linguagem C++ implementa os mesmos dispositivos sob a forma de objetos.

O cout envia dados para o "standard output device", que é usualmente o monitor, a abstração do elemento de saída padrão é observada na presença de um objeto que representa a saída física de dados para o meio externo.

Observa-se que temos o operador <<, neste caso podemos verificar mais uma das funcionalidades da linguagem, pois este operador é usado para deslocamento de bits na sua funcionalidade padrão, neste caso a sua função foi substituída por outra, transferir os dados a sua direita para o "output stream" do seu lado esquerdo.

O cout é um objecto da biblioteca "standard C++" que tem como uma de suas funções imprimir strings no "standard output" (que normalmente é o/a ecrã/tela).

Da mesma forma que podemos formatar o texto enviado a saída padrão na linguagem C, também podemos fazê-lo com os objetos do C++, por exemplo, se acrescentássemos "<< hex <<" entre uma variável e a saída:

cout<< hex << n;

O resultado seria impresso em hexadecimal;

Para entrada de dados temos:

cin >> a;

O que esta linha faz é colocar o valor que foi digitado numa área de memória que foi chamada de "a".

Da mesma forma que o cout existe para saída de dados, temos outro objeto para entrada através do teclado, este objeto é chamado de Console IN - cin, seguindo a mesma analogia. Observe que o operador >> é usado para dar idéia de que os dados estão vindo do cin para a variável "a".

cout << "digitou o número: " << a << "\n";

Aqui voltamos a utilizar o objeto cout primeiro para imprimir no/na ecrã/tela a frase "digitou o número: ", depois vai buscar o valor que está naquela área de memória a que chamamos de "a" e por fim coloca o fim de linha através de "\n", em C++ podemos usar um finalizador de linha chamado endl, o uso do mesmo é mais eficiente pois descarrega os dados do stream logo após a finalização da linha.
[editar] função system("pause")

system ("pause");

A maioria dos compiladores quando estão executando em modo gráfico fecha o console de saída assim que o programa finaliza. Isto impede que possamos ver o que aconteceu, principalmente quando o programa contém apenas umas poucas instruções.

A função system(), faz parte do padrão da linguagem C, ela executa uma chamada de sistema, ou seja, ela passa um comando para o sistema, que neste caso é "pause", como já informamos no início deste capítulo, este comando é destinado a sistemas da Microsoft®. Coloquei esta linha para que o programa não finalizasse sem que pudéssemos ver uma janela com o resultado, se não o fizesse a janela abriria e fecharia sem que pudéssemos ver o aconteceu durante a execução do programa.

Em sistemas como GNU/Linux, FreeBSD, Solaris®, etc... temos acesso a terminais de console e compiladores em linha de comando, assim basta compilar o programa sem esta linha e depois executá-lo, para ver o resultado.
[editar] Retornando valor

return 0

Faz com que a função retorne o valor zero, como esta função é a principal do programa, por onde o sistema operativo/operacional iniciou a execução do mesmo, este retorno é recebido pelo sistema, é comum que valores diferentes de zero sejam interpretados como erro do programa.

Esta instrução manda retornar o valor zero para o sistema operativo/operacional (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/operacional necessita de lidar com estas terminações anormais de uma forma diferente das normais. Por isso é que o programa diz ao sistema operativo/operacional que terminou normalmente.

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

Nenhum comentário:

Postar um comentário