Ohjelmointi 2 2017 / Pääteohjaus C1/Eclipse

Seuraavien harjoitusten tarkoituksena on opettaa C++ -ohjelmointiympäristön. C++ -ohjelmien editointia ja kääntämistä harjoitellaan Eclipse-kehitysympäritössä.

Oletetaan että Eclipseen on asennettu tarvittava lisäosa ohjeiden mukaan

1. Yksinkertaisen ohjelman kirjoittaminen ja kääntäminen Eclipse -kehitysympäristön avulla.

  1. Katso ohjeesta projektin luominen ja C++-ohjelman kirjoittaminen
  2. Lisää projektiin uusi CPP-tiedosto ja kopioi alla oleva painoi.cpp -tiedoston sisältö siihen. Oikeastaan projektissa ei muita C++-tiedostoja saakkaan olla (joissa on main-funktio).
  3. Tallenna projekti ja kaikki tiedostot.
  4. Käännä ohjelma Project/Build Project (jos ei ole Build Automatically päällä)
  5. Ohjelmointiympäristön pitäisi nyt tulostaa virheitä ja varoituksia. Klikkaamalla tai siirtymällä nuolinäppäimillä varoituksen/virheen kohdalle siirtyy kursori paikkaan, jossa varoitus/virhe on ohjelmakoodissa.
  6. Korjaa kaikki virheet ja varoitukset.
  7. Käännä ohjelma ja testaa sitä.
  8. Tarkista vielä lopuksi mitä tiedostoja kääntäjä on luonut projektihakemistoosi.

painoi.cpp

#include<iostream>
using namespace std;

double kysy_paino(double &pai)
{
  cout<<"Anna painosi(kg)>";
  cin>>pai
}

void kysy_pituus(double &pit)
{
  cout<<"Anna pituutesi(cm)>";
  cin>>pit;
}

int main(void)
{
  double pituus,paino,nimi;
  kysy_pituus(pituus);
  kysy_paino(paino);
  painoind=paino/( pituus*pituus/10000);
  cout<<"Painoindeksisi on: "<<painoind<<"\n";
  return 0;
}

2. Debuggerin käyttö.

C++ debuggeri toimii lähes samanlailla kuin Java debuggeri. Kokeillaan kuitenkin korjatun version painoi2.cpp ajamista debug-tilassa.

  1. Tee uusi projekti ja anna nimeksi painoi2. Kopioi alla oleva painoi2.cpp -tiedosto projektihakemistoosi ja päivitä projekti (projektin nimen päälle ja F5). Tai vaihtoehtoisesti voit taas tehdä uuden CPP-tiedoston ja kopioida painoi2.cpp -tiedoston sisällön siihen.
  2. Käynnistä ohjelma debug-tilassa painamalla F11.
  3. Kun debug-tila on päällä pitäisi ruudulla olla Variables-niminen "lärpsykkä". Tuolla näet lokaalit muuttujat ja niiden arvot. Oikalla napilla muuttujan nimen päällä voit mm. muuttaa muuttujan arvoa.
  4. Jos olet jossakin aliohjelmassa ja haluat nähdä kutsuneen modulin muuttujien arvoja, niin siirry Debug-ikkunassa modulin nimen (esim. main) päälle. Valitettavasti näkymä vaihtuu aina pois, jolloin sitä pitää itse vaihtaa takaisin.
  5. Voit myös keräillä tärkeimmät muuttujat omaksi Watch Expression kokoelmaksi: Mene muuttujan päällä ja paina oikeaa nappia ja Create Watch Expression. Kun Expression ikkuna löytyy, voit sinne lisätä muuttujia myös kirjoittamalla niiden nimet. Jos haluat esim. seurata pääohjelman paino-muuttujan käyttäytymistä ilman että tarvitsee koko ajan vaihtaa debug-ikkunan modulia, niin lisää main::paino
  6. Aja ohjelmaa rivi kerrallaan painamalla F5 tai F6, kuten Java-debuggerissakin. Voit myös asettaa koodiin keskeytyskohdan klikkaamalla koodieditorin vasempaan reunusta haluamasi rivin kohdalta (tai näppäimistöllä Ctrl-Shift-B). Valitsemasi rivin kohdalle pitäisi tulla pieni sininen täppä. F8 ajaa seuraavaan keskeytyskohtaan saakka.
  7. Katso välillä tulostusruutua, jossa ohjelma pyörii ja vastaile tarvittaessa syöttöihin.
  8. Kokeile uudestaan (F11). Käytä myös kursoriin saakka ajamista (eli siirrä kursori jollekkin riville ja paina Ctrl-R). Huomaa että ohjelman pitää olla tällöin debug-tilassa.
  9. Ohjelman ajon voi keskeyttää painamalla Run/Terminate tai punaista neliötä.
  10. Huolehdi ettei keskeneräisiä ajoja jää päälle.

painoi2.cpp

#include<iostream>
using namespace std;

void kysy_paino(double &pai)
{
  cout<<"Anna painosi(kg)>";
  cin>>pai;
}

void kysy_pituus(double &pit)
{
  cout<<"Anna pituutesi(cm)>";
  cin>>pit;
}

int main(void)
{
  double pituus,paino;
  kysy_pituus(pituus);
  kysy_paino(paino);
  double painoind=paino/( pituus*pituus/10000);
  cout<<"Painoindeksisi on: "<<painoind<<"\n";
  return 0;
}

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.