Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:



Relevanta dokument
Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Att komma igång. Föreläsning 1

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Att komma igång. Föreläsning 1

Introduktion till programmering, hösten 2011

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Föreläsning 3. Programmering, C och programmeringsmiljö

Att komma igång. Föreläsning 1

Föreläsning 3. Programmering, C och programmeringsmiljö

Föreläsning 6 pekare och pekare tillsammans med arrayer

Planering Programmering grundkurs HI1024 HT 2014

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

TDIU01 - Programmering i C++, grundkurs

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

*Pekarvärden *Pekarvariabler & *

Föreläsning 2. Operativsystem och programmering

Grundkurs i programmering - intro

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Introduktion till programmering och Python Grundkurs i programmering med Python

Objektorienterad Programmering (TDDC77)

1 Språket C Valet av språket C++ för kompendiet. 1.2 Språket. 1.3 Att programmera. 1.4 Hello World Börja programmera

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Instruktioner för att kunna programmera på skolans datorer

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Programmeringsteknik med C och Matlab

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT data

TDDC77 Objektorienterad Programmering

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Extramaterial till Matematik Y

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Uttryck och villkor. Föreläsning 2

Föreläsning 10. Pekare (Pointers)

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

En kort text om programmering i C.

Programmering i C, 7,5 hp

Repetition C-programmering

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 1: Intro till kursen och programmering

Introduktion C-programmering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 1: Intro till kursen och programmering

Variabler och konstanter

Program & programmering

F4. programmeringsteknik och Matlab

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Objektorienterad programmering i Java I

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 3

OOP Objekt-orienterad programmering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Innehålls förteckning

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

JavaScript del 2 DocumentWrite, Prompt och ParseInt

Föreläsning 1 & 2 INTRODUKTION

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

NetBeans 5.5. Avsikt. Projektfönster

Klassdeklaration. Metoddeklaration. Parameteröverföring

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Programmering för språkteknologer I, VT2012. Rum

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

Objektorienterad programmering i Java

Föreläsning 1 & 2 INTRODUKTION

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

SMD 134 Objektorienterad programmering

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

NetBeans 7. Avsikt. Projektfönster

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Uttryck och villkor. Föreläsning 2

Programmering. Den första datorn hette ENIAC.

Studentportalen UNIX-konton (systemansvariga P4118) Lärare: Tom Smedsaas,

Objektorienterad Programmering (TDDC77)

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Föreläsning 0: Introduktion av Ada

Imperativ programmering. Föreläsning 2

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

Funktioner och programstruktur. Föreläsning 5

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

TDIU01 (725G67) - Programmering i C++, grundkurs

Logik och kontrollstrukturer

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Tentamen Grundläggande programmering

Programmering i C++ Kompilering från kommandoraden

