Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Ohjelmointitekniikka, syksy 2014, 5 op

Samankaltaiset esitykset


Esitys aiheesta: "Ohjelmointitekniikka, syksy 2014, 5 op"— Esityksen transkriptio:

1 Ohjelmointitekniikka, syksy 2014, 5 op
6 h/vko, viikkoa, tehollista 6+3, ja Viikolla koe Ohjelmointikielenä C/C++ Englanninkielinen termistö , google haut Työkaluna Microsoftin Visual Studio 2010, 2012 tai 2013 Työkalu kannattaa ottaa omalle koneelle: saa ilmaiseksi Useimmissa tietokoneluokissa on Visual Studio 2013 Jos ohjelmointi entuudestaan tuttua, tunneilla ei ole pakko käydä. On kuitenkin itse seurattava kurssin edistymistä, tehtäviä ja sisältöä Moodlesta: Ohjelmointitekniikka, TI15S Tentin arvosana määrää mahdollisessa kilpailutilanteessa peliohjelmointiin pääsyn Kotitehtävien palautukset ja tentti määräävät yhdessä arvosanan. Pelkällä tentilläkin voi saada arvosanan 0-5.

2 Tietokone (Computer) Ohjelmisto (Software) Laitteisto (Hardware)
Käyttöjärjestelmä (Operating system) Sovellusohjelmat (Application software) Keskusyksikkö (Processor) Muistit (Memories) Oheislaitteet (Peripheral device) Tietokone sisältää 2 osaa laitteiston ja ohjelmiston. Laitteistoon kuuluu keskeisimpänä osana prosessori ja muisti sekä ulospäin näkyvinä ”liittyminä” esim. näyttö, näppäimistö ja hiiri. Tietokonelaitteisto yksin ei tee mitään, ehkä tuuletin hurisee ja jonkinlaista tekstiä saadaan käynnistyksessä näkyviin. Tietokoneen toiminta vaatii aina käyttöjärjestelmän: Windows, Unix, Linux, Android, tms. Ne ovat kaikki ohjelmistoa. Pelkällä käyttöjärjestelmälläkään ei pitkälle pötkitä: tarvitaan sovelluksia (applikaatioita): Internet- selain, tekstinkäsittelyohjelma, apuohjelmia esim. WLAN:n määritykseen, kellonajan asetukseen, jne. Kaikki em. Ohjelmisto (softa) tehdään ohjelmoimalla (programming).

3 Ohjelmointikielten ”kehitys”
Konekieli (Machine Language), binäärikoodi, 1/0 Assembly kielet, jokaiselle prosessorityypille omansa Rakenteiset kielet (Structured Programming Languages) Oliokielet (Object Oriented Languages) Rakenteiset ja oliokielet ovat ns. korkean tason kieliä Rakenteisia esim. C, JavaScript, php Oliokieliä esim. C++, Visual Basic, C#, Java Useimmat oliokielet sisältävät myös rakenteisen osan Ohjelmointi (ohjelmointikielten käyttö) on sitä, että ennalta määrättyjä käskyjä ja rakenteita kirjoitetaan peräkkäin siten, että niiden avulla ratkaistaan jokin ”ongelma” Alussa lähinnä koneen ymmärtämää tasoa olevat kielet (nollia ja ykkösiä) ja siitä alaspäin lähemmäs ihmisen ymmärtämää logiikkaa olevat kielet Kun nollien ja ykkösten kirjoittaminen virheettömästi oli ihmiselle kohtuullisen mahdoton tehtävä, kehitettiin ns. assembly-kielet. Jokaiselle prosessorityypille oli omat kielensä. Tietokonelaitteistoissa oli ns. aritmetiikkayksiköt, jotka osasivat suorittaa laskutoimituksia luvuille, jotka oli sijoitettu tiettyihin paikkoihin. Paikat voisivat olla esim. A, B, C. Assembly kielessä oli käskyt, joilla tietoa voitiin siirtää muistissa yhdestä paikasta toiseen tai muistipaikasta aritmetiikkayksikön tunnistamiin paikkoihin ja toisinpäin. Lisäksi assembly-kielessä oli ehtolauseet (onko muistipaikassa X oleva tieto suurempi kuin muistipaikassa Y oleva tieto) ja hyppykäskyt, joilla ohjelman suoritus siirrettiin toiseen paikkaan ohjelmakoodissa. Assembly-kieliä käytetään edelleen erityistarkoituksiin, mutta monissa paikoissa C on korvannut assemblyn. Jos assembly kiinnostaa katso vaikka: Assembly-kielikin on liian hankalaa, jos tehdään suurempia ohjelmia. Kehitettiin ns. proseduraaliset eli rakenteelliset kielet kuten C. Edelleen koettiin, että rakenteelliset kielet eivät pakota ohjelmoimaan siten, että ohjelman ylläpito olisi helppoa. Kehitettiin olio-kielet eli oliopohjaiset kielet (object oriented languages) kuten C++, Java, nykyinen Visual Basic, C#, jne Oliokielet kuitenkin sisältävät samat perusrakenteet, olioiden lisäksi, kuin rakenteelliset kielet eli on perusteltua ainakin C++:n tapauksessa opiskella ensin C-kieli.

