1 Sammanfattning. Utökning av programmeringsspråk(plex-c) för telekommunikation

Storlek: px
Starta visningen från sidan:

Download "1 Sammanfattning. Utökning av programmeringsspråk(plex-c) för telekommunikation"

Transkript

1 2 Mälardalens högskola Rapport Institutionen för elektroteknik Examensarbete 10p, C-nivå Johnny Huss Handledare på Ericsson Utvecklings AB: Robert Lindh Handledare på Mälardalens högskola: Peter Funk Utökning av programmeringsspråk(plex-c) för telekommunikation 1 Sammanfattning I AXE-växlar(digitala telefonväxlar) utnyttjas ett programmeringsspråk som heter PLEX. Det utvecklades på sjuttiotalet parallellt med introduktionen av AXE för att bli skräddarsytt för AXE-systemet. Unikt för PLEX är att språket har en händelsestyrd arkitektur. PLEX används idag på Ericsson för att programmera telekommunikationsutrustning. Detta examensarbete är utfört åt Ericsson Utvecklings AB där instruktioner till telefonväxlar ges. Vid programmering i PLEX beskrivs regelbundet en återstartsprocedur efter avbrott som för olika block i programmet ser snarlik ut. Idag arbetar programmerare i allt större utsträckning med att applicera redan använd kod vid nykonstruktion. Ett naturligt val kan tyckas, men pga snarlikhet i återstartskod, och i viss mån slarv, skapar detta problem och är en orsak till svårfunna felkällor. Kompileringen kan många gånger gå bra men funktionen blir inte den avsedda. Detta examensarbete har gått ut på att skapa en preprocessor som tar hand om en nyskapad återstartssats i språket, och utifrån denna genererar kompilerbar funktionsduglig kod. Den nya återstartssatsen är enkraftigförenkling, som på ett för programmeraren beskrivande sätt anger syftet med inmatade återstartsdirektiv. Tanken är att programmeraren istället för att använda "gammal" kod nyttjar den nyskapade satsen vid inmatningen av återstartskoden. Figure from ToolMaker Manual[2] ENTER STTOR WITH TCASE, TPHASE, TTYPE, CKEY; IF TTYPE /= 1 THEN CASE TPHASE IS WHEN 1 DO GOTO ABC10; <restart statement> ELSE WHEN 1 DO CASE TPHASE IS WHEN 100 DO DOA1000; FI; STTORRY) TBLOCKINFO = JJ00 (-) JJ888; SEND STTORRY WITH CKEY, TBLOCKINFO, 5, 1, 100, 255; EXIT; ENGLISH VERSION In AXE exchanges(digital telephone exchanges) a language called PLEX-C is used. It was developed in the seventies parallel with the AXE system. PLEX-C is used by Ericsson for programming telecommunication equipment such as AXE. The language has a unique event-steered architecture, and starting up the switch after a break involves a restart phase, which often involves performing rather similar funcionalities in different parts of the program. Programmers of today tend to work with older applications of written code and use it all over again, "the copy-paste way". A natural choice it seems, but due to similarity in the code mistakes is done and problems occur when running the program. The compilepart many times runs as it s supposed to do, but the functionality doesn t always measure up to the demands. This degree project has been to build a preprocessor which takes care of a new statement for handling restart in the language, and depending on inputs in that new statement write compilable PLEX-C code. The new statement is describing the purpose with the input in an instructive way, and the intention with the new statement is to make the programmer use the new statement instead of "old" code in the programming process.

2 3 4 INNEHÅLLSFÖRTECKNING 1 Sammanfattning 2 2 Inledning Bakgrund Problem Exjobbsbeskrivning Hjälpmedel vid problemlösning 5 3 Restart statement Beskrivning av återstartskommandots olika delar <restart statement> <expression> <restart action> <case> <phases> <absolute phase> <symbolic phase> <statement block> <label> Regler för implementering av nya återstartskoden 8 4 Preprocessorn Handhavande preprocessorn Exempel på utseende före körning i preprocessorn Exempel på utseende efter körning i preprocessorn 11 5ToolMaker ScannerMaker ParserMaker Övergripande beskrivningsfil för ToolMaker Beskrivningsfil för felmeddelanden 15 6 Summering och slutsatser 15 Referenser 16 Bilagor 16 2 Inledning 2.1 Bakgrund Under sjuttiotalet då utvecklingen av Ericssons AXEväxlar(digitala telefonväxlar) pågick påbörjades samtidigt utvecklingen av ett programmeringsspråk som heter PLEX (Programming Languages for Exchanges). Unikt för PLEX är att språket har en händelsestyrd arkitektur [6] som är mycket väl lämpad för telekommunikation. Programmeringsspråket är alltså designat helt och hållet för telekommunikationssystem och skall också följa speciella tidskrav fastställda för den internationella telefonin. Mjukvara för telefontrafik måste exekvera så snabbt som möjligt. PLEX gör detmöjligt attiförvägutföra exekveringstidsestimering [7]. Till en början påverkades programstrukturen av Fortran och fick senare influenser också från Pascal och C. Därför är det relativt enkelt för ett tränat öga att känna igen sig i skriven kod. PLEX-versionen ämnad för centralprocessorn i AXE 10 kallas PLEX-C och används av Ericsson i alla deras telefonisystem. PLEX har under åren utvecklats och förenklats i olika stadier för att underlätta programmeringsarbetet. Preprocessorer som tar hand om nya beskrivande uttryck och satser i programmeringsspråk finns och används idag på Ericsson. Nämnas i sammanhanget bör HL-PLEX (High Level -PLEX) som idag förkompileras och genererar PLEX-C. Namnet hög nivå PLEX skall just symbolisera att det är etthögnivåspråk som på många sätt liknar C. Fördelen med detta är, förutom att programmeraren med koden på ett tydligare sätt kan beskriva avsikten med inmatad kod, också att dagens studenter får lära sig just detta sätt att programmera. Behovet av att förenkla kodningsproceduren är fortfarande stor och en obearbetad plan[5] som sammanställdes 1996 har fram till nu ej genomförts. Denna går utpå att införa nya satser i PLEX-C som skall köras i separata preprocessorer. Önskemål finnsatt de i ett senare skede skall infogas i PLEX-C permanent för attköras direkt i ordinarie kompilator. 2.2 Problem I PLEX-C skrivs idag av programmerarna en återstartssekvens som skall beskriva uppstarten vid ett avbrott. Denna sekvens är en viktig del i den skrivna koden som alla programmerare med ansvar för sitt eget block skall skriva.en sekvens för respektive block. Startsekvensen skall alltså ingå i alla block i PLEX-C och ser ut ungefär på samma sätt för alla block. Detta att utseendet är ungefär detsammautgör dock ett stort problem enär det i vissa fall är mycket små skillnader i koden som skall implementeras. Eftersom kod, helt enligt givna instruktioner, i väldigt stor utsträckning återanvänds (enligt klippa klistra -metoden) sparas tid och pengar. Men på grund av återstartsdirektivens små skillnader för de olika blocken och i viss mån slarv, skapar detta problem som måste minimeras. Trots att kompileringen går som den skall, fungerar det körbara programmet inte som tänkt. Därmed klarar inte den färdiga produkten att hålla sig inom ramarna för de högt uppsatta kravspecifikationer som gäller för den internationella telefonin.

