C/C++

Mikä on kevään deadline?

VL: Suoritus on niin että tehdään kahden viikon demot. Heti perään kun tämä Ohj2 kurssi loppuu Koitan laskea päivämäärät kun ehdin, pääsiöinen hieman sotkee. Sisukalenterissa saattaa olla oikein.

20 Jan 23 (edited 20 Jan 23)
# tableForm_table

Please to interact with this component.

# tarkeat

Please to interact with this component.

Calendar

1. Suoritus

Demoista C1 ja C2 on tehtävä yhteensä 60%, min 50%/kerta, jotta saa 1 op merkinnän kurssista TIEP112 Ohjelmointi 2, C++. Demokertojen maksimina pidetään 10, eli käytännössä Hyväksyttyyn vaaditaan 12 tehtyä tehtävää.

Tehtävät voi tehdä etukäteenkin jos katsoo nuo neljä videota.

Kummankin demokerran palautustilaisuuden (deadline maanantaisin klo 14-16) jälkeen omat vastaukset on korjattava TIMissä niin, että niistä tulee 10 p. Jos tehtävää ei ole tehnyt, on se opiskeltava edes mallivastauksesta (pelkkä copy/paste ei riitä). Korjattaessa vastauksia on katsottava palautustilaisuudessa käsitellyt virheet ja parannusehdotukset. Tälle viikkoa aikaa palautustilaisuudesta.

Kurssi arvostellaan Hyväksytty/Hylätty.

Vaihtoehtoinen suoritustapa: Oman Ohj2-harkan vaihe 6 (ilman käyttöliittymää) C++:lla tehtynä. Tällöin ei ole aikataulurajoja.

Hei!

Pitääkö tästä kurssista pyytää erikseen suoritusmerkintää?

VL: Jos demot tekee ennen kurssia, niin joo. Jos kurssin aikana, niin ei. Jos tekee ht:lla, niin ht pitää näyttää ohjaajille ja kertovat että nyt voi laittaa merkinnän.

02 Feb 23 (edited 03 Feb 23)

2. Materiaalia

2.1 Monisteita ja kirjallisuutta

# cppcompiler

3. C++ kääntäjä

# mingw

3.1 MinGW ja Windows

  • 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.

3.2 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

  • 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.

3.3 Kääntäminen komentoriviltä

  • 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ä):

     g++ -c -o hello.o hello.cpp
     g++ -o hello.exe hello.o
     hello
  • kaikki kerralla

     g++ hello.cpp -o hello.exe
     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 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 melkein samoin, kuin edellä:

gcc -o hello hello.c tai ( huomaa puuttuva .exe)
g++ -o hello hello.cpp

Ja ajaminen:

./hello
# ide

4. IDE:jä

Ks: IDEt

Vaihtoehtoisia IDE:jä mm (suositus on ehkä VS Code, CodeLite, Windowsiin myös Visual Studio, Macille XCode)

Kevään 2024 kurssilla voisi kokeilla aluksi saako VS Coden kautta tehtyä. Alla on lueteltu vaihtoehtoisia IDEjä, joista mikään ei ole täydellinen, valitettavasti. Noista vakavasti kannattaa katsoa niitä, mitkä on testattu 2024 tai myöhemmin. Jos työkalulle on TIDe palautusohjeet, se on merkitty +TIDE.

4.1 Visual Studio Code

4.2 Eclipse ja C++

  • Asenna Eclipsen tarvitsemat lisäosat
  • Mikroluokissa lähtee käyntiin komentoriviltä ec (vanha versio, Indico)
    • ComTestin asennusohjeissa vaihda e:\ tilalle oikea levykirjain (mikroluokissa n:\)
  • testattu 13.4.2012 / vesal / W7 64 bit (Indigo)
  • testattu 19.4.2014 / vesal / W7 64 bit (Kepler)
  • testattu 17.4.2016 / vesal / W7 64 bit (Mars)
  • testattu 4.4.2017 / vesal / W10 64 bit (Neon)
  • testattu 7.4.2018 / vesal / W10 64 bit (Oxygen.2)
  • testattu 30.3.2019 / vesal / W10 64 bit (Eclipse 19.03)
  • testattu 10.4.2021 / vesal / W10 64 bit (Eclipse 21.03)
  • testattu 3.4.2022 / vesal / W11 64 bit (Eclipse 2021-12 (4.22.0))
  • testattu 9.4.2023 / vesal / W11 64 bit (Eclipse 2022-12 (4.26.0))
  • testattu 6.4.2024 / vesal / W11 64 bit (Eclipse 2023-12 (4.30.0)) + TIDE