4 Englanninkielen opiskelua
Machine language is the lowest-level programming language (except for computers that utilize programmable microcode) Machine languages are the only languages understood by computers. While easily understood by computers, machine languages are almost impossible for humans to use because they consist entirely of numbers. Programmers, therefore, use either a high-level programming language or an assembly language. An assembly language contains the same instructions as a machine language, but the instructions and variables have names instead of being just numbers. Programs written in high-level languages are translated into assembly language or machine language by a compiler. Assembly language programs are translated into machine language by a program called an assembler. Konekieli on alimman tason ohjelmointikieli (paitsi sellaisissa tietokoneissa, joissa on ohjelmoitavaa mikrokoodia). Tietokoneet ymmärtävät vain konekieltä. Vaikka tietokoneet ymmärtävät helposti konekieltä, konekieli on ihmiselle lähes mahdotonta (ymmärtää saati) käyttää, sillä konekoodi muodostuu pelkästään numeroista. Tästä syystä ohjelmoijat käyttävät joko korkeantason ohjelmointikieltä tai assembly-kieltä. Assembly-kieli (on prosessorikohtaista, kuten konekielikin ja se) sisältää samat käskyt ja ohjeet kuin konekielikin, mutta käskyillä ja muuttujilla on nimet eikä vain numeroarvoja. Korkeantasonkielillä kirjoitetut ohjelmat käännetään (compile) joko assembly-kielelle tai konekielelle erityisellä ohjelmalla, jota kutsutaan kääntäjäksi (compiler). Assembly-kieliset ohjelmat käännetään konekielelle assembler-nimisellä ohjelmalla.

5 Ongelma: Laske tulos …N, jossa N on saatu käyttäjältä (N >= 0). Etsitään mahdollinen ”kaava” Jos N olisi 0, tulos olisi 0 Jos N olisi 1, tulos olisi 0+1 Jos N olisi 2, tulos olisi 0+1+2 Jos N olisi 3, tulos olisi Mitä tästä voidaan päätellä? Alussa tulos on 0 ja seuraavana tulokseen lisättävä luku on 1 Toistetaan seuraavia ”temppuja” niin kauan että em. luku <= N tulos = tulos + luku (tuloksen uudeksi arvoksi sijoitetaan tuloksen nykyisen arvon ja luvun nykyisen arvon summa) luku = luku + 1 (lukua kasvatetaan yhdellä eli luvun uudeksi arvoksi sijoitetaan luvun nykyisen arvon ja ykkösen summa) tulos = 0 luku = 1 while ( luku <= N ) { tulos = tulos + luku luku = luku + 1 } Älä säikähdä Huom. Kyseessä on täysin kuvitteellinen, mutta kuitenkin tavanomainen ohjelmointikieli

6 OHJELMOINTI = PROGRAMMING
Kielen käskyt laitetaan peräkkäin sellaiseen loogiseen järjestykseen, että kokonaisuus ratkaisee ongelman

7 C –kielen historia Unix-kehitys Bellin laboratorioissa, 1970 -
B –kieli (Thompson) laitteistoriippumattomuus C –kieli, 1972 Kernighan & Ritchie, 1978

8 C kieli C is used for developing application programs as well as hardware control programs C was initially developed for reprogramming the UNIX operating system (Linux) Programs written with high level languages like C need to be transformed, so that underlying machine understands it. This transformation is called compilation. C compilers are available for almost every computer environment. C language is small: small number of keywords, but the use of outside resources (libraries) is common. For example C-language doesn’t include instructions to write text on screen or read user input from keyboard. C++ is extension of C-language. It includes the object oriented part of language Many modern industry used game engines use C++ C:tä käytetään tavallisten sovellusten kirjoittamiseen sekä laitteiston hallintaohjelmistojen kirjoittamiseen Alun perin C kehitettiin Unix-käyttöjärjestelmän uudelleenkirjoitusta varten Korkean tason kielillä kirjoitetut ohjelmat on muunnettava koneen ymmärtämään muotoon, tätä muunnosta kutsutaan käännökseksi ja työn suorittaa ohjelma, jota kutsutaan kääntäjäksi. Lähes kaikkiin tietokoneympäristöihin löytyy C-kääntäjä C-kieli on pieni: vähän varsinaisia kielen avainsanoja, mutta tavallisesti käytetään ulkopuolisia kirjastoja apuna C++ on C-kielen oliolaajennos Monia peliteollisuuden käyttämistä pelimoottoreista käytetään C++ kielen avulla.