3 Exjobbsbeskrivning Detta examensarbete har gått ut på att skapa en preprocessor, som tar hand om en nyskapad återstartssats i språket, kallad <restart statement>, och utifrån denna genererar kompilerbar funktionsduglig kod i PLEX-C. Den nya återstartssatsen är en kraftig förenkling, som på ett för programmeraren beskrivande sätt anger syftet med inmatade återstartsdirektiv. Tanken är att programmeraren istället för att använda "gammal" kod nyttjar den nyskapade satsen vid arbetet med återstartssektionen. Formuleringen av den nya satsen och användningen av preprocessorn som också upptäcker tveksamma instruktioner skall öka säkerheten och minska felprocenten. Slår detta väl ut, dvs drar programmerarna nytta av fördelarna med en preprocessor av den här typen kommer nya satser att införas framöver och utvärderas för att så småningom, om det finns tillräckligt med röster för, införas i språket PLEX-C och användas som vanlig kod. 2.4 Hjälpmedel vid problemlösning På Ericsson används verktyget ToolMaker(se vidare avsnitt 5) som är ett kompilatorgenereringsverktyg i UNIX. Verktyget används för att automatiskt generera de delar av en kompilator som läser in källkoden och analyserar dess syntax. Det fungerar ungefär på samma sätt som ett LEX- och YACC-samarbete. Till ToolMaker ger man en beskrivning på de strängar som skall accepteras, vilket görs med reguljära uttryck. För att ToolMaker skall kunna bygga upp en korrekt parser appliceras en grammatik som beskriver språkets syntax. Invävt i den grammatiken införs egna C-satser. Med hjälp av dessa byggs en logisk struktur upp som sedan används vid kodgenereringen. ToolMaker har använts vid implementeringen av preprocessorn för den nya återstartssatsen. 3 Restart statement PLEX-C är baserat på asynkron signalering mellan olika funktionsblock med övervakningsprocedurer inlagda. Vid en återstart följs en upplagd rutin(kan liknas vid en uppstart av dator) som består av ett antal olika s.k. absoluta faser. Från encentralenhet går det ut en förfrågan till aktiva funktionsblock gällande vilka återstartsfaser de vill medverka i. Funktionsblockens respektive svar lagras i den centrala enheten och därefter körs återstarten enligt fastlagd rutin. Den nya satsen kallad <restart statement> med tillhörande valmöjligheter kan nu läggas in i PLEX-C koden för att underlätta programmeringsarbetet vid kodning av återstartssekvensen för respektive funktionsblock. Satsen skall infogas i nuvarande PLEX-C för att behandlas i preprocessorn tillsammans med övrig kod. Vid inmatningar av programmeraren i <restart statement> -satsen som genererar tvetydig PLEX-C svarar preprocessorn med felmeddelanden. Detta är en kontrollfunktion som är inlagd i preprocessorn därför att preprocessorn kan godta syntaxen i inmatningen och lägga ut PLEX-C som är godkänd ur programmeringssynpunkt, men kodens betydelse kan t.ex. innebära att två olika fasalternativ skall väljas när endast ett alternativ är acceptabelt. Detta är något som programmerarna bör upptäcka av egen kraft. Dock hade Robert Lindh(handledaren på Ericsson Utvecklings AB) önskemål om extrakontroller när examensarbetet utfördes. PLEX-C kod fram till den nya satsen skall passera preprocessorn utan åtgärd och placeras ienmålfil, kallad PLEX. Då den nya satsen påträffas skall PLEX-C kod baserad på indata/inargument som tillhör den nya satsen genereras. Denna skall också placeras i målfilen PLEX. Slutresultatet blir vanlig kompilerbar PLEX-C kod. 3.1 Beskrivning av återstartskommandots olika delar (sefigur3.1påsida8) <restart statement> Betraktas som fullständigt då ett textstycke som inleds med "RESTART BLOCKINFO IS" och avslutas med ";" har lokaliserats. Att det är fullständigt innebär inte automatiskt att syntaxen däremellan är korrekt. Dock fortsätter preprocessorn sitt arbete och avslutar med ett meddelande som beskriver utgången av processen <expression> Detta finns definierat i PLEX-C. Kan vara t.ex. A + B / C * D. Uttrycket <expression> behövs för att det finns restriktioner i PLEX-C vid placering av vissa uttryck i språket. Det kommer att placeras av preprocessorn på förutbestämd plats vid TBLOCKINFO = (se avsnitt 4.3 "Exempel på utseende efter körning i preprocessorn" på sida 12, rad 31).

