Introduktion till debugging med GDB
|
|
- Jan-Olof Jonasson
- för 5 år sedan
- Visningar:
Transkript
1 Jozef Swiatycki Sid 1(11) *:58/ID100V HT07 Innehållsförteckning Inledning...1 Läsa mer om GDB...2 Programexempel...2 Förberedelse för debugging...2 Radnumrering av källkod...3 Grundläggande GDB-kommandon...3 Starta GDB...3 Starta programexekveringen...4 Avsluta GDB...4 Brytpunkter...4 Fortsätta exekveringen...4 Skriva ut variabelvärden...5 Flytta sig inom anropsstacken...5 Skriva ut anropsstacken...6 Skriva ut en länkad lista...6 Radvis exekvering...7 Exekvera resten av en funktion...7 Lokalisering av fel...8 Lokalisering av exekveringsavbrott...8 Lokalisering av oändliga loopar...9 Återstående fel i wrong.c...9 Kommandoradsargument vid debugging...10 Undersökning av void *-utpekade objekt...10 Exempelprogrammen right.c och wrong.c...11 Inledning Debugging (man har föreslagit "avlusning" som svensk term, den har dock inte blivit allmänt accepterad) utgör en del av programtestning, där tester först visar förekomsten av fel (programmets output överensstämmer inte med den förväntade), varefter felen måste lokaliseras och avhjälpas. Det finns olika tekniker för denna lokalisering inklusive analys av källkoden av programmeraren eller en grupp av programmerare och provkörningar av program med olika indata och med inlagda spårutskrifter. Ett mycket viktigt verktyg i samband med provkörningar är s.k. debuggers ("avlusningsverktyg") som är program som tillåter exekvering av det testade programmet under kontroll av debuggern, med möjlighet att observera det testade programmets exekveringsföljd, värden i dess primärminnesceller m.m. Det exekverbara programmet är ju uttryckt i maskininstruktioner och källkodens variabel- och funktionsnamn är ersatta med primärminnesadresser. För att möjliggöra kommunikation med programmeraren med användning av källkodens radnummer och variabel- och funktionsnamn lägger kompilatorer och länkare in omfattande symboltabeller som innehåller information om avbildning av källkodsrader på motsvarande maskininstruktionsföljder och en avbildning av variabel- och funktionsnamn på primärminnesadresserna. Debugging med användning av källkodens symboler och radnummer kallas symbolisk debugging. Här introduceras debuggern GDB som är GNU-debuggern för program kompilerade med kompilatorn GCC.
2 Jozef Swiatycki Sid 2 *:58/ID100V HT07 Läsa mer om GDB Tillsammans med detta häfte delas ut ett tvåsidigt referenskort med samtliga GDBkommandon och mycket kortfattad beskrivning av varje kommando. Kortet finns även för nedladdning och utskrift (Postscript-format) på momentets webbsida (Kursmaterial). På momentets webbsidor (Verktygsmanualer >> GDB) finns en länk till den fullständiga GDB-manualen "Debugging with GDB" i HTML-format. GDB har kommandot help, som ger en lista med olika kommandokategorier. Kommandot help kategori ger en lista av kommandon inom denna kategori med en kort beskrivning av varje kommando. Kommandot help kommando ger en mer fullständig beskrivning av kommandot. Det finns olika användargränssnitt till GDB. Här beskrivs det grundläggande kommandogränssnittet. GDB kan dock även köras inifrån Emacs, se avsnittet "Using GDB under GNU Emacs" i GDB-manualen på webben. Det finns även ett antal grafiska användargränssnitt till GDB under Linux, främst ddd som startas med kommanot ddd programnamn. Kommandot man ddd ger mer information, liksom webbsajten Programexempel Denna introduktionen ges i form av ett par exempel: programmen right.c och wrong.c, som återges sist i häftet. Båda programmen skapar en länkad lista av poster bestående av ett nummer, en sträng och en pekare till nästa post. Strängarna till posterna tas från en array av strängar (för att undvika tidsödande inmatning under demonstrationen av debuggern). Programmet right.c är inte behäftat med (avsiktliga) fel, men har inte utskrift av listan implementerad, det används för att visa grundläggande GDB-kommandon (t.ex. hur man kan undersöka programvariabler och följa exekveringen rad för rad). Programmet wrong.c är behäftat med några fel som är markerade i källkoden, det används för att demonstrera olika felsökningssituationer. Dessutom används programmet echoln.c för att vissa hur kommandoradsargument anges under debugging (detta program är inte intressant nog för att återges i häftet). Dessa program finns på kursens webbsidor, de kan med fördel kopieras till egen katalog och användas tillsammans med detta häfte för övning i fall man missar presentationen. Förberedelse för debugging För att kompilatorn och länkaren skall inkludera symboltabellen (och alltså möjliggöra symbolisk debugging) måste man både vid kompilering och länkning ge flaggan -g: gcc -c -g right.c gcc -g right.o -o right eller i ett steg: gcc -g right.c -o right Obs att det kompilerings- och länkningskommando som på vårt Linux-system genereras av programmet make (och utan att man själv anger hur make skall generera kommandon, vilket
3 Jozef Swiatycki Sid 3 *:58/ID100V HT07 kommer att visas på Verktygspresentation 2) inte innehåller denna flagga. Tillsvidare kan man alltså inte använda det bekväma make-kommandot om man vill kunna debugga sina program. Om man glömt att kompilera eller länka sitt program med flaggan -g kan man fortfarande debugga sitt program, men man måste göra det på maskinkodsnivå. Detta rekommenderas inte, men GDB kommer att starta utan att kunna "köra programmet radvis" eller förstå variabel- eller funktionsnamn. Man ser dock att symbolisk info inte är inläst genom att GDB meddelar att "...(no debugging symbols found)...", man bör då lämna GDB, kompilera och länka om programmet med -g-flaggan och starta GDB igen. Radnumrering av källkod GDB identifierar källkodsrader med radnummer. Det kan alltså vara bra att lätt kunna lokalisera källkodsrader med hjälp av deras radnummer. GDB har ett kommando för utskrift av radnumrerade portioner av källkoden på skärmen. Kommandot heter list (kan förkortas till l), som default skriver det ut 10 rader, nästa kommando list skriver då 10 rader till. Man kan ge kommandot ett radnummer, t.ex. list 53 varvid kommandot skriver ut 10 rader omgivande denna rad, eller ett radnummerintervall, t.ex. list 53, 59 varvid GDB skriver ut rader from 53 tom 59. I Emacs kan man se radnummer där markören befinner sig vid bokstaven L på mode-raden. Man kan även ge Emacs-kommandot M-x goto-line RETURN radnummer (tryck på ALT och x samtidigt, skriv in kommandot goto-line, tryck på RETURN, mata in radnumret och tryck på RETURN), varvid markören hoppar till denna rad (detta kommando kan även fås genom menyvalet Edit >> Go To >> Goto Line... ). Slutligen kan man vid utskrift av textfil med kommandot lpp begära radnumrering med flaggan -N: lpp -N right.c Grundläggande GDB-kommandon Starta GDB GDB startas med kommandot gdb programnamn där programnamn är namnet på den exekverbara filen. Källkoden borde dock finnas på samma katalog för att GDB skall kunna visa källkodsrader under debugging. GDB svarar så här: GNU gdb cvs Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-linux"... Texten på sista raden är GDBs prompt som innebär att GDB väntar på kommandon.
4 Jozef Swiatycki Sid 4 *:58/ID100V HT07 Starta programexekveringen Programexekvering startas med kommandot run (kan förkortas till r), men om man ger detta kommando direkt så exekveras programmet från början till slut som vanligt (det finns ibland anledning att göra så, se avsnittet om lokalisering av exekveringsfel resp. oändliga loopar). Vill man observera programexekveringen bör man ange att exekveringen skall stoppas någonstans i programmet genom att sätta in s.k. brytpunkter. Avsluta GDB Innan vi tittar på brytpunkter kan vi nämna hur man lämnar GDB: kommandot heter quit (kan förkortas till q). Brytpunkter En brytpunkt sätts i en viss funktion eller på en viss källkodsrad och innebär att exekveringen av programmet kommer att avbrytas just när funktionen blivit anropad (men innan dess första sats har blivit exekverad) eller just innan exekveringen av den angivna källkodsraden, sedan kan man ge nya GDB-kommandon och fortsätta exekveringen. Sätta brytpunkt i en viss funktion: kommandot heter break funktionsnamn (kan förkortas till b funktionsnamn), t.ex. b dohitta Efter detta kommando ger GDB utskriften Breakpoint 1 at 0x804880e: file right.c, line 53. GDB numrerar brytpunkter, denna brytpunkt har nummer 1 (vissa kommandon kräver brytpunktsnummer, men vi kommer inte att titta på dessa kommandon i denna introduktion). Därefter följer den hexadecimala adressen till instruktionen där exekveringen kommer att avbrytas, även den informationen vi kan ignorera. Sedan följer filnamnet och radnummer i källkoden till den sats inför vilken exekveringen kommer att avbrytas. Om man nu ger kommandot run så kommer exekveringen att starta och sedan avbrytas när funktionen dohitta har anropats, med utskriften: Breakpoint 1, dohitta (first=0x8049ca0) at right.c:53 53 printf("vem: "); GDB visar att exekveringen avbröts vid brytpunkt 1, i funktionen dohitta, inom parentes anges värden som funktionens argument hade vid detta anrop (i detta fall är det en pekare, så dess värde är en hexadecimal primärminnesadress, som inte ger oss så mycket information. Ibland kan det dock vara värt att titta på sådana värden, t.ex. om man vill se om två pekare pekar på samma sak - samma hexadecimala adress betyder att de pekar på samma sak). Därefter visar GDB vilken sats som står i tur att utföras och inväntar nya kommandon. Om man vill ange brytpunkt på en viss källkodsrad istället så är kommandosyntaxen break radnummer, t.ex. b 53 Om funktionen eller källkodraden finns i en annan fil än den aktuella kan funktionsnamnet eller radnumret kvalificeras med källkodsfilens namn: b list.c:dohitta b list.c:53 Fortsätta exekveringen Nu kan man ge nya kommandon (sätta nya brytpunkter, skriva ut variabelvärden o.s.v.) och sedan fortsätta exekveringen. Kommandot för att fortsätta exekveringen efter avbrott heter continue (kan förkortas till c).
5 Jozef Swiatycki Sid 5 *:58/ID100V HT07 Skriva ut variabelvärden Om man vill se vilka värden variabler har vid detta tillfälle kan man ge kommandot print (kan förkortas till p). I funktionen dohitta, där vi nu "står", finns en variabel vem, man kan skriva ut dess värde med p vem varvid GDB svarar något i stil med: $1 = "À\227\0@\200p\023@\0P\001@±a\004@H\236\023@" Variabeln vem är en array av char och den har ännu inte blivit initierad, så dess innehåll är några "skräptecken". GDB numrerar även värden som den visar, därav inledningen med $1. Vi kommer inte att behöva dessa nummer, men väl en notation för "det senast utskrivna värdet" (se avsnittet "Skriva ut en länkad lista"), så det är bra att veta att GDB kommer ihåg de utskrivna värdena. På samma sätt kan globala data skrivas ut, t.ex. om vi vill veta värdet av den globala antal: p antal $2 = 8 För att se värden för existerande variabler i andra funktioner krävs det dock mer (se nästa avsnitt). Flytta sig inom anropsstacken Funktionen dohitta är anropad från main och i main finns en variabel som heter list (denna variabel skickades som argumentet first till funktionen dohitta). Variabler i funktionen main existerar, main har ju inte terminerat utan bara avbrutits i avvaktan på att dohitta skall bli klar. Säg att vi vill se värdet av variabeln list: p list No symbol "list" in current context. GDB "ser" vid varje ögonblick de symboler som är deklarerade enligt C:s regler för deklarationsvidd. I funktionen dohitta syns denna funktions lokala variabler och de globala variablerna, däremot syns inte lokala variabler i andra funktioner, även om dessa funktioner är aktiva och deras variabler existerar och ligger på stacken. Man kan dock flytta GDBs "synvinkel" upp (till tidigare anropad funktion) och ner (till senare anropad funktion, detta kan givetvis endast göras om man har flyttat synvinkeln upp innan). Kommandot för att flytta synvinkeln upp heter up, för att flytta synvinkeln ner down. Så för att se variabeln list från funktionen main kan man göra up #1 0x e in main () at right.c:76 76 case 'H': dohitta(list); break; p list $4 = (Post *) 0x8049ca0 Detta visar nu värdet på pekarvariabeln list och även att denna adress betraktas som pekare till Post. Obs att man nu kan se att list:s värde är lika med argumentet first:s värde (som visades när funktionen avbröts vid brytpunkten). Obs att detta inte ändrar exekveringsordningen, programmet är fortfarande avbrutet i funktionen dohitta, vi har bara ändrat vilka symboler GDB ser just nu.
6 Jozef Swiatycki Sid 6 *:58/ID100V HT07 Skriva ut anropsstacken Man kan se anropsstacken med kommandot backtrace (kan förkortas till bt): bt #0 dohitta (first=0x8049ca0) at right.c:53 #1 0x e in main () at right.c:76 Stacken visas "upp och ner", utskriften visar att först anropades main och från main på rad 76 anropades dohitta (med argumentvärdet inom parentes), denna funktion är avbruten på rad 53. Vi kommer att behöva detta kommando senare (se avsnittet "Lokalisera exekveringsavbrott"). Skriva ut en länkad lista Säg att vi vill titta på den länkade listan. Om vi har flyttat GDBs synvinkel upp på stacken till main kan vi flytta den tillbaka till dohitta och be om utskrift av argumentet first: down #0 dohitta (first=0x8049ca0) at right.c:53 53 printf("vem: "); p first $5 = (Post *) 0x8049ca0 Detta säger oss inte så mycket, men print-kommandot accepterar alla syntaktiska åtkomstkonstruktioner som finns i C, så för att avreferera pekaren skriver man * framför: p *first $6 = {nr = 0, data = 0x8049cb0 "STEFAN", next = 0x8049cc0} Detta säger oss mer, strukten som pekas ut av first har alltså dessa värden. Obs att char * - värden skrivs ut med både adressen och den utpekade strängen! Vill vi titta på nästa post i listan kan vi skriva: p *first->next $7 = {nr = 1, data = 0x8049cd0 "HUGO", next = 0x8049ce0} Detta blir dock senare omständigt: för att skriva tredje posten för man skriva p *first->next->next o.s.v. Det är här som historiken över utskrivna värden kommer till hjälp. Det senast utskrivna värdet kan refereras med symbolen $ (dollar). Vid utskrift av listan vill vi hela tiden skriva ut det senast utskrivna värdet utökat med ->next, så vi kan skriva printkommandot så här: p *$->next och om vi upprepar detta kommando så blir ju det senast utskrivna värdet nästa post och upprepning av samma kommando kommer att ge oss nästa post o.s.v. Eftersom GDB upprepar det senast givna kommandot när man bara trycker på RETURN så kan man skriva ut hela listan (en post i taget) med kommandona: p *first $8 = {nr = 0, data = 0x8049cb0 "STEFAN", next = 0x8049cc0} p *$->next $9 = {nr = 1, data = 0x8049cd0 "HUGO", next = 0x8049ce0} och därefter räcker det med att bara trycka på RETURN så får man utskrift av nästa post.
7 Jozef Swiatycki Sid 7 *:58/ID100V HT07 Radvis exekvering I många situationer kan det vara till hjälp att följa programexekveringen en källkodsrad i taget. Det finns två kommandon för att exekvera nästa källkodsrad (eller snarare motsvarande maskininstruktioner) och sedan avbryta exekveringen och vänta på kommandon: next (kan förkortas till n) och step (kan förkortas till s). Att det finns två sådana kommandon beror på att nästa källkodsrad kan innehålla ett funktionsanrop och att man i så fall kan vilja att hela funktionen utförs innan man avbryter exekveringen eller att den stegvisa exekveringen går in i funktionen och stannar där. Kommandot next utför i en sådan situation funktionen utan avbrott medan kommandot step stegar in i funktionen. Säg att vi vill följa exekveringen av programmet right.c radvis. Vi startar GDB med gdb right Kommandona next och step kan endast användas i ett program vars exekvering har startats. Vi kan å andra sidan inte bara ge kommandot run för då kommer hela programmet att utföras utan avbrott. Så en mycket vanlig start av en debugging är att man ger följande två kommandon: b main Breakpoint 1 at 0x80488ae: file right.c, line 63. run Starting program: /amd/blt/home1/mars/dsv/jozef/c/debug/right Breakpoint 1, main () at right.c:63 63 Post *list=makelist(); Man sätter alltså en första brytpunkt i main (där exekveringen ju börjar) och därefter startar exekveringen av programmet. Nu kan man ge kommandot next om man vill utföra hela makelist-anropet och stanna innan nästa rad i main eller kommandot step om man vill gå in i makelist och stanna innan dess första sats. Obs att upprepning av senaste kommandot vid tryckning på RETURN gör att man efter ett första next eller step bara behöver trycka på RETURN så länge man vill fortsätta till nästa rad. Exekvera resten av en funktion Säg att vi går in i funktionen makelist: step makelist () at right.c:29 29 Post *first=null, *last, *ny; och då inser att det var onödigt och vi vill inte behöva stega oss igenom hela funktionen, däremot vill vi stanna innan nästa sats i main. Ett sätt att göra det på vore att sätta en brytpunkt på nästa sats i main och ge kommandot continue, men ett bättre sätt är att ge kommandot finish (kan förkortas till fini), som exekverar funktionen tills den terminerar och stannar efter anropet. Funktionens returvärde skrivs ut på skärmen: fini Run till exit from #0 makelist () at right.c:29 0x080488b3 in main () at right.c:63 63 Post *list=makelist(); Value returned is $1 = (Post *) 0x8049ca0 Detta sätt behövs bl.a. om man vill stega in i en funktion vars argument är ett funktionsanrop, ta t.ex. satsen if (tmp=find(first, strtoupper(vem))) Om vi vill stega in i funktionen find måste kommandot bli step, men detta kommando kommer att stega in i funktionen strtoupper först. Inne i strtoupper ger man sedan kommandot finish, därefter ger man kommandot step igen och hamnar i find.
8 Jozef Swiatycki Sid 8 *:58/ID100V HT07 Lokalisering av fel Lokalisering av exekveringsavbrott Vid försök till exekvering av programmet wrong.c får man bara den korthuggna utskriften Segmentation fault Detta innebär att det någonstans i programmet finns adresseringsfel. Om man låter programmet exekveras under kontroll av GDB får man mer hjälp: gdb wrong GNU gdb cvs Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-linux"... run Starting program: /amd/blt/home1/mars/dsv/jozef/c/debug/wrong Program received signal SIGSEGV, Segmentation fault. 0x080486e6 in makelist () at wrong.c:33 33 ny->nr=i; Detta visar att felet inträffat på rad 33 i programmet, i funktionen makelist. Studerar man källkoden upptäcker man att pekaren ny inte har fått något värde - vi har glömt att allokera utrymme till posten. Man får lämna GDB, rätta programmet (allokera utrymme till posten och låta pekaren ny peka på detta utrymme), kompilera om programmet och försöka igen. Nästa försök slutar lika illa. Vi startar GDB och ger kommandot run, men denna gång är inte utskriften lika hjälpsam: run Starting program: /amd/blt/home1/mars/dsv/jozef/c/debug/wrong Program received signal SIGSEGV, Segmentation fault. 0x in strcpy () from /lib/libc.so.6 Felet inträffar inne i en biblioteksfunktion (strcpy), det beror säkert på att vi skickar fel argumentvärden till strcpy, men hur skall vi veta varifrån i vårt program funktionen anropades? Det är här som kommandot backtrace (bt) för utskrift av anropsstacken är till hjälp: bt #0 0x in strcpy () from /lib/libc.so.6 #1 0x e in makelist () at wrong.c:35 #2 0x f in main () at wrong.c:69 Detta visar att strcpy anropades från makelist på rad 35. Vi tittar i källkoden och upptäcker att vi glömt att allokera utrymme till strängen som skickas till strcpy för kopiering av strängvärdet. Vi får avsluta GDB, ändra i källkoden, kompilera om och försöka igen...
9 Jozef Swiatycki Sid 9 *:58/ID100V HT07 Lokalisering av oändliga loopar Efter senaste ändring fungerar programmet mycket bättre. Men när vi prövar kommandot H till programmet och anger något namn så händer inget mer, programmet "hänger sig" och måste brytas med CTRL-C. Vi misstänker en oändlig loop, men hur hitta var den inträffar? Om man exekverar under GDBs kontroll och bryter med CTRL-C avbryts exekveringen på det ställe där den råkade befinna sig och GDB meddelar var man är och inväntar kommandon: gdb wrong GNU gdb cvs Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-linux"... run Starting program: /amd/blt/home1/mars/dsv/jozef/c/debug/wrong Du kan ge följande kommandon: A - för att skriva ut alla H - för att hitta en viss Q - för att avsluta Kommando> h Vem: stefan (Här "hänger sig" programmet och jag avbryter med CTRL-C) Program received signal SIGINT, Interrupt. 0x in find (first=0x8049c78, str=0xbffffa38 "HUGO\n") at wrong.c:51 51 if (strcmp(tmp->data, str)==0) Tydligen befinner sig programmet på rad 51, i loopen som skall gå igenom listan och jämföra varje posts medlem data med den sökta strängen. Här kan man skriva ut värdet på variabeln tmp (som är den hjälpvariabel som skall flyttas i varje varv i loopen tills hela listan är genomgången eller den sökta posten har hittats) och följa exekveringen några varv i loopen med hjälp av kommandot next. Ganska snart inser man att man loopar i for-satsen utan att tmp förändras... Man misstänker alltså att for-satsen är felaktig, framför allt modifieringsuttrycket. Och studerar men det närmare ser man att vi inte ändrar variabeln tmp (det står bara tmp->next istället för tmp=tmp->next). Återstående fel i wrong.c Det återstår några fel i demoprogrammet wrong.c. För att lokalisera dessa fel måste man följa programexekveringen och undersöka variablers värden, vilket görs med kommandon som redan tagits upp. Arbetsgången lämpar sig inte för en skriftlig beskrivning men demonstreras (om tiden tillåter) på Verktygspresentation 1.
10 Jozef Swiatycki Sid 10 *:58/ID100V HT07 Kommandoradsargument vid debugging Om man vill debugga program som tar kommandoradsargument så kan inte argumenten skrivas när man startar GDB (de kommer att tas som argument till GDB, inte till det testade programmet). Istället skall argumenten skrivas vid run-kommandot till GDB: gdb echoln GNU gdb cvs Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-linux"... run hej hopp din ödla Starting program: jozef/c/debug/echoln hej hopp din ödla /amd/blt/home1/mars/dsv/jozef/c/debug/echoln hej hopp din ödla Program exited normally. Undersökning av void *-utpekade objekt Vi kommer under momentet *:58 att bygga återanvändbara datastrukturer som skall kunna hantera data av godtycklig typ. Sådana datastrukturer konstrueras i C med hjälp av void *- pekare, som kan peka ut vad som helst men inte får avrefereras. Om man debuggar en sådan modul och begär utskrift av det pekaren pekar ut svarar GDB: p *vpek Attempt to dereference a generic pointer. Men vid debugging av programmet är ju modulen med den återanvändbara datastrukturen sammanlänkad med ett tillämpningsprogram och vi vet under debuggingen vilken typ av data pekaren pekar ut (eller snarare vad den borde peka ut). Man kan då med ett "type cast" berätta för GDB hur den skall tolka de utpekade data, säg att vi tror att pekaren pekar ut ett objekt av typen Post: p *(Post *)vp $2 = {nr = 1, data = 0x8049cc8 "HUGO", next = 0x0}
11 Jozef Swiatycki Sid 11 *:58/ID100V HT07 Exempelprogrammen right.c och wrong.c Exempelprogrammen finns på kursens webbsidor under rubriken "Övrigt".
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Läs merFöreläsning 2: Debugging
2D1458, Problemlösning och programmering under press Föreläsning 2: Debugging Datum: 2006-09-11 Skribent(er): Marcus Dicander, Alix Warnke Föreläsare: Fredrik Niemelä Föreläsningen handlade om felsökning
Läs merProgrammering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Läs merTentamen *:58/ID100V Programmering i C Exempel 3
DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst
Läs merObjektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Läs merProgrammering i C++ Kompilering från kommandoraden
Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö
Läs merProgrammering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman
Läs merPoster ( structar ) Postdeklarationer
Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.
Läs merF4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Läs merPekare och arrayer. Indexering och avreferering
Pekare och arrayer En array är ett sammanhängande minnesområde rymmande ett antal element av en viss typ. Arraynamnet kan ses som adressen till arrayens början, dvs. dess första element. En pekare är en
Läs merFunktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare
Funktionspekare, inledning: funktionsanropsmekanismen Vid funktionsanrop läggs aktuella argumentvärden och återhoppsadressen på stacken, därefter sker ett hopp till adressen för funktionens första instruktion.
Läs merProgrammera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Läs merPython. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
Läs merprog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog
DSV Sid 1(10) *:58/ID100V Jozef Swiatycki Innehållsförteckning Inledning... 1 Raddelning, kommentarer, macros och inkludering... 4 Undertryckning av utskrifter från make... 6 Flera kommandon per mål...
Läs merPython. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
Läs merLite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Läs merHär beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:
Bilaga C Eclipse 1 Inledning Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på: www.eclipse.org help.eclipse.org www.eclipse.org/downloads/
Läs merProgrammeringsteknisk översiktskurs för yrkeshögskoleprogram
Programmeringsteknisk översiktskurs för yrkeshögskoleprogram Föreläsning 12 Våren 2005 Innehåll Palindrom Hur man hittar fel i program, debuggning Felhantering, hur man förhindrar program att krascha Ev.
Läs merKompilera och exekvera Javakod
Kompilera och exekvera Javakod Förberedelser För att kunna göra dessa övningar måste du ha installerat Java Development Kit, JDK, som bland annat innehåller Java kompilatorn, javac. Hur du installerar
Läs merProgrammering I Tobias Wrigstad fredag, 2009 augusti 28
Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,
Läs merEmacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016
Emacs Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016 Historia 2/21 Utvecklas konstant, från 70-talet Är en generellt texteditor (INTE ordbehandlare) som fokuserar på texten, inte utseendet
Läs mer*Pekarvärden *Pekarvariabler & *
*Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)
Läs merLaboration 1. "kompilera"-ikonen "exekvera"-ikonen
Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merEclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.
Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Läs merFöreläsning 2: Avlusning och antilustekniker
2D1458, Problemlösning och programmering under press Föreläsning 2: Avlusning och antilustekniker Datum: 2007-09-11 Skribent(er): Emil Hesslow, Stefan Pettersson Föreläsare: Per Austrin Föreläsningen handlade
Läs merVärmedistribution i plåt
Sid 1 (6) Värmedistribution i plåt Introduktion Om vi med konstant temperatur värmer kanterna på en jämntjock plåt så kommer värmen att sprida sig och temperaturen i plåten så småningom stabilisera sig.
Läs merInledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio
Ditt första C#-program med Visual Studio Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så
Läs merLaboration 1. En första bekantskap med C++ Namn: Godkänd den: Rest:
Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 1 Laboration 1 En första bekantskap med C++ Namn: Godkänd den: Sign: Rest: Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 2
Läs merLaboration 3 HI1024, Programmering, grundkurs, 8.0 hp
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen
Läs merLabora&on 2 Funk&oner, if och loop övningar/uppgi:er
Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns
Läs merCode-Lite tutorial ( /RoJ)
Code-Lite tutorial (2013-03-20/RoJ) Följ dessa anvisningar för att skapa projekt, kompilera/länka och testa dina laborationsuppgifter 3,4. Project Projekt, innehåller bland annat ett antal källtextfiler
Läs merTentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-04-28 Tid: 08-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
Läs merDet finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
Läs merPlanering av ett större program, del 2 - for och listor. Linda Mannila
Planering av ett större program, del 2 - for och listor Linda Mannila 9.10.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Utskrift Indata Felhantering Funktioner och moduler (grunder)
Läs merFunktioner forts. F3: Funktioner (kap. 5) Parametrar. findgear.m forts
F3: Funktioner (kap. 5) Funktionsfil, funktionsanrop in- och utparametrar, anropsin- och anropsutparametrar lokala, globala och persistenta variabler lokala funktioner return variabelt antal parameterar,
Läs merEclipse en handledning
LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap VT 2015 Eclipse en handledning 1 Inledning Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas
Läs merFöreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Läs merProgramsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010
Programsystemkonstruktion med C++: Övning 1 Karl Palmskog palmskog@kth.se september 2010 Programuppbyggnad Klassens uppbyggnad en C++-klass består av en deklaration och en definition deklaration vanligtvis
Läs merFrekvenstabell över tärningskast med C#
Instruktion Frekvenstabell över tärningskast med C# Introduktionsuppgift Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Innehåll Du ska följa steg för steg -instruktionen i
Läs merIntroduktion C-programmering
Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder
Läs merLaboration 3 HI1024, Programmering, grundkurs, 8.0 hp
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen
Läs merAtt använda pekare i. C-kod
Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare
Läs merDeluppgift 9 Installera Pintos
Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) (c) Klas Arvidsson 2015-03-24 Deluppgift 9 Installera Pintos Uppgift Målet med denna del är att skapa din
Läs merPlanering Programmering grundkurs HI1024 HT 2014
Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att
Läs merProgrammering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Läs merRepetition C-programmering
Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition
Läs mer1 Logga in 1. 2 Byta lösenord 1. 3 Hemkatalog 1. 4 Unixintroduktion 1 4.1 Viktiga kommandon... 2. 5 Läsa e-mail 3
UMEÅ UNIVERSITET 2005-04-08 Institutionen för datavetenskap Modifierat av Helena Lindgren, Daniel Lundmark & David Olsson & Tomas Larsson {johane, helena, lundmark, don, tomasl}@cs.umu.se Introduktionsmaterial
Läs merNetBeans 5.5. Avsikt. Projektfönster
NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
Läs merPC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION
PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION Laborationsansvarig: Anders Arvidsson Utskriftsdatum: 2005-08-31 Laborant(er): 1 Syfte Laborationen ska ge studenten möjlighet att genom assemblerinlägg
Läs merInledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock
Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.
Läs merLaboration 1. "kompilera"-ikonen "exekvera"-ikonen
Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i
Läs merLaboration: Whitebox- och blackboxtesting
Tilda11 höstterminen 2011 Laboration: Whitebox- och blackboxtesting Mål med laborationen Du ska lära dig begreppen white-box testing och black-box testing Du ska öva dig på att konstruera testfall Du ska
Läs merFrekvenstabell över tärningskast med C#
Guide Frekvenstabell över tärningskast med C# Introduktionsuppgift Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning
Läs merIntroduktionslaboration
TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt
Läs merKlassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Läs merFunktioner. Linda Mannila
Funktioner Linda Mannila 13.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Intro till funktioner och moduler Villkorssatsen
Läs merObjektorienterad programmering i Java I
Laboration 0 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: ca 2 3 timmar Att läsa: sidan 45 52 Syfte: Att ladda hem och installera utvecklingsmiljön Att skriva ditt första Javaprogram
Läs merFunktionens deklaration
Funktioner - 1 Teknik för stora program #include #include......... cout
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Läs merVad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet
Vad händer när man kör ett program? Program och processer När man kompilerar ett program och sedan länkar ihop det så stoppar länkaren in lite extra kod i programmet. Det är denna kod som i sin tur anropar
Läs merGPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner
GPT föreläsning 8 Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner Denna gång Reflektioner kring OU1 Funktioner Reflektioner
Läs merObjektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ
orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]
Läs merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon
Läs merTUTORIAL: SAMLING & KONSOLL
TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även
Läs merMathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x
Mathematica Första kapitlet kommer att handla om Mathematica det matematiska verktyg, som vi ska lära oss hantera under denna kurs. Indata När du arbetar med Mathematica ger du indata i form av kommandon
Läs merIDA kursmaterial Informationsblad make. make
make make är ett verktyg som främst används för att underhålla, uppdatera och återskapa program och filer. Det är dock ett generellt verktyg som kan användas även i många andra sammanhang. En avancerad
Läs merLab5 för prgmedcl04 Grafik
Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna
Läs merIntroduktion till användning av linux-servern sledge och några övningsuppgifter
Uppsala universitet Institutionen för utbildning, kultur och medier Monica Langerth Zetterman och Richard Walls IT-stöd i undervisningen, HT10 Introduktion till användning av linux-servern sledge och några
Läs merIntroduktion till programmering SMD180. Föreläsning 3: Funktioner
Introduktion till programmering Föreläsning 3: Funktioner 1 1 Mer matematik Vi har sett matematiska uttryck med variabler, värden och operatorer, ex: 17+n pi/2 hours*60+minutes Kan man även skriva uttryck
Läs merProgrammering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:
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
Läs merIntroduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Läs merDagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?
Programmeringsteknik och Matlab Övning 2 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Läs merProgrammering av inbyggda system. Kodningskonventioner. Viktor Kämpe
Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK
Läs mer2 Eclipse en handledning
2 Eclipse en handledning Inledning Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på: http://www.eclipse.org http://help.eclipse.org http://www.eclipse.org/downloads/
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning
Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (
Läs merF5: Högnivåprogrammering
F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via
Läs merF5: Högnivåprogrammering
1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data
Läs merTDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser.
Läs merHej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer
Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded
Läs merÖvning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program
Datateknik A, Syfte: Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program Att läsa: Lektion 1 Antal uppgifter: 3 Inlämning: Sker via inlämningsuppgifter
Läs merCommand line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016
Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar
Läs merAtt skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter
Läs merIntroduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion
Introduktion till programmering Föreläsning 4: Villkor och rekursion 1 1 Några inbyggda funktioner (med resultat!) Konverterar mellan de grundläggande typerna: >>> int("32") 32 >>> int(3.999) 3 >>> float(32)
Läs merKPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner
KPP053, HT2016 MATLAB, Föreläsning 1 Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner MATLAB Väletablerat Mycket omfattande program GNU OCTAVE Öppen
Läs merProgram. Kapitel make Program Interpreterande och kompilerande program
Kapitel 11 Program Detta kapitel är som synes mycket kort och nämner inte allt från föreläsningen. 11.1 Program Ett datorprogram är en samling instruktioner som beskriver något som en dator ska utföra.
Läs merSträngar. Strängar (forts.)
Strängar En sträng i C är helt enkelt en array av char: char namn[20]; För att få strängar att bete sig som om de vore av dynamisk längd markeras strängens slut med null-tecknet \0 : J o z e f S w i a
Läs merJava: Utvecklingsverktyg, datatyper, kontrollstrukturer
Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se
Läs merObjektorienterad programmering Föreläsning 2
Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade
Läs merDagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)
Programmeringsteknik och Matlab Övning Dagens program Övningsgrupp 2 (Sal Q22/E2) Johannes Hjorth hjorth@nada.kth.se Rum 458 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d2
Läs merHandbok KXSLDbg. Keith Isdale Översättare: Stefan Asserhäll
Keith Isdale Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 1.1 Funktioner.......................................... 5 2 Använda KXSLDbg 6 2.1 Anpassa en KXSLDbg-session...............................
Läs merSå här skriver du ditt första program i C++
Så här skriver du ditt första program i C++ Introduktion till att skapa Solution, Project och källkodsfil i Visual Studio 2013 Författare Anne Norling Kurs: Strukturerad programmering med C++ Kurskod:1DV433
Läs merAlla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php
Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är
Läs merNetBeans 7. Avsikt. Projektfönster
NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
Läs merÖvningsuppgifter kapitel 8
Inst. för Systemteknik Introduktion till programmering (SMD 180), 5 p Övningsuppgifter kapitel 8 1. Listor är en viktig datatyp i Python. Hur definierar kursboken lista? Vad kallas de värden som tillsammans
Läs merAgenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då
Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de
Läs merTENTAMEN OOP
TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Läs mer