ec4 komento ei toiminut Mountainsissa

VL: joo, ei toimi muuta kuin tuo vanha indico ec-komennolla.

05 Apr 17 (edited 05 Apr 17)

4.3 CodeLite

  • Windows, Linux, Mac: CodeLite, lataa ja asenna (asennusohjeet)
    • - vaati projektin
    • + pysähtyy ajon jälkeen konsoli-ikkunaan jolloin tuloksen ehtii nähdä
    • + ComTest toimii hyvin
    • + jos MinGW polussa ennen käynistystä, niin toimii ihan hyvin
  • jos valittu asennukseen MinGW -versio, niin ei tarvitse mitään temppuja
  • projektin tekeminen CodeLitellä.
  • mikroluokassa lähtee käyntiin komentoriviltä komennolla cl ja muuten ei saakkaan käynnistää, sillä ei ole oikeuksia ajaa ohjelmia. N-levy pitää olla mountattuna.
    • ComTestin asennusohjeissa vaihda e:\ tilalle n:\
  • testattu 13.4.2012 / vesal / W7 64 bit (versio codelite-3.5.5377.exe)
  • testattu 14.4.2013 / vesal / W8 64 bit (versio codelite-5.1.0.mingw4.7.1.exe)
  • testattu 14.4.2014 / vesal / W8 64 bit (versio codelite-5.4-mingw4.8.1.exe)
  • testattu 17.4.2016 / vesal / W8 64 bit (versio codelite-amd64-9.1.5)
  • testattu 4.4.2017 / vesal / W10 64 bit (versio codelite 10.0.3)
  • testattu 9.4.2018 / vesal / W10 64 bit (versio codelite 12.0.0)
  • testattu 30.3.2019 / vesal / W10 64 bit (versio codelite 12.0.15)
  • testattu 10.4.2021 / vesal / W10 64 bit (versio codelite 15.0.0)
  • testattu 3.4.2022 / vesal / W11 64 bit (versio codelite 15.0.11)
  • testattu 9.4.2023 / vesal / W11 64 bit (versio codelite 17.2.0)
  • testattu 6.4.2024 / vesal / W11 64 bit (versio codelite 17.9.0) + TIDE

CodeLite + minGW combolla debuggaus vaatii säätämistä. gcc kääntäjällä tehdyt projektit kääntyvät hyvin ja niitä pystyy debuggaamaan. g++ projektit kaatuivat itsellä aina debugatessa ilman virheilmoitusta, mutta asettamalla 'workspace build configuration' Debug->Release pystyi ohjelmat ajamaan. Debuggaus lähti toimimaan linkin ohjeilla: Linkin teksti

tl;dr poistakaa aina KAIKKI workspacen breakpointit ennen uuden asettamista. CodeLiten pääikkunasta Debugger - Delete All Breakpoints

Ongelma on näköjään sama kuin vesalla n. viikko sitten luennolla, jolloin c++ debuggaus välillä toimi ja välillä ei

22 Apr 17 (edited 22 Apr 17)

4.4 Visual Studio 2022

  • projektin tekeminen Visual Studio 2022
    • hyvät täydennykset
    • hyvä debuggaus
    • raskas
    • Oletuksena kääntäjässä eri asetukset kuin timissä
    • Sisällyttää joitain kirjastoja kysymättä
  • testattu 16.4.2013 / vesal / W8 64 bit
  • testattu 17.4.2016 / vesal / W10 64 bit, VS2015
  • testattu 4.4.2017 / vesal / W10 64 bit, VS2015
  • testattu 7.4.2018 / vesal / W10 64 bit, VS2017
  • testattu 30.3.2019 / vesal / W10 64 bit, VS2017
  • testattu 6.4.2024 / vesal / W11 64 bit, VS2022 + TIDE

“Cannot run program”g++“: CreateProcess error=2, The system cannot find the file specified” Visual studio community edition 2019 antaa tuollaisen errorin, kun yritän ajaa comtestejä.

VL: Onko ComTestiin liittyvien tiedostojen paikka oikein asetuksissa. Eli Java ja ComTestCpp.jar.

06 Apr 20 (edited 06 Apr 20)

Kaikki on niinkuin Visual Studio 2012-2015 ohjeissa ComTestCpp-sivulla. Joko java.exe on muuttunut, tai 2019-versiossa noi External Tools:it pitäisi tehdä hiukan eri tavalla.