4 <restart action> Exempel på ett "restart action kommando": AT SMALL PHASE 49 DO ABC100 Innebörden av detta beskrivs ej närmare. Lägg märke till att endast VERSALER är tillåtna. Detta för att följa gällande regler för PLEX-C <case> Anger typ av återstart <phases> En eller flera faser skall anges. Absoluta- och symboliska faser är acceptabla <absolute phase> Etttalenligtnugällande regler: 1-50, 68-74, , , <symbolic phase> Ett annat sätt att uttrycka vissa absoluta faser. Symboliska faser skrivs enligt nedan: (SPH1:(1-3) - SPH6:(1-3)) SPH7:(1-12) Dessa motsvaras av absoluta faser => Symbolisk Absolut SPH1:1 20 SPH1:2 21 SPH1:3 22 SPH2: SPH7: Regler för implementering av nya återstartskoden Nedanstående syntaxregler för återstartskommandot <restart statement> (sefigur 3.1) är regler som måste följas för att preprocessorn skall kunna fungera. Det absolut enklaste fallet är denna inmatning $$START RESTART$$ RESTART BLOCKINFO IS <expression>; $$END RESTART$$ vilket kommer att! resultera i följande $$START RESTART$$ PLEX-C kod: RESTART BLOCKINFO IS <expression>; $$END RESTART$$! ENTER STTOR WITH CKEY; TBLOCKINFO = <expression>; SEND STTORRY WITH CKEY, TBLOCKINFO, 5, 255; EXIT; Den inmatade delen följer med in i det nya dokumentet bortkommenterad enligt PLEX- C standard (! ). Detta för attförenkla vidare förändringar som programmeraren vill göra. I de fall ändringar behövs skall de göras i den bortkommenterade delen och därefter skall preprocessorn köras igen. Den skapade koden fr.o.m. ENTER STTOR WITH t.o.m. EXIT klipps bort före ny preprocessorkörning. Detta förfarande är helt enligt önskemål frånbeställarenavpreprocessorför <restart statement> på Ericsson Utvecklings AB. <restart statement> ::= RESTART BLOCKINFO IS <expression> {<restart action>}* ; <restart action> ::= AT ((<case> <phases>) <phases> ) <action> <case> ::= SMALL LARGE RELOAD START LOCAL LARGE LOCAL START <phases> ::= PHASE <phase> PHASES <phase> {, <phase>}+ <phase> ::= <absolute phase> <symbolic phase> <statement block> <label> Dessa uttryck följer gällande regler i PLEX-C. <symbolic phase> ::= (SPH1:(1-3) - SPH6:(1-3)) SPH7:(1-12) <action> :== DO <statement block> GOTO <label> Figur 3.1: Syntaxregler för återstartssatsen, modifierad ToolMakernotation.

5 Preprocessorn 4.1 Handhavande preprocessorn PLEX-C kod inklusive nya satsen sparas i en fil(benämnd infil nedan) och används som indata till preprocessorn. Fyra stycken tillfälliga (s.k. T variabler) skall deklareras i filen. T variabler TCASE TPHASE TTYPE TBLOCKINFO 4.2 Exempel på utseende före körning i preprocessorn Iexempletpå dennasidaanvänds uttrycken DO ABC10, DO ABC11 osv. i återstartssatsen. Dessa är påhittade exempel på anrop till s.k. "statement blocks" som finns definierade i PLEX-C. De fungerar på ungefär samma sätt som funktioner i C som inte returnerar någon parameter(t.ex. void func(int a)), utan bara utför vad som finns beskrivet i funktionen. Vid användning av "GOTO <label>" uttrycket i den nya satsen ser preprocessorn till att en <label> STTORRY) läggs in i koden på lämpligt ställe i återstartssekvensen. Men återhoppet till denna STTORRY) - <label> tillses av programmeraren. Sekvensen $$START RESTART$$" => "$$END RESTART$$ är den delen som preprocessorn uppfattar som den nya satsen. Den omvandlas till kompilerbar PLEX-C medan all övrig kod flyter igenom opåverkad(se avsnitt 4.3 "Exempel på utseende efter körning i preprocessorn"). En målfil skall skapas, och läggas där utdata placeras vid körning. OBS! Namnet på målfilen måste vara PLEX. INDATA BÖRJAR HÄR De två nyckelorden/strängarna "$$START RESTART$$" "$$END RESTART$$" ///////////////////////////////////////////////// <= Detta skall symbolisera PLEX-C kod PLEX-C <= som preprocessorn skall ignorera. FOLLOWED BY THE <= NEW RESTART STATEMENT <= ///////////////////////////////////////////////// <= $$START RESTART$$ placeras före respektive efter det nya komandot <restart statement> (se exempel avsnitt 4.2, rad sid 10). RESTART BLOCKINFO IS JJ00 (-) JJ888 (*) GG99 (=) LL0 (+) OO99 <= PP10 => QQ11 AT PHASE 1 DO ABC10 AT PHASES 2,3 DO ABC11 I ett kommandofönster ges sedan kommandot pre "infil" som startar processen, varvid sedvanlig kompilerbar kod skapas. Den kompilerbara koden, tillsammans med den nya satsen bortkommenterad mha två stycken! -tecken, placeras automatiskt i måldokumentet PLEX (se exempel avsnitt 4.3, rad sid 11). Obs! Vid användning av ett eller flera GOTO <label> -statement, skapas en STTORRY) label av preprocessorn, som placeras före SEND STTORRY delen(se exempel avsnitt 4.3, rad 29 sid 12). AT SMALL PHASES SPH1:1, SPH2:1 GOTO XYZ100 AT RELOAD PHASE 10 DO ABC50 AT LOCAL LARGE PHASE 100 DO A1000 ; $$END RESTART$$ ////////////////////////// MORE PLEX-C ////////////////////////// INDATA SLUTAR HÄR