9 Ohjelmointikieleten tavallisimmat operaattorit
Aritmettiset operaattorit (Arithmetic operators) +,-,*… Esim. x = 6 + 3; z = x + 2; Vertailuoperaattorit (Relational operators) <, >, <=, … Käytetään testeissä: if (x > 3) Loogiset operaattorit (Logical operators) AND, OR, … Esim if (x < 10 AND x > 0) // c:ssä AND: && Sijoitusoperaattorit (Assignment operators) = a = 5; // muistipaikkaan nimeltä a sijoitetaan arvo 5 a = a + 3; // haetaan arvo muistipaikasta a (5) ja lisätään siihen 3, lopuksi tulos (8) sijoitetaan muistipaikkaan nimeltä a Inkrementointi ja dekrementointi operaattorit ++, -- a++; tarkoittaa samaa kuin a = a + 1; a--; tarkoittaa samaa kuin a = a – 1;

10 Tietotyypit (Data types)
Tietotyyppi kertoo ohjelmointiympäristölle, kuinka paljon muistia tarvitaan kunkin ohjelmassa esitetyn tunnisteen (symbolin) käsittelyssä. Esimerkiksi a = 6 +7, a on kokonaisluku (integer) Sisäänrakennetut tietotyypit, primitiivityypit Tietoa voi olla useita eri tyyppejä, esim: kokonaisluku (int), desimaaliluku (double) ja teksti eli merkkijono (string). 273645, ,”Terve maailma”. Johdetut tietotyypit Yhden tunnisteen avulla voidaan käsitellä kokonaista joukkoa primitiivityyppistä tietoa (taulukot) Käyttäjän määrittelemät tietotyypit Käyttäjä voi muodostaa omia tyyppejään, jotka muodostuvat useasta primitiivityypistä. Esimerkiksi ”Henkilo” voisi sisältää iän ja nimen, jolloin tietotyyppi muodostuisi 2 primitiivityypistä kokonaisluvusta ”ika” ja merkkijonosta ”nimi” Tietotyyppien tarkoituksena on kertoa ohjelmointiympäristölle, kuinka paljon muistia tarvitaan kunkin ohjelmassa esitetyn tunnisteen (symbolin) käsittelyssä. Esimerkiksi a = 6 +7, kyseessä on kokonaisluku eli ympäristölle kerrotaan, että a tarvitsee muistia kokonaisluvun verran. Siis tarkkaa muistimäärää ei kerrota vaan ainoastaan tiedon tyyppi. Sisäänrakennetut tietotyypit, primitiivityypit Tietoa voi olla useita eri tyyppejä, mutta nyt tässä peruskurssissa pärjätään hyvin pitkälle 3 perustietotyypillä: kokonaisluku (int), desimaaliluku (double) ja teksti eli merkkijono (string). Esimerkki kokonaisluvusta: , esimerkki desimaaluvusta: , esimerkki merkkijonosta: ”Terve maailma”. Jos siis halutaan käyttää jotain symbolia tiedolle, jonka sisältönä on kokonaisluku, kyseinen symboli määritellään kokonaisluvuksi ja vastaavasti muilla. String –tietotyyppi on itse asiassa C++:n ominaisuus, sitä ei ole varsinaisessa C-kielessä, mutta tässä kurssissa voidaan käyttää vapaasti myös string-tyyppiä. Johdetut tietotyypit Yhden tunnisteen avulla voidaan käsitellä kokonaista joukkoa primitiivityyppistä tietoa (taulukot) Käyttäjän määrittelemät tietotyypit Käyttäjä voi muodostaa omia tyyppejään, jotka muodostuvat useasta primitiivityypistä. Esimerkiksi ”Henkilo” voisi sisältää iän ja nimen, jolloin tietotyyppi muodostuisi 2 primitiivityypistä kokonaisluvusta ”ika” ja merkkijonosta ”nimi”

11 Muuttujat (Variables)
Muuttuja on muistipaikka, jolle on annettu nimi Kyseistä nimeä käytetään, kun muistipaikassa olevaan arvoa halutaan tutkia tai muuttaa. C –kielessä muuttuja esitellään ohjelmassa ennen kuin sitä voi käyttää. Esittelyn muoto on: tietotyyppi muuttujanNimi; int luku1, luku2; double hinta; string sukunimi; luku1 = 5; hinta = 12.55; sukunimi = ”Virtanen”; Esimerkissä on ”koodattu”, että luku1 ja luku2 voivat sisältää kokonaislukuarvoja, hinta voi sisältää desimaaluvun ja sukunimi tekstiä. Tässä merkkijonon määritys on C++ tyyppinen ja sitä voidaan käyttää lähes aina tämän kurssin aikana. Jos tulee tarvetta C-tyylisen merkkijonon käyttöön, opetellaan se sitten. Kun muuttujille on annettu tyypit, niitä voi käyttää ohjelmassa.

