C/C++

Ajankohtaista

  • Vuoden 2026 kevään kurssi aloittelee pikkuhiljaa
  • Luentovideot julkaistu, demot julkaistaan hieman myöhemmin.
  • Alustava aikataulu demoille on viikon syklit kevään Ohj2-kurssin jälkeen (20.4 ja 27.4)
  • Demoja odotellessa vastaa kyselyyn ohjausajoista, asentele itsellesi C++-yhteensopiva IDE ja kääntäjä
  • Apuja tehtäviin ja demojen tekemiseen saat Koodaamosta. Vastaathan ylempänä olevaan kyselyyn.
# tableForm_table

Please to interact with this component.

1. Suoritus

Kurssi on yhden opintopisteen kokoinen pintaraapaisu C++-kieleen (ja hieman C-kieleen). Kovin monimutkaisiin C++-kielen erikoisuuksiin kurssilla ei keretä, ja myös uudempien C++-standardien läpikäynti jää kurssin ulkopuolelle.

Kurssi suoritetaan tekemällä kurssin demotehtävät, joita on kahdessa erässä. Aikataulut speksataan lähiviikkoina, alustava suunnitelma on noin viikon syklit tämänhetkisen kevään Ohjelmointi 2 -kurssin jälkeen (eli alustavasti 20.4 ja 27.4).

Demotehtävistä tulee suorittaa vähintään 60%, jotta kurssista saa hyväksymismerkinnän. Lisäksi yhden demokerran aikana tulee tehdä vähintään puolet tehtävistä. Jos yhdellä demokerralla on esimerkiksi 10 tehtäväää, tuo tarkoittaa siis vähintään 5 tehtävää per demokerta, ja yhteensä vähintään 12 demotehtävää itsenäisesti tehtynä aikataulujen mukaisesti. Lisäksi demotehtävät tulee täydentää mallivastausten julkaisemisen jälkeen 100%:iin asti, eli ne tehtävät, joita ei ole tehty deadlineen mennessä, tulee opiskella vähintään mallivastausten ja demojen läpikäyntivideon avulla.

Itsenäisen työn tukemiseksi kurssilla tarjotaan ohjausta Koodaamojen yhteydessä. Koodaamoaikojen ja kurssin suorittajien yhteensovittamiseksi käythän vastaamassa kyselyyn sopivista ohjausajoista: linkki. Aikoja pyritään lisäämään pääsiäisen jälkeen, pääasiassa kutakin demoa edeltävälle viikolle. Jos tiedät kokemuksesta, ettet käytä ohjelmointikursseilla ohjauksia, vastaathan silti kyselyyn, jotta kartoitetaan opiskelijoiden tarpeita tarkemmin.

2. Materiaalia

2.1 Monisteita ja kirjallisuutta

# ide

3. IDE

3.1 Visual Studio Code

  • Asenna kääntäjä
    • Windowsille voi asentaa Build Tools for Visual Studio, ja asennusohjelmasta "Desktop development with C++"
    • Linuxille voi asentaa vaikkapa gcc
    • Macille voi asentaa clang
    • Toki voit kokeilla käyttää muitakin kääntäjiä. Demoissa/luentovideoissa käytetään mallina gcc:tä
  • Asenna Visual Studio Code
  • Käynnistä VSC, etsi marketplacesta (Ctrl+Shift+x) Microsoftin C++ -plugin
  • Pluginin mukana tulee kohtuullinen sisäinen tutoriaali, jota kannattaa käydä läpi ainakin kohdan "Run and debug your C++ file" loppuun
    • Jos tutoriaali katoaa, voit koittaa avata sen uudestaan:
    • Paina f1
    • Valitse "Welcome: Open walkthrough" (voit hakea esim sanalla "walkt")
    • Valitse "Get started with C++ development"

Vanhoja/muita ohjeita

3.2 Muita IDEjä

Voit toki asentaa minkä tahansa C++ ohjelmistoympäristön, jolla saat kirjoitettua ja käännettyä kurssin tehtäviä. Vanhoja kerättyjä ohjeita löytyy tästä linkistä.

# cppcompiler

4. C++ kääntäjä

4.1 Asentaminen

# mingw

4.1.1 MinGW ja Windows CMD

  • aluksi tarvitaan lähes kaikkiin alla oleviin vaihtoehtoihin C/C++ kääntäjä. Tämän saa mm. MinGW-paketista.

  • Windowsiin kannattaa ihan aluksi hakea MinGW zip ja purkaa se niin, että hakemistoon c:\devel\mingw tulee bin-hakemisto yms samassa paikassa olevat.

  • kääntäjä ja työkalut kannattaa lisätä hakupolkuun (oletetaan asennus C:\devel\mingw-hakemistoon). Komentoriviltä:

     path=C:\devel\mingw\bin;%path%
  • varminta on asettaa pysyvästi (tarvii admin oikeudet):

    • kirjoita komentoriviltä sysdm.cpl
    • valitse Advanced/Environment Variables
    • path-kohtaan lisätään tuo C:\devel\mingw\bin
  • mikroluokissa MinGW on asennettu polkuun c:\devel\mingw eli polkuun saattamiseksi siis:

     path=c:\devel\mingw\bin;%path%     // polun alkuun jotta voittaa vanhat kääntäjät
  • gcc (tai siis sen ohjelmat kuten gcc) saattaa puhua osittain suomea, kun Windowsin kieliasetus on suomeksi. Jos kaksikielisyys häiritsee, voi kielen vaihtaa englanniksi lisäämällä tai asettamalla järjestelmämuuttujan (kts. yllä, samoin kuin PATHin asettaminen) LANG arvoon C. Komentoriviltä set LANG=C.

  • Hakupolun toimivuuden voi testata kirjoittamalla komentoriville käskyn echo %PATH%. Lisätyn polun päästä pitäisi löytyä g++.exe

    • Visual Studio pitää käynnistää uudelleen, jos polkua muutettu
  • MinGW:n asennuksen voi testata kirjoittamalla käskyn g++ -v. Pitäisi tulostua kääntäjän versiotietoja.