6 Exempel på utseende efter körning i preprocessorn Koden som är genererad nedan är producerad mha <restart statement> (se avsnitt 4.2). Av bekvämlighetsskäl placeras den nya satsen bortkommenterad mha! tecknet förattförenkla kodningsarbetet för programmeraren vid modifieringar i koden. ///////////////////////////////////////////////// PLEX-C FOLLOWED BY THE NEW RESTART STATEMENT /////////////////////////////////////////////////! $$START RESTART$$ UTDATA BÖRJAR HÄR <= Denna del symboliserar löpande <= PLEX-C kod i ursprungsdokumentet <= som flyter igenom opåverkad. RESTART BLOCKINFO IS JJ00 (-) JJ888 (*) GG99 (=) LL0 (+) OO99 <= PP10 => QQ11 AT PHASE 1 DO ABC10 AT PHASES 2,3 DO ABC11 WHEN 20 DO WHEN 0 DO GOTO XYZ100; WHEN 23 DO WHEN 0 DO GOTO XYZ100; WHEN 10 DO WHEN 2 DO DO ABC50; ELSE WHEN 1 DO CASE TPHASE IS WHEN 100 DO DO A1000; FI; STTORRY) TBLOCKINFO = JJ00 (-) JJ888 (*) GG99 (=) LL0 (+) OO99 <= PP10 => QQ11; AT SMALL PHASES SPH1:1, SPH2:1 GOTO XYZ100 AT RELOAD PHASE 10 DO ABC50 AT LOCAL LARGE PHASE 100 DO A1000 ; $$END RESTART$$! ENTER STTOR WITH TCASE, TPHASE, TTYPE, CKEY; IF TTYPE /= 1 THEN CASE TPHASE IS WHEN 1 DO DO ABC10; WHEN 2 DO DO ABC11; WHEN 3 DO DO ABC11; SEND STTORRY WITH CKEY, TBLOCKINFO, 5, 1, 2, 3, 10, 20, 23, 100, 255; EXIT; ////////////////////////// MORE PLEX-C ////////////////////////// UTDATA SLUTAR HÄR

7 ToolMaker Detta verktyg har använts vid implementeringen av preprocessorn. ToolMaker är ett kompilatorgenereringsverktyg i UNIX, som används för att automatiskt generera de delar av en kompilator som läser in källkoden och analyserar dess syntax. ToolMaker -verktyget kan liknas vid ett komplext LEX- och YACC-samarbete, med vars hjälp översättning från ett språk till ett annat är möjlig. Verktyget består av flera delar som tillsammans, med hjälp av definierade strängar, parsingteknik och C-programmering, kan skapa preprocessorer och kompilatorer av olika slag. Positionsbestämning av funna definierade tokens(ord/fraser/förutbestämd teckenföljd), deras interna koder och felmeddelanden utnyttjas gemensamt. Detta för att enkelt kunna lokalisera eventuella syntaxfel som har inmatats av programmeraren. Verktyget ToolMaker innehåller fyra beskrivningsfiler som konstruktörenavenpreprocessor har att laborera med(se avsnitt ). Dessa filer genererar "vanliga".hoch.c- filer som sedan kompileras på sedvanligt sätt för att bilda en exekverbar fil så att preprocessorn kan köras. 5.1 ScannerMaker ScannerMaker skapar en scanner baserad på val av uttryck/strängar som skall kännas igen.detkanvaraenföljd av versaler utan mellanslag t.ex. BEGIN som valts till ett nyckelord. Ett uttryck som inleds med ett antal radskift, mellanslag, tabbar följt av ordet ELSE kan också om så önskas definieras som en följd som skall kännas igen. 5.2 ParserMaker ParserMaker bygger upp en parser utifrån förutbestämda regler, mönster och direktiv (bestämda av konstruktören av parsern). Efter dessa konstruktörsdirektiv växer en logisk struktur fram. Denna logiska struktur kan t.ex. se ut som trädstrukturen(se figur 5.1). Strukturen i figur 5.1 skall symbolisera ett exekveringsberoende, vilket innebär att för att TOP momentet skall exekveras krävs att alla nedanför liggande nivåer har utförts. MOMENT A exekveras då dess underliggande nivåer, moment M1-M2 är klara. MOMENT B inväntar att alla underliggande moment är utförda, följaktligen M3-M11. Moment M3-M5 påbörjar sin verksamhet först då momenten nedanför, således M6-M11 är utförda osv. De olika delmomenten betraktade var för sig behöver inte innebära mer än att ett visst mönster i den inmatade texten har upptäckts och att parsern nu skall gå vidare i en viss bestämd riktning. Det kan även innebära att en länkad lista skall skapas, etc. Vid anrop till scannern(se avsnitt 5.1) efter funna strängar erhåller parsern en sträng i taget. Denna procedur ligger invävd i trädstrukturen(se figur 5.1), allt efter konstruktörens egna önskemål. Preprocessorns beskrivningsfil (pre.pmk) som genererar parsern för återstartssatsen kan ses i bilaga 3. Vid "nyckelordsträff" lagras den funna strängen undan i väntan på att parsern(se avsnitt 5.2) aktiveras och påbörjar sina anrop efter sparade strängar. Det finns även alternativ att utföra något med den funna strängen, t.ex. att kopiera den. I princip kan vad som helst utföras inom ramen för C-kod. De lokaliserade strängarna ligger dock kvar i väntan på att parsern(se avsnitt 5.2) efterfrågar dessa. Den skapade scannern ser också till att insamlingen av "tokens" som parsern är behjälpt av påbörjas vid rätt tillfälle. MOMENT A TOP MOMENT B Preprocessorns beskrivningsfil (pre.smk) som genererar scannern för återstartssatsen kan ses i bilaga 2. M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 Figur 5.1: Ett exempel på beroende trädstruktur.