Objektorienterad Programmering (TDDC77)

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Transkript:

Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk = språk som en människa kan förstå. (Efter kurs i programmering förstås!) Det finns olika programmeringsspråk, det som denna kurs behandlar kallas C. Man skriver ett program (uppsättning instruktioner) i C och översätter det till maskinspråk genom en procedur som kallas kompilering. Man brukar också kalla det program man skriver för källkod (eller C-kod) och det som kommer ut ur kompilatorn för maskinkod eller objektkod. (Egentligen finns det något som heter "länkning", eng. linking, men vi tar inte allting på en gång.) En kompilator kan normalt sett endast översätta ett språk till en sorts dator, om man byter programmeringsspråk eller dator måste man normalt sett även byta kompilator och för att kunna köra sina program måste de program man skrivit (källkoden) kompileras om för den nya plattformen (datorn). Det finns dock Java där detta inte riktigt gäller. (Läs gärna om det själva.) En kompilator är mycket dum och förstår ingenting av det som programmerats om det inte programmerats precis rätt. Det betyder att ni i början kommer att få gneta med en hel del småfel som verkar löjliga. Men ge inte upp. Det går över. Då ska vi börja gå igenom programspråket C! Ett C-program kan se ut ungefär så här: printf("hello World!\n"); Det enda som händer när man kompilerar och kör detta program är att vi får en utskrift: Hello World! Låt oss se på detaljer i programmet, det första som ofta kommer att finnas är ett så kallat inkluderingsdirektiv, det måste man ha för att kunna göra in- och utmatning. Vidare finns sedan det som ska göras i en main-slinga och det som ska göras är en utskrift. Utskriften sker via anropet till printf() som ni kommer att använda väldigt mycket. Det finns i stdio.h. Ordet markerar programmets början, det är här som det finns som ska hända först, saker och ting händer på kommando, om vi skriver ett annat program som ser ut så här: Johnny Panrike, johnny.panrike@sth.kth.se Sidan 1 av 5

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010 printf("hello World!\n"); printf("hello Moon! "); printf("hello Sun!\n"); Så får vi tre utskrifter, på två olika rader, det ser ut så här: Hello World! Hello Moon! Hello Sun! Lägg märke till att de två sista utskrifterna hamnar på samma rad, det beror på att vi i inte bytt rad efter utskriften av Hello Moon!, man byter rad med escapesekvensen \n som förekommer sist i den första och den sista utskriften. När vi studerar program så kommer vi att tala om att saker "händer" och peka på rader i program och säga att "här händer det här och det här" och vi kan följa förloppet i ett C-program genom att studera texten i programmet. ( Programmet kan också kallas programkoden eller C-koden.) Vi tittar på ett annat exempel: int i; i=20; printf("the value of i is: %d.\n",i); När vi kör detta program får vi utskriften: The value of i is 20. Här introduceras något som vi kallar en variabel. En variabel är ett förvaringsutrymme med ett namn som kan innehålla ett värde. Variabelns namn kallas rätt och slätt variabelnamnet. Variabelnamnet här är i. När vi skriver i=20; så tilldelas variabeln i värdet 20. Värdet 20 läggs in i förvaringsutrymmet. Sedan skrivs värdet på i ut. Det kan nu vara lämpligt att peka ut vissa detaljer. Vi ser att det står int i; överst. Det betyder att variabeln i deklareras. Vi måste göra deklarationer för alla variabler i ett program innan vi kan börja använda dem. I deklarationen finns först variabelns typ, här är det int som är en förkortning för integer = engelska för heltal. Sedan kommer variabelnamnet, i, och sedan avslutas deklarationen med ett semikolon (";"). Johnny Panrike, johnny.panrike@sth.kth.se Sidan 2 av 5

Efter deklarationen lämnas en blank rad, det är bra för läslighetens skull att separera deklarationerna från de övriga raderna i ett C-program. När vi skriver i=20; så läggs värdet 20 in i variabeln i. Det kallas en tilldelning (assignment) och har till följd att variabeln i härmed förvarar värdet 20 i sig. Vi säger kortare att "i har värdet 20". Sedan kommer utskriften med printf(). Utskriften görs med en så kallad funktion och printf() är en funktion. Lägg märke till att det som står innanför parenteserna i printf() anger det som ska skrivas ut, vi vill skriva ut att i har värdet 20 och en förklarande text om det. Det bakas ihop till en så kallad formatsträng och sedan anges den variabel som ska skrivas ut. Textföljden "The value of i is: %d.\n" kallas alltså formatsträng och den anger hur utskriften ska se ut. Den kan tolkas så här: Skriv först "The value of i is: " och skriv sedan ut ett heltalsvärde (%d), en punkt (.) och byt sedan rad (\n). Heltalsvärdet symboliseras av symbolen %d och radbytet av \n. Teckenföljden %d brukar kallas en omvandlingsspecifikation och anger vad som ska skrivas ut, %d står för heltal. Varje omvandlingsspecifikation måste svara mot ett värde senare efter formatsträngen och vi ser att det motsvaras i programmet av att i förekommer efter formatsträngen. Betydelsen av hela raden printf("the value of i is: %d.\n",i); är alltså att värdet på i skrivs ut tillsammans med en förklarande text och resultatet blir alltså The value of i is 20. Nu tittar vi på ett mer avancerat exempel ur C-programming, A Modern Approach (förra årets bok): /* dweight.c (Chapter 2, page 20) */ /* Computes the dimensional weight of a 12" x 10" x 8" box */ int main(void) int height, length, width, volume, weight; height = 8; length = 12; width = 10; volume = height * length * width; weight = (volume + 165) / 166; printf("dimensions: %dx%dx%d\n", length, width, height); printf("volume (cubic inches): %d\n", volume); printf("dimensional weight (pounds): %d\n", weight); return 0; Detta program ger utskriften Dimensions: 12x10x8 Volume (cubic inches): 960 Dimensional weight (pounds): 6 Johnny Panrike, johnny.panrike@sth.kth.se Sidan 3 av 5