4.1.2 GitBash

Myös GitBashia varten asenna MinGW kuten edellä. Erona että polkuun lisätään:

  1. Avaa nanolla .bashrc:

    nano ~/.bashrc
  2. Jos on `export rivi, lisää sen perään tai jos ei ole, lisää uutena:

    export PATH=$PATH:/C/devel/mingw/bin
  3. Tallenna ja poistu (Ctrl-X)

  4. Käynnistä uusi GitBash

  5. Kokeile

    g++ -v

4.1.3 Unix-pohjaiset järjestelmät

  • Windowsissakin voi käyttää WSL:än kautta Linuxia

    sudo apt-get update
    sudo apt install gcc
  • Muista komentorivioppimateriaali

  • Yleisimmät vaihtoehdot ovat LLVM:n clang ja GNUn GCC:n g++.

  • Unix-pohjaisissa koneissa C/C++ on monesti valmiiksi asennettuna, tai helposti & ilmaisesti saatavilla

4.1.4 Mac

  • macOS:lle Xcode-kehitystyökalu löytyy App storesta
    • uudet versiot Xcodesta ja macOS:stä: komentorivityökalut asennetaan komentoriviltä komennolla xcode-select --install
    • vanhat versiot Xcodesta ja OS X:stä: käyttöä komentoriviltä helpottava "command line tools" asennetaan seuraavasti: install-command-line-tools-mac-os-x.

4.2 Kääntäminen komentoriviltä

  • Katso tarkemmin monisteesta C ja C++.

  • Kirjoita hello.cpp:

    #include <iostream>
    int main() {
        std::cout << "Hello World!" << std::endl;
        return 0;
    } 
  • Kääntäminen, linkittäminen ja ajaminen erikseen (C++-ohjelma, C-ohjelma vastaavasti mutta komento on gcc, macOS:lläkin nuo toimivat, joskin se käyttää gcc:n ja g++:n sijaan clang-ohjelmaa, joka valitsee kääntäjän tiedoston tarkentimen mukaan: .c → C-kääntäjä .cc tai .cpp → C++-kääntäjä),

    • Windows:

      g++ -c -o hello.o hello.cpp
      g++ -o hello.exe hello.o
      hello

      kaikki kerralla

      g++ hello.cpp -o hello.exe
      hello
    • Linux, Mac, GitBash: (huom, .exe puuttuu ja pitää antaa ajon hakemisto)

      g++ -c -o hello.o hello.cpp
      g++ -o hello hello.o
      ./hello

      kaikki kerralla

      g++ hello.cpp -o hello
      ./hello

Jos tehdään C++11 (tai vastaavasti 14 tai 17) ohjelmia, pitää tämä kertoa komentorivin optiolla, esim:

g++ -std=c++11 -o hello.exe hello.cpp

Mikäli pärjää hyvin yksinkertaisilla ja askeettisilla työkaluilla, on myös yliopiston etäkoneella asennettuna c-kääntäjä (hyvin vanha) ja c++-kääntäjä. Näillä voi hyvin testailla, jos tarvitsee tehdä jotain nopeasti.

Etäkoneelle pääsee kirjautumaan VPN + ssh:llä jonkin Telnet-asiakasohjelman esim. Puttyn avulla. Puttyssa Host Name-kohtaan kirjoitetaan jokin seuraavista osoitteista:

- jalava.cc.jyu.fi
- halava.cc.jyu.fi
- calc.phys.jyu.fi ( en ole varma toimiiko myös ei Fysiikan laitoksen opiskelijoille) 

Oletuksena nämä avaavat alussa U-aseman juuren ja tallentavat kaiken roskan sinne. Lisää etälinuxin käytöstä Tietokone ja tietoverkot työvälineenä-kurssin sivuilta.

Palvelun aktivoiminen salasana.jyu.fi:sta saattaa olla tarpeen. Sielta "aktivoi etäkäyttö" tms.

Kääntäminen kuten edellä Linux-kohdassa.

5. ComTest

6. Dokumentointi

  • Doxygen avulla saa samankaltaisen dokumentaation kuin JavaDocilla

7. Valgrind

  • Valgrind on ohjelma jolla voi tutkia mm. muistivuotoja. Tämä on mukana osassa TIMissä olevista käännöksistä, erityisesti demoissa.

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