Ohjelmointi 2 2016 / Pääteohjaus C1

Seuraavien harjoitusten tarkoituksena on opettaa C++ -ohjelmointiympäristön. C++ -ohjelmien editointia ja kääntämistä harjoitellaan IDE:ssä ja komentorivillä Linux-koneella

1. C++ ja IDE:t

Valitse ensin IDE jolla haluat harjoitella. Kun tuo harjoitus loppuu, palaa tähän harjoitukseen jatkamaan yleistä osaa kohdasta 2.

2. Aliohjelmat ja referenssimuuttujat

Muokataan edellisessä esimerkissä kirjoitettua ohjelmaa niin, että parametrejä ei välitetäkään viitteiden avulla.

  1. Tee uusi projekti ja anna nimeksi painoi3. Lisää taas haluamallasi tavalla siihen painoi2.cpp tiedosto.
  2. Muokkaa tiedostosta painoi2.cpp tiedosto painoi3.cpp poistamalla &-merkit aliohjelmien kysy_paino ja kysy_pituus otsikoista.
  3. Aja ohjelma debug-tilassa ja tarkista, että paino ja pituus -muuttujat ovat näkyvissä kun askellat.
  4. Etene askel askeleelta ohjelma läpi ja tarkastele paino ja pituus -muuttujien arvoja. Muuttuvatko ne samalla tavalla kuin aikaisemmin?
  5. Laita &-merkit takaisin tai avaa vanha projekti painoi2 ja aja ohjelma uudestaa debug-tilassa. Tarkista että paino ja pituus vahdit ovat asetettu ja seuraa niitä ohjelman edetessä. Mieti miksi nämä versiot toimivat eri tavalla?

Lisätietoa C++:n funktioista ja parametrinvälityksestä on vuoden 2002 kurssin luentomonisteessa: luku 8.

painoi3.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;
}

3. Yksinkertaisen C/C++-ohjelman editoiminen ja kääntäminen komentoriviltä Linux/Unix-järjestelmissä.

Aloitetaan jo tutuksi tulleella Hello World! -ohjelmalla. Ota johonkin atk-keskuksen Linux-koneeseen yhteys ssh:lla (esim. jalava) tai kokeile onko sinulla tunnus koneessa charra.it.jyu.fi.

  1. Mene johonkin sopivaan hakemistoon ja kirjoita seuraava koodi käyttäen jotain editoria(esim. pico, nano, emacs, vim):
#include <iostream>

using namespace std;

int main(void)
{
  cout << "Hello World!\n";
  return 0;
}
  1. Talleta esim. nimelle hello.cpp. Kääntäminen tapahtuu seuraavalla käskyllä:
g++ hello.cpp -o hello

... ja ajaminen näin:

./hello

Eli yksinkertaisimmillaan annetaan kääntämiskäsky (g++), käännettävä koodi (hello.cpp) ja nimi tuotokselle (-o hello). Huomaa että g++ on pelkästään C++-kääntäjä. Voit käyttää myös halutessasi gcc kääntäjää joka on sekä C-, että C++-kääntäjä.

4. C:n ja C++:n eroja.

Sama ohjelma voidaan tehdä myös C:llä. Erona C:ssä on se, että syötössä ja tulostuksessa pitää käyttää printf ja scanf-funktioita ja aliohjelmien parametrienvälitys pääohjelmaan pitää tehdä osoittimien avulla.

  1. Tee uusi projekti nimellä painoi4 ja lisää siihen painoi3.cpp.
  2. Muuta nyt painoindeksi-ohjelma C-kielelle.
    • Vihjeitä: C:ssä et voi käyttää iostream-otsikkotiedostoa, joten käytä stdio.h-otsikkotiedostoa. Yritä korvata cout ja cin käskyt c:n vastaavilla printf ja scanf käskyillä. Sekä muuta referenssimuuttujat osoittimilla. Apua voit katsoa taas monisteen luku 8.
  3. Tallenna ohjelma nimellä painoi4.c ja testaa sitä.

Lisätietoa C++ -kielestä mm. seuraavissa lähteissä:

Santtu Salmi 21.4.2004, Vesa Lappalainen 16.4.2007 & 1.4.2011

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