8 Övergripande beskrivningsfil för ToolMaker Denna fil kan ses som ett övergripande huvud för alla delar av ToolMaker och är ett tillval som kan göras för att få en tydligare överblick. Namnet på preprocessorn bestäms här, likaså placeras här deklarationer på strukturer och variabler som skall användas i alla delar av ToolMaker. Här deklareras t.ex. positionsbestämning av funnen token/sträng för att förenkla felhanteringen. Referenser [1] Appel Andrew W., Princeton University, with Maia Ginsburg (1998), Modern Compiler Implementation in C, Cambridge University Press, The Edinburgh Building, Cambridge CB2 2RU, United Kingdom. Preprocessorns beskrivningsfil bilaga 4. (pre.tmk) till denna del för återstartssatsen kan ses i [2] Ericsson SoftLab AB (1994), ToolMaker Reference Manual Version 2.0, Ericsson SoftLab AB, Linköping, Sweden. 5.4 Beskrivningsfil för felmeddelanden I denna fil placeras de felmeddelanden som konstruktören vill att preprocessorn skall kunna redovisa. De tilldelas en egen kod och placeras i filen prelist.c vid genereringen av preprocessorn. Preprocessorns beskrivningsfil bilaga 4. 6 Summering och slutsatser (pre.lmk) till denna del för återstartssatsen kan ses i I detta examensarbete har en preprocessor för <restart statement> -satsen skapats som tillägg till programspråket PLEX-C. Preprocessorn översätter denna sats till PLEX-C kod. Implementeringen har testats och ger i samtliga provade testfall korrekt PLEX-C kod. Den nya satsen bör såvitt det går att bedöma i nuläget inte vara något problem att införliva i programmeringsarbetet på Ericsson. Med tanke på att HL-PLEX(se avsnitt 2.1 Bakgrund sid 4), liksom <restart statement> -satsen kom till bl.a. för att det skulle vara lättare att förstå intentionen med skriven kod så kan förväntas att användningen av den nya återstartssatsen relativt enkelt går att assimilera i programmeringsprocesen. Eftersom den nya satsen ger en klar bild av syftet med skrivna rader bör användningen av satsen komma igång förhållandevis snabbt. Antalet kodrader kommer dessutom att minska, vilket gör detlätt att överblicka. Eftersom strävan med skriven plan[5]är att få ned felfrekvensen i programmeringsarbetet så är det naturligtvis värdefullt om utfallet blir det beräknade [5] med den nya satsen. Det ligger då nära till hands att andra föreslagna satser i [5] realiseras och läggs in i PLEX-C. Preprocessorer för dessa satser bör då relativt snabbt kunna tas fram mha ToolMaker som är ett kompilatorgenereringsverktyg i UNIX. Verktyget finns tillgängligt på Ericsson och användes vid framtagandet av preprocessorn för återstartssatsen i detta examensarbete. Vid arbetet med kommande satser bör samma tankebanor som utnyttjats vid detta examensarbete lätt kunna tas till vara. [3] Ericsson Telecom AB, Competence Development Services, MV/ETX/TK/XD (1996), PLEX-C1, Ericsson Telecom AB, Stockholm, Sweden. [4] Pittman Thomas, Peters James, University of Arkansas (1992), The Art of Compiler Design Theory and Practice, Prentice-Hall, inc. A Simon & Schuster Company, Englewood Cliffs, New Jersey 07632, USA. [5] Rindborg Tom (1996), Implementation Sketch UAB/B/R-96:107 Uen, Ericsson Utvecklings AB, Stockholm, Sweden. [6] Arnström Andreas, Grosz Camilla, Guillemot Andreas (1999), GRETA: a toolconcept for validation and verification of signal based systems (e.g. written in PLEX), Ericsson Utvecklings AB & Mälardalens Högskola, Sweden. [7] Axelsson Jouni, Eriksson Johan, Exekveringstidsanalys för mjukt realtidssystem(telekommunikationssystem) från grafanalys(kompilatordata) (2000), Ericsson Utvecklings AB & Mälardalens Högskola, Sweden. Bilagor Huvudprogrammet för preprocessorn (pre.c). Bilaga 1 Beskrivningsfil för ToolMaker(pre.smk), Bilaga 2 som genererar scannern. Beskrivningsfil för ToolMaker(pre.pmk), Bilaga 3 som genererar parsern. Beskrivningsfiler för ToolMaker (pre.tmk, pre.lmk). Bilaga 4

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

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 mer

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Eclipse. 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 mer

F4. programmeringsteknik och Matlab

F4. 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 mer

MÄLARDALENS HÖGSKOLA. CD5560 Formella språk, automater och beräkningsteori. Användarmanual. för simulatorn JFLAP

MÄLARDALENS HÖGSKOLA. CD5560 Formella språk, automater och beräkningsteori. Användarmanual. för simulatorn JFLAP MÄLARDALENS HÖGSKOLA CD5560 Formella språk, automater och beräkningsteori Användarmanual för simulatorn JFLAP Innehållsförteckning Att komma igång med JFLAP... 3 Att köra en sträng... 5 Att köra flera

Läs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 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

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 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 mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

Programmering i C++ Kompilering från kommandoraden

Programmering 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 mer

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:

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: 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 mer

Program & programmering

Program & programmering Program & programmering Vad är program? Satser och instruktioner, toggla igenom exempel Program på olika nivåer, för olika maskiner, för olika saker Tolka program; kompilator, intepretator, binärbytekod,