09 Apr 20

4.5 Netbeans ja C++

  • Windows: Asenna MinGW, elä asenna Make-ohjelmaa
  • Windows: Asenna MSYS
  • Hae ja asenna Netbeans (joko C/C++ tai All)

4.6 Code::Blocks

  • Linux & Windows: http://www.codeblocks.org/
    • + projektiin helppo lisätä ja poistaa tiedostoja, näin valita mitä ajetaan
    • + pysähtyy konsoli-ikkunaan ajon lopuksi ja näyttää vieläpä ajon kestoajan
    • - ctrl-click hyppyä esittelyyn
    • + ComTest toimii hyvin
    • - ei saa koodilohkoja joilla olisi helppo tehdä testejä (???)
  • projektin tekeminen Code::Blocksilla.
  • testattu 13.4.2012 / vesal / W7 64 bit (versio codeblocks-10.05-setup.exe, MinGW pitää olla ensin asennettu ja polussa)

4.7 KDevelop

4.8 Qt Creator

  • Linux, Windows, Mac: https://www.qt.io/download/
    • + Kevyt (oli), aktiivisessa kehityksessä oleva C++ -IDE
    • + Erinomaiset Qt-työkalut
    • - Hiukan Qt-keskeinen muihin projekteihin, mutta on käytettävissä myös ei Qt-projekteihin (en saanut debuggeria toimimaan Command ohjelmiin W7 64 bit)
  • testattu 13.4.2012 / vesal / W7 64 bit

4.9 Dev C++

  • Windows: Dev C++ 5.6.2, asenna ja aja
    • + konsoli-ikkuna jää näkyviin suorituksen jälkeen
    • + yksinkertainen ja toimii ilman projektejakin
    • + MinGW (vanha???) tulee ja asentuu mukana
    • - debuggaus aika käpystä kun on huono liittymä gdb:hen
  • testattu 14.4.2013 / vesal / W8 64 bit
  • testattu 19.4.2014 / vesal / W8 64 bit

4.10 C-Free

  • Windows: C-Free, asenna ja aja
    • - vain 30 päivän käyttö
    • + yksinkertainen, toimii ilman projekteja
    • - hiiren rulla ei toimi, ei ctrl-click hyppyä esittelyyn
    • - ei toiminut kunnolla W7 64 bit (debug ei toimi)
  • testattu 13.4.2012 / vesal / W7 64 bit

4.11 C++ ja Xcode (macOS)

  • Xcode on Applen virallinen IDE, jolla voi luoda Swift ja Objective-C projektien lisäksi standardi C ja C++ -projekteja. Paras valinta macOS:llä ohjelmoiville, ainakin ilmaisista työkaluista.
  • Haettavissa ilmaiseksi AppStoresta.
  • Sisältää paljon hyviä työkaluja, mm. debuggaukseen, muistin/prosessoriajan/energiankäytön seurantaan, GUI-kehitykseen, pelikehitykseen (3D ja 2D), tekoälyyn, GPU-laskentaan, ...
  • Ohjeita mm. http://help.apple.com/xcode/mac/8.0/.
    • Eli C++-ohjelmia kirjoitetaan kuten muitakin. Valitse "Uusi projekti", sitten projektityyppi ja projektin nimen annon yhteydessä voit valita käytettävän kielen.
  • Seuraavat ohjeet ovat vanhoille versioille.

4.12 Emacs (ja gcc/clang)

  • Kohtuullisella säätämisellä saa Emacsin toimimaan kuten yllä olevat editorit ja IDEt, poislukien tietty GUI- ja muut grafiikkatyökalut.
  • Toimii ainakin osittain yleisimmissä käyttöjärjestelmissä.
  • Sisältää debuggerin, projektit, kooditäydennykset, koodivärityksen, refaktoroinnin, navigoinnin koodin sisällä, dokumentoinnin näytön (ja tekemisen) ja parhaan muokattavuuden kaikista mainituista editoreista.

5. Dokumentointi

  • Doxygen avulla saa samankaltaisen dokumentaation kuin JavaDocilla

6. ComTest

Oma ratkaisuni on ollut se, että asensin snippetin, että saan testit kirjoitettua nopeammin ja ajan testit vain TIM:issä.

11 Apr 20

403

VL: nyt annettu jopa muokkausoikeudet jos on pahoja mokia tuolla.Teksti

13 Apr 24 (edited 14 Apr 24)

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.