Aula 2


Resumo da matéria

O que é um computador ?
Uma máquina programável.

O que é um algoritmo?
É um modo de resolver um problema.

O que é um programa?
Um programa é uma tradução para uma linguagem de computador de um algoritmo que permite a resolução de um problema. Um programa é, também, um conjunto de instruções, escritas numa linguagem que o computador é capaz de "interpretar" . Nestas linguagens não há ambiguidades (ao contrário das linguagens naturais como o Português, Inglês, etc.). É necessário expressar o programa de acordo com todas as regras da linguagem.

Como programar um computador?
Através de instruções numa linguagem de programação (no nosso caso C++).

Como escrever o programa e ordenar ao computador que o execute?
Para escrever o programa necessitamos apenas de um editor de texto. Para executar um programa necessitamos de um compilador da linguagem que estamos a usar. Todas estas ferramentas estão incluídas no ambiente de desenvolvimento que vamos usar (Visual C++).

O que é um compilador?
Um compilador é um programa que permite traduzir as instruções na linguagem que estamos a usar para uma linguagem "executável" pelo computador. A esta linguagem é costume chamar "linguagem-de-máquina" ou "código-de-máquina". O código-de-máquina é (para quase toda a gente) uma sequência ininteligível de zeros e uns.

Como resolver um problema usando um computador?

  1. Analisar o problema com atenção
  2. Desenvolver um algoritmo para resolver o problema
  3. Traduzir esse algoritmo para a linguagem de computador que se pretende usar (no nosso caso C++)
  4. Compilar o programa e corrigi-lo até obter o resultado pretendido
  5. Criar um executável do programa
  6. Correr o programa e testá-lo (é especialmente importante testar os casos limite, pois é aí que se detectam mais fácilmente alguns erros)

O que é um ambiente de desenvolvimento?
Um ambiente de desenvolvimento é um programa que nos permite criar, compilar, executar e verificar os erros do programa que estamos a desenvolver. O ambiente de desenvolvimento que vamos usar nas aulas práticas é o Visual C++.

Como iniciar o ambiente de desenvolvimento Visual C++?
(menu windows) Start/Programs/~MocrosoftVisualC++5.0/MicrosoftVisualC++5.0

Como escrever um programa no ambiente de desenvolvimento Visual C++?
(menu) File/New (ou clic no icone New)
(seleccionar a pasta) Files
(seleccionar a opção) C++ Source File
escrever o programa na janela de edição (não usar acentos na escrita do programa)
(menu) File/Save (ou Ctrl-S ou clic no icone Save) - atenção: o programa só pode ser gravado na drive H:

Como compilar um programa no ambiente de desenvolvimento Visual C++?
(menu) Build/Compile (ou Ctrl-F7)
Atenção : quando o computador perguntar se queremos criar um projecto por defeito (em americano: "default project") escolher "Yes".
AtençãoNunca devem ser ignoradas as mensagens de compilação. Uma compilação só está correcta quando aparece a mensagem : Warnings: 0 - Errors: 0.

Como criar um executável de um programa no ambiente de desenvolvimento Visual C++?
(menu) Build/Build (ou F7)

Como executar um programa no ambiente de desenvolvimento C++?
(menu) Build/Execute (ou Ctrl-F5 ou clic no botão assinalado com um ´!´)
Quando é executado um programa aparece uma janela onde o programa escreve as mensagens e de onde o programa lê os valores que necessita para efectuar os cálculos. Em certos casos esta janela encontra-se minimizada (i.e. aparece apenas na Toolbar no fundo do ecrã).

Modo de correcção de programas (em americano: "debug")
O modo de correcção de programas permite correr o programa linha a linha (traçado, ou em americano: "trace") e verificar a evolução do valor das variáveis. Esta ferramenta é essencial para o desenvolvimento e correcção de programas.

Como fazer iniciar o traçado do programa (i.e.executá-lo instrução a instrução)?
Há várias maneira, a mais fácil para já é : (menu)Build/StepOver (ou F10)

Outros comandos de interesse no modo de debug (disponíveis no menu Debug ou na Toolbar correspondente) :

Atenção : quando é executada uma instrução de entrada de dados (como por exemplo cin >> n >> m;) pode ser necessário maximizar a janela onde o programa está a correr para inserir os dados necessários para que este continue.

Atenção : quando o cursor chega à última instrução deve fazer F5 para terminar a execução do programa e voltar ao modo de edição.

Janela de vizualização das variaveis:
Quando está em modo de debug, no fundo do seu ecrã tem uma janela onde pode acompanhar a evolução do valor de cada uma das variáveis do programa. Esta janela é muito importante para a compreensão do funcionamento do seu programa.

Exercicio resolvido :

// Este programa calcula o máximo divisor comum entre dois números
#include <iostream>

using namespace std;

int main(void) {
    int m, n, divisor;

    cout << "Cálculo do máximo divisor comum de dois números" << endl;
    cout << "Introduza dois inteiros positivos: ";
    cin >> m >> n;

    // Assume-se que m e n são positivos!

    // Como um divisor é sempre menor ou igual a um número, escolhe-se
    // o mínimo dos dois!
    if(n > m)
        divisor = m;
    else
        divisor = n;

    // Neste momento sabemos que divisor >= mdc(m,n). */

    while(m % divisor != 0 || n % divisor != 0) {
        // Se o ciclo não parou, então divisor não divide m e n, logo, 
        // divisor != mdc(m,n) e divisor >= mdc(m,n).  Ou seja, 
        // divisor > mdc(m,n).
        divisor--; 
        // Progressão.  Afinal, queremos que isto acabe, não?
        // Neste momento, divisor >= mdc(m,n) outra vez!  É o invariante do
        // ciclo!
    }
    // Sabemos que divisor >= mdc(m,n) (invariante do ciclo) e que
    // divisor divide m e n (saímos do ciclo, não foi?), mas então temos de
    // concluir que divisor=mdc(m,n)!
    
    cout << "O máximo divisor comum de " << m << " e " << n << " é " << divisor 
       << endl;

    return EXIT_SUCCESS;
}


Exercícios

1 a) Passe para o editor o programa que se encontra acima (exemplo resolvido). Ignore os comentários (um comentário é qualquer linha que começe com "//").

1.b) Compile e corra o programa.

1.c) Corra o programa linha a linha em modo de debug vendo atentamente a evolução do valor das variáveis.

1.d) Experimente fazer as seguintes alterações