Läs mer

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i TDP004 Objektorienterad Programmering Praktisk del Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-08-22 Tid: 14-18 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär

Läs mer

Inledning. 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. 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 mer

International Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

International Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor Papegojor Yanee är fågelentusiast. Sedan hon läst om IP over Avian Carriers (IPoAC), har hon spenderat mycket tid med att träna en flock papegojor att leverera meddelanden över långa avstånd. Yanees dröm

Läs mer

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till programmering och Python Grundkurs i programmering med Python Introduktion till programmering och Python Hösten 2009 Dagens lektion Vad är programmering? Vad är en dator? Filer Att tala med datorer En första titt på Python 2 Vad är programmering? 3 VAD ÄR PROGRAMMERING?

Läs mer

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

Programmering 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 mer

Software Technology. Josef Svenningsson

Software Technology. Josef Svenningsson Software Technology Josef Svenningsson Software Technology Software Technology Området Software Technology handlar i mångt och mycket om följande frågeställning: Hur designar man programmeringsspråk för

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Introduktion till programmering, hösten 2011

Introduktion till programmering, hösten 2011 Föreläsning 1 Programmering är ett hantverk. Det betyder att man inte kan läsa sig till den förmågan, man måste träna och man tränar genom att skriva mer och mer avancerade program. Programmering förutsätter

Läs mer

Grundkurs i programmering - intro

Grundkurs i programmering - intro Grundkurs i programmering - intro Linda Mannila 4.9.2007 Dagens föreläsning Allmän kursinformation: mål, syfte, upplägg, examination, litteratur, etc. Hur arbetar en dator? Hur vi får datorn att förstå

Läs mer

Twincat: PLC Control

Twincat: PLC Control Dokument Förklaring Dat. Revision KI-221-003-003 Kom igång med trukturerad Text 080402 1.0 Twincat: PLC Control Kom igång med Strukturerad Text (ST) programmering 1. Kod exempel. a. Exemplen som demonstreras

Läs mer

Program. Kapitel make Program Interpreterande och kompilerande program

Program. 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 mer

VHDL och laborationer i digitalteknik

VHDL och laborationer i digitalteknik V:1.1 VHDL och laborationer i digitalteknik Vid laborationskursen i digitalteknik används VHDL till alla laborationerna utom den första. VHDL är ett stort språk och enbart en liten del av språket behövs

Läs mer

lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck

lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck input läs tecken stoppa tillbaka ett tecken skicka ett token och dess attribut parser Eliminera white space och kommentarer Gruppera lästa tecken till tokens identifierare, nyckelord, numeriska konstanter,

Läs mer

Kompilatorer och interpretatorer

Kompilatorer och interpretatorer 1 of 6 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@oru.se) Tentamen i Kompilatorer och interpretatorer för Dataingenjörsprogrammet m fl lördag 7 november

Läs mer

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

Att komma igång. Föreläsning 1 Att komma igång Föreläsning 1 Att komma igång Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera Variabler printf scanf

Läs mer

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin) Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades

Läs mer

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

Alla 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 mer

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser Abstrakta Klasser 1 God klassdesign placerar gemensamma attribut och metoder så högt som möjligt i hierarkin men ibland kan dessa egenskaper inte definieras fullständigt Abstrakta klasser innehåller ofta

Läs mer

Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA

Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA Evelina Andersson 18 maj 2011 1 Introduktion Att träna mycket för att bli duktig på ett språk

Läs mer

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

TDIU01 (725G67) - Programmering i C++, grundkurs TDIU01 (725G67) - Programmering i C++, grundkurs Introduktion till kursen och programmering Eric Elfving Institutionen för datavetenskap 2 september 2014 Översikt Kursinformation Personal Kursmål Upplägg

Läs mer

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration 1 (12) Hur man kompilerar och kör IT++-program med MinGW 1 Sammanfattning Detta dokument visar hur man lätt (med några få extra raders kod) kan få IT++ att bli kompatibelt med kompilatorn MinGW. Med den

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

Support Manual HoistLocatel Electronic Locks

Support Manual HoistLocatel Electronic Locks Support Manual HoistLocatel Electronic Locks 1. S70, Create a Terminating Card for Cards Terminating Card 2. Select the card you want to block, look among Card No. Then click on the single arrow pointing

Läs mer

kind spelling Scanning

kind spelling Scanning sats terminal Kompilatorteknik 2015 källprogram! Exempel program let var v : integer; const t ~ 3 in v := v + t kind spelling Scanning LET let föreläsningsfilmer Scannerns eller den lexikala analysatorns

Läs mer

Hjälpmedel för kompilatorkonstruktion, DVB004

Hjälpmedel för kompilatorkonstruktion, DVB004 Hjälpmedel för kompilatorkonstruktion, DVB004 Version 4.2 021104 Göran Fries 031104 GF Kompilatorn kan lämpligen konstrueras i tre ganska fristående pass (p1,p2,p3). Första passet gör en lexikalisk analys,

Läs mer

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

Föreläsning 3. Programmering, C och programmeringsmiljö Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator

Läs mer

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Objektorienterad 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 mer

Logik och kontrollstrukturer

Logik och kontrollstrukturer Logik och kontrollstrukturer Flödet av instruktioner i ett programmeringsspråk bygger vi upp med hjälp av dess kontrollstrukturer. I C har vi exemplen if, if else, while, do while. Dessutom finns switch

Läs mer

16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5 16 Programmering Skriva program till TI-86... 214 Köra program... 221 Arbeta med program... 223 Hämta och köra assemblerprogram... 226 Arbeta med strängar... 227 TI -86 M1 M2 M3 M4 M5 F1 F2 F3 F4 F5 214