12 Muuttujien nimeämissääntöjä
Muuttujan nimi pitää aloittaa kirjaimella (myös alaviiva _ on sallittu, mutta älä käytä sitä) Muuttuja nimessä ei voi olla keskellä tyhjiä (space) merkkejä Tietotyypin ja muuttujan nimen välissä on oltava vähintään 1 space (välilyönti) Älä käytä erikoismerkkejä muuttujan nimessä $, %, +, -,*…). Numeroita voi käyttää, muttei 1. merkissä, alaviivaa (_) voi käyttää. Jos saman tietotyypin omaavia muuttujia on useita, ne voi esitellä kaikki omilla riveillään tai yhdellä rivillä, jossa on ensin tietotyyppi ja sen perässä pilkulla erotettuna kaikki samaa tietotyyppiä olevat muuttujat. Muuttujaesittelyn viimeisenä merkkinä on puolipiste (;)

13 C/C++ kirjastot (libraries)
Kaikkien C/C++ kääntäjien mukana on standardikirjastot Kirjastot sisältävät paljon erilaisia apulaisia Syötteen lukeminen ja näytölle tulostaminen ovat tavallisimmat esimerkit kirjaston tarjoamista palveluista Eri tyyppiset apulaiset on talletettu eri kirjastotiedostoihin Ohjelmoijan on tiedettävä, mistä kirjastosta haluaa apulaisia Ohjelma alkuun kirjoitetaan tarvittavien apulaisten ”sijainti” #include <iostream> using namespace std; . . . Kääntäjä ottaa kirjastosta vain käytetyt apulaiset mukaan

14 C++ –ohjelman rakenne #include <iostream> using namespace std;
int main() { // esittelyt // ohjelman suoritusosa return 0; } C++-ohjelman yleinen rakenne Ohjelman alussa on esiprosessorin ohjauskäsky #include, kaikki #:lla alkavat ovat esiprosessorille ohjauksia: suoritaan ennen kuin ohjelma käännetään. #include <iostream> ottaa ohjelmaan mukaan hakasulkujen välissä määritellyn tiedoston, include –lause ja using lause määrittelevät yhdessä, millaisia kirjastoja käytetään: io-järjestelmään liittyvät apulaiset Pääohjelma main sisältää otsikko-osan (tässä int main()) sekä aaltosulkujen sisällä suoritettavat käskyt Main on funktio, sen nimi on aina main. Kaikissa funktioissa on nimen perässä sulkeet. Sulkeiden sisällä voi olla jotain tai sitten ei Funktion runko (aaltosulkeiden sisällä) sisältää muuttujien esittelyt ja suoritettavan koodin Ohjelma sisältää useimmiten muitakin funktioita kuin main, niiden rakenne on kuitenkin samanlainen kuin mainin

15 Standardi –C kielessä on 32 avainsanaa
Standardi –C kielessä on 32 avainsanaa. Muitakin sellaisia sanoja on, joita ei voi käyttää esimerkiksi muuttujien niminä, esim. main Kaikki avainsanat (kuten suurin osa C:stä) kirjoitetaan kokonaan pikkukirjaimin. Muuttujat saa nimetä haluamikseen (aiemmin olleiden sääntöjen puitteissa + öökköset ei sallittu), mutta Nimen tulee kuvata muuttujan käyttöä On tapana kirjoittaa muuttujanimet pienellä. Jos muuttujan nimi muodostuu useasta sanasta jokainen muu kuin 1. sana aloitetaan isolla: omenienKokonaismaara, kahvinHinta, … Tunneilla pyritään kirjoittamaan muuttujanimet yms. suomeksi, jotta opiskelijalle on selvää, mikä on itse keksittyä, mikä kielen tarjoamaa. Materiaalin esimerkeissä muuttujanimet ja kommentit ovat pääasiassa englanniksi.

16 Ohjelman kääntäminen ja ajaminen
# include files Source file Compiler Object file Library files Object files Kääntäjälle viedään lähdekoodinen tiedosto sekä sisällytetyt tiedostot. Kääntäjä muodostaa näistä objekti- tiedoston Linkkeri saa lähtötiedoikseen kaikki ohjelmaan kuuluvat objektitiedostot sekä ohjelman käyttämät kirjastotiedostot ja muodostaa näistä suorituskelpoisen ohjelman Linker Executable


Lataa ppt "Ohjelmointitekniikka, syksy 2014, 5 op"

Samankaltaiset esitykset


Iklan oleh Google