Vi har här deklarerat flera variabler, height, length, width, volume och weight och tilldelat dem flera olika värden och kombinerat dem i olika beräkningar. Beräkningarna ser ni direkt efter tilldelningarna som ger variablerna värdena 8, 12 respektive 10 och de beräkningarna innebär att vi beräknar volym och vikt av något slags paket. När man skriver height * length * width så utför programmet den motsvarande matematiska operationen som innebär att de tre värdena i variablerna height, length och width multipliceras med varandra. Värdet läggs sedan in i variabeln volume genom att man skriver volume = det förra uttrycket height * length * width. Det viktiga är inte tillämpningen utan att förstå lite om hur man skriver ett C-program. Vi observerar att flera saker händer efter varandra, först tilldelningarna, sedan beräkningarna och sist utskrifterna. Dessa utskrifter innehåller mer komplicerade formatsträngar än den utskrift vi tidigare såg, men principen är den samma: en förtydligande text tillsammans med omvandlingsspecifikationer för de värden som ska skrivas ut. För varje omvandlingsspecifikation måste motsvarande värde anges efter formatsträngen. När något händer i C brukar man kalla det en sats (statement) när man gör plats för något kallas det en deklaration (declaration), både satser och deklarationer ska avslutas med semikolon ";". Vi tittar på programmet ovan, vilka rader är deklarationer och vilka är satser? Vi tittar på ett nytt exempel från boken: /* dweight2.c (Chapter 2, page 23) */ /* Computes the dimensional weight of a box from input provided by the user */ int main(void) int height, length, width, volume, weight; printf("enter height of box: "); scanf("%d", &height); printf("enter length of box: "); scanf("%d", &length); printf("enter width of box: "); scanf("%d", &width); volume = height * length * width; weight = (volume + 165) / 166; printf("volume (cubic inches): %d\n", volume); printf("dimensional weight (pounds): %d\n", weight); return 0; Johnny Panrike, johnny.panrike@sth.kth.se Sidan 4 av 5

Detta program accepterar värden från användaren och körningen ser ut så här: Enter height of box: 8 Enter length of box: 12 Enter width of box: 10 Volume (cubic inches): 960 Dimensional weight (pounds): 6 Här har vi fetmarkerat det som användaren matar in. Inmatning sker med en funktion som heter scanf(). Den fungerar som printf() fast tvärtom: data åker in i datorn istället för ut. Det är lite svårt att förklara exakt hur den fungerar nu, men det har i alla fall också en formatsträng. Både printf() och scanf() har ett f i sina namn för att de tar en formatsträng, namnet för printf() är egentligen "Print Formatted Output" och namnet för scanf() är egentligen "Scan Formatted Input", men dessa namn är förstås för otympliga att hålla på med. De förkortas således printf() respektive scanf(). Programmeringsmiljö När vi programmerar i C i denna kurs ska vi använda en miljö som heter Code Blocks. Vi kommer att programmera främst under Windows 7 och Windows XP. Möjligtvis tittar vi på hur det går till i Linux också. Den praktiska tentamen kommer troligtvis att köras under Windows XP så ni måste träna ordentligt på att programmera i Windows XP. Inga av övningarna kommer att hållas i skolans datasalar men ni har tillgång till datasalarna och rekommenderas att gå in där på andra tider än de schemalagda. Ni kan även använda andra plattformar som Linux, Mac OS X, osv. Men tyvärr kommer det inte att finnas mycket support på dessa plattformar. Men speciellt när det gäller Linux så brukar folk vara ganska självständiga. OBS: Samtliga laborationer kommer att redovisas på skolans stationära datorer (med Windows XP på), det betyder att ni måste flytta era program till skolans datorer i god tid före redovisningen. Detta är av tre skäl: 1. Vi harbokat skolans datasalar för redovisningar. 2. Ni ska träna på att arbeta i Windows XP för att det är bra att kunna det. 3. Ni ska träna på att arbeta i Windows XP för den praktiska tentamen går i Windows XP. Det vi ska göra under resten av dagen är att ni får installera Code Blocks på er maskin (om ni inte redan gjort det) och börja med de övningsuppgifter som är rekommenderade. Installationsanvisningarna finns på kursens webbsida (några har redan gjort det i introduktionskursen), de rekommenderade övningarna finns angivna i planeringen (som också finns på kursens webbsida) och de rekommenderade övningarna finns i kurslitteraturen. Så det är bara att sätta igång. Jag finns här och hjälper er på alla sätt jag kan. Johnny Panrike, johnny.panrike@sth.kth.se Sidan 5 av 5