Läs mer

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

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 1 Språket C++ 1.1 Valet av språket C++ för kompendiet Språket C++ är ett språk som utvecklats för storskalig objektorienterad utveckling av sofistikerade och komplexa system. Det ligger då i sakens natur

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Introduktion C-programmering

Introduktion 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 mer

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

Att komma igång. Föreläsning 1 Att komma igång Föreläsning 1 Att komma igång Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera Variabler printf scanf

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

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

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 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 mer

Datorlaboration 0, Programmering i C++ (EDA623)

Datorlaboration 0, Programmering i C++ (EDA623) LUNDS TEKNISKA HÖGSKOLA Programmering i C++ Institutionen för datavetenskap HT 2013 Datorlaboration 0, Programmering i C++ (EDA623) Under den inledande datorlaborationen får du träna på de grundläggande

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

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

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny Panrike och

Läs mer

Mönster. Ulf Cederling Växjö University Ulf.Cederling@msi.vxu.se http://www.msi.vxu.se/~ulfce. Slide 1

Mönster. Ulf Cederling Växjö University Ulf.Cederling@msi.vxu.se http://www.msi.vxu.se/~ulfce. Slide 1 Mönster Ulf Cederling Växjö University UlfCederling@msivxuse http://wwwmsivxuse/~ulfce Slide 1 Beskrivningsmall Beskrivningsmallen är inspirerad av den som användes på AG Communication Systems (AGCS) Linda

Läs mer

Så här skriver du ditt första program i C++

Så 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 mer

Objektorienterad programmering Föreläsning 2

Objektorienterad 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 mer

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

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf Föreläsning1 Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf scanf Ni behöver läsa boken både för att

Läs mer

Beijer Electronics AB 2000, MA00336A, 2000-12

Beijer Electronics AB 2000, MA00336A, 2000-12 Demonstration driver English Svenska Beijer Electronics AB 2000, MA00336A, 2000-12 Beijer Electronics AB reserves the right to change information in this manual without prior notice. All examples in this

Läs mer

Välkommen in på min hemsida. Som företagsnamnet antyder så sysslar jag med teknisk design och konstruktion i 3D cad.

Välkommen in på min hemsida. Som företagsnamnet antyder så sysslar jag med teknisk design och konstruktion i 3D cad. Välkommen in på min hemsida. Som företagsnamnet antyder så sysslar jag med teknisk design och konstruktion i 3D cad. har varit aktivt sedan 2004, men min bransch erfarenhet började redan 1983. Jag sysslar

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första

Läs mer

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2010 Tentamen TDDB53 TENTAMEN TDDB53 (provkod TEN2) den 7 april 2010 kl 8 12 Jour: Emil Nielsen, tel 070 499 89 88 Hjälpmedel:

Läs mer

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada. Sockets: server with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.Text_IO; with TJa.Sockets; use TJa.Sockets; procedure Server is -- Servern

Läs mer

z/os JCL och Utilities

z/os JCL och Utilities training people monitors z/os JCL och Utilities från grunden Peter Sterwe Lär dig grunderna i z/os JCL och Utilities på ett översiktligt och pedagogiskt sätt från företaget som har mer än trettio års erfarenhet

Läs mer

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Inledande 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 mer

Introduktion till programmering. Programspråk och paradigmer

Introduktion till programmering. Programspråk och paradigmer Introduktion till programmering Programspråk och paradigmer Vad är ett programspråk? Aprogramming languageis a formal constructedlanguagedesigned to communicate instructions to a machine, particularly

Läs mer

Inledande programmering med C# (1DV402) Introduktion till C#

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# 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å här: Allt innehåll i

Läs mer

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15 TENTAMEN I PROGRAMSPRÅK -- DVG C01 140605 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - 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 mer

Föreläsning 5 5DV086 - Programspråk

Föreläsning 5 5DV086 - Programspråk Föreläsning 5 5DV086 - Programspråk Petter Ericson (pettter@cs.umu.se) Umeå University 6 februari, 2015 Haskell-frågor? Haskell-tips do-syntax State-monaden Dagens plan Programspråksteori Varför? Vad?

Läs mer

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition): Översikt Motivering Syntax och semantik Imperativa språkets byggstenar och Python Datatyper Tilldelning och uttryck Kontrollstrukturer (på satsnivå) Subprogram Relaterade avsnitt: PL 3.1-3.2, 5.1-5.3,

Läs mer

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

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program

Läs mer

Collaborative Product Development:

Collaborative Product Development: Collaborative Product Development: a Purchasing Strategy for Small Industrialized House-building Companies Opponent: Erik Sandberg, LiU Institutionen för ekonomisk och industriell utveckling Vad är egentligen

Läs mer

HI1024 Programmering, grundkurs TEN2 2015-10-30

HI1024 Programmering, grundkurs TEN2 2015-10-30 HI1024 Programmering, grundkurs TEN2 2015-10-30 KTH STH Haninge 8.15-13.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 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 mer

Arduinokurs. Kurstillfälle 4

Arduinokurs. Kurstillfälle 4 Kurstillfälle 4 CW-generering Det här kan ses som överkurs men kan ändå vara roligt för att kunna generera CW på ett enkelt sätt. Det blir en hel del nytt men vi tar det steg för steg Som alla vet gäller

Läs mer

Lathund. C för inbyggda system

Lathund. C för inbyggda system Lathund C för inbyggda system Revision 1 2000-09-21 Anders Arvidsson Jonny Martinsson Synpunkter välkomnas! Innehållsförteckning 1 Introduktion...3 1.1 Assembler kontra C...3 1.2 Kodexempel...3 1.3 MPLAB...4

Läs mer

Det finns många flaggor till g++,

Det 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 mer

Programmeringsteknik med C och Matlab

Programmeringsteknik 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 mer

Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) (c) Klas Arvidsson

Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) (c) Klas Arvidsson Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) (c) Klas Arvidsson 2012-01-14 Introduktion Det första du behöver veta om PintOS är att det är ett riktigt

Läs mer

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1 Grundläggande programmering DVG A08 & ISG A04 Allmän information Grupp C och D slås ihop Schemat är ändrat Kurs i programmering utan förkunskaper Hjälp oss med detta Lita inte på era klasskamrater De ställer

Läs mer

Statistik över heltal

Statistik över heltal Övningsuppgift Statistik över heltal Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande

Läs mer

IE1204/IE1205 Digital Design

IE1204/IE1205 Digital Design TENTAMEN IE1204/IE1205 Digital Design 2012-12-13, 09.00-13.00 Inga hjälpmedel är tillåtna! Hjälpmedel Tentamen består av tre delar med sammanlagd tolv uppgifter, och totalt 30 poäng. Del A1 (Analys) innehåller

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

Läs mer

Styrteknik : Funktioner och funktionsblock

Styrteknik : Funktioner och funktionsblock PLC2A:1 Variabler och datatyper Allmänt om funktioner och funktionsblock Programmering av funktioner Programmering av funktionsblock PLC2A:2 Variabler i GX IEC Developer Global and Local Variables Variables

Läs mer

Editering, Kompilering och Exekvering av Javaprogram

Editering, Kompilering och Exekvering av Javaprogram UMEÅ UNIVERSITET Institutionen för informatik B.1, Programmeringens grunder, 5 poäng Editering, Kompilering och Exekvering av Javaprogram Introduktion Syftet med kursmomentet Programmeringens grunder (B.1)

Läs mer

HI1025 Operativsystem, KTH Haninge, VT2012

HI1025 Operativsystem, KTH Haninge, VT2012 Del 2 av kursen: Systemprogrammering. Tillfälle 5 (F): Introduktion till programmering med parallella processer: fork(), wait(), exit(), getpid(), getppid(), execl(), execvp(). 1. Parallella processer

Läs mer

Kapitel 4 Arkivmenyn Innehåll

Kapitel 4 Arkivmenyn Innehåll Kapitel 4 Arkivmenyn Innehåll ARKIVMENYN...2 Byt aktuell användare...2 Utskrift till skärm eller skrivare...3 SQL verktyget...4 Ny SQL...4 Hämta SQL...5 Spara SQL...5 Kör SQL...5 Visa som...5 Avsluta...5

Läs mer

1 Funktioner och procedurell abstraktion

1 Funktioner och procedurell abstraktion 1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår

Läs mer

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

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är

Läs mer

Smart Rogic Manual. Robostick Manual

Smart Rogic Manual. Robostick Manual Smart Rogic Manual Robostick Manual Ladda ner Smart Rogic Programfönster Programmera 4 Kopiera / Klipp ut 5 Ta bort symbol 6 Ångra / Gör om 7 Funktion 8 Ta bort program 9 Anslut via Bluetooth 0 Överföra,

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 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 mer

Kursutvärderare: IT-kansliet/Christina Waller. General opinions: 1. What is your general feeling about the course? Antal svar: 17 Medelvärde: 2.

Kursutvärderare: IT-kansliet/Christina Waller. General opinions: 1. What is your general feeling about the course? Antal svar: 17 Medelvärde: 2. Kursvärdering - sammanställning Kurs: 2AD510 Objektorienterad programmering, 5p Antal reg: 75 Program: 2AD512 Objektorienterad programmering DV1, 4p Antal svar: 17 Period: Period 2 H04 Svarsfrekvens: 22%

Läs mer

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert 20130122. Problemexempel 1

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert 20130122. Problemexempel 1 Fortsättningskurs i programmering F 2 Algoritmer i Programutveckling Hugo Quisbert 20130122 1 Exempel 1 Problemexempel 1 En souvenirbutik behöver ett datorprogram som omvandlar ett pris i svenska kronor

Läs mer

BILAGA E till Programvaruprojekt ÅTERSTÅENDE PROBLEM MultiPC v1.0. Innehållsförteckning

BILAGA E till Programvaruprojekt ÅTERSTÅENDE PROBLEM MultiPC v1.0. Innehållsförteckning ÅTERSTÅENDE PROBLEM MultiPC v1.0 Rev 7 1(7) BILAGA E till Programvaruprojekt ÅTERSTÅENDE PROBLEM MultiPC v1.0 Här listas problem som kan behöva hanteras i kommande inkrement. De prioriteras alltså ner

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering

Läs mer

Kundfokus Kunden och kundens behov är centrala i alla våra projekt

Kundfokus Kunden och kundens behov är centrala i alla våra projekt D-Miljö AB bidrar till en renare miljö genom projekt där vi hjälper våra kunder att undersöka och sanera förorenad mark och förorenat grundvatten. Vi bistår dig som kund från projektets start till dess

Läs mer

Användar- och systemdokumentation

Användar- och systemdokumentation Användar- och systemdokumentation Linköpings universitet Examinator:, IDA marme647@student.liu.se Utskriftsdatum: Innehållsförteckning Inledning... 3 Användarhandledning... 4 Systemkrav och installation...4

Läs mer

Imperativ programmering

Imperativ programmering Imperativ programmering 1DL126 3p Imperativ programmering Jesper Wilhelmsson ICQ: 20328079 Yahoo: amigajoppe MSN / epost: jesperw@it.uu.se Rum: 1335 Tel: 471 1046 Imperativ programmering Vilka programmeringsspråk

Läs mer

Planering Programmering grundkurs HI1024 HT 2014

Planering 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 mer

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

Läs mer

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.

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. Värmdö Gymnasium Programmering A 110123 Lektion C1 Grunder Att programmera handlar mycket om att lära sig att analysera det problem eller den funktion man vill att programmet ska ha, och översätta det

Läs mer