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

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

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

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

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

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

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

Imperativ programmering. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

Läs mer

Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner i VHDL för PLD Sekvensfunktioner i VHDL för PLD

Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner i VHDL för PLD Sekvensfunktioner i VHDL för PLD UMEÅ UNIVERSITET Tillämpad fysik och elektronik Digitalteknik Håkan Joëlson 2003-09-15 v 2.1 DIGITALTEKNIK Laboration D163 Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner

Läs mer

Fö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 DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

Programmera 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?? 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 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

TDP005 Projekt: Objektorienterat system

TDP005 Projekt: Objektorienterat system . TDP005 Projekt: Objektorienterat system Laboration i Make och CMake Författare Filip Strömbäck Höstterminen 2016 Version 1.0 2016-10-04 Introduktion I denna lab kommer vi titta närmare på två verktyg

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

Uppgift 1 (grundläggande konstruktioner)

Uppgift 1 (grundläggande konstruktioner) Uppgift 1 (grundläggande konstruktioner) a) Skriv ett program som låter användaren mata in 7 heltal och som gör utskrifter enligt nedanstående körexempel. Mata in 7 heltal: 1 0 0 3 1 1 1 Tal nr 2 var en

Läs mer

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

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser Introduktion till programmering Föreläsning 2: Variabler, uttryck och satser 1 1 Värden De grundläggande saker som en dator manipulerar resultaten av beräkningar kallas värden Värden vi stött på: 2 och

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

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

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

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet Žƒ ƒ Ž Ž ˆ ƒ ƒ ƒ Žƒ ƒ Ž ˆ Œ ŽŽ ƒ Backcode Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet Innehållsförteckning 12-05-29 Inledning... 3 Användarhandledningen... 4 Klasser... 4 Metoder...

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

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

Simulering med ModelSim En kort introduktion

Simulering med ModelSim En kort introduktion Linköpings universitet Institutionen för systemteknik Laborationer i digitalteknik Datorteknik 2018 Simulering med ModelSim En kort introduktion TSEA22 Digitalteknik D TSEA51 Digitalteknik Y TSEA52 Digitalteknik

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

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

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

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

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i TDP004 Objektorienterad Programmering Praktisk del Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2010-04-07 Tid: 8-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna ungefär

Läs mer

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167 GU / Chalmers Campus Lindholmen Tentamen Programutveckling 2016-01-13 LEU 482 / TIG167 Examinator: Henrik Sandklef (0700-909363) Tid för tentamen: 2016-01-13, 08.30 12.30 Ansvarig lärare: Henrik Sandklef,

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

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

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

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

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

Dependensregler - Lathund

Dependensregler - Lathund Dependensregler - Lathund INTRODUKTION I textprogrammet TeCST är det möjligt för en skribent att skriva, redigera och klistra in text för att få ut läsbarhetsmått och få förslag på hur texten kan skrivas

Läs mer

Introduktion till MATLAB, med utgångspunkt från Ada

Introduktion till MATLAB, med utgångspunkt från Ada Introduktion till, med utgångspunkt från Desktop-miljö som innefattar editor, kommandofönster, graffönster och mycket mer. Interpreteras Snabbt att testa kommandon Terminal + emacs + gnatmake Kompileras

Läs mer

Föreläsning 4 IS1300 Inbyggda system

Föreläsning 4 IS1300 Inbyggda system Föreläsning 4 IS1300 Inbyggda system Programutveckling Exempel PingPong Idé Tillståndsdiagram State machine Skapa projekt Testning av programvara Peripheral Library till STM32 Programmeringsuppgiften RS232

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

Prova på-laboration i Ada

Prova på-laboration i Ada Prova på-laboration i Ada Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2006-09-01 1. Introduktion till imperativa språk Programspråket Ada är resultatet av ett

Läs mer

Code-Lite tutorial ( /RoJ)

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

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

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

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

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

Föreläsning 3: Booleans, if, switch

Föreläsning 3: Booleans, if, switch TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt

Läs mer

TENTAMEN OOP

TENTAMEN 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

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

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

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Introduktion till Java -- för Pythonprogrammerare Historia: C, C++ 3 Historia: Oak 1 4 1990: Sun Microsystems påbörjade projekt StarSeven Avancerad

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

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

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

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

DIGITALTEKNIK. Laboration D172

DIGITALTEKNIK. Laboration D172 UMEÅ UNIVERSITET Tillämpad fysik och elektronik Digitalteknik Håkan Joëlson 2006-02-24 v 1.2 DIGITALTEKNIK Laboration D172 Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

Simulering med ModelSim En kort introduktion

Simulering med ModelSim En kort introduktion Linköpings universitet Institutionen för systemteknik Laborationer i digitalteknik Datorteknik 2017 Simulering med ModelSim En kort introduktion TSEA22 Digitalteknik D Linköpings universitet SE-581 83

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

std_logic & std_logic_vector

std_logic & std_logic_vector VHDL VHDL - Very high speed integrated circuit Hardware Description Language VHDL är ett komplext språk, avsett för att beskriva digitala system på olika abstraktionsnivåer (beteende- och strukturmässigt).

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

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

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

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15 OMTENTAMEN I PROGRAMSPRÅK -- DVG C01 130823 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

What Is Hyper-Threading and How Does It Improve Performance

What Is Hyper-Threading and How Does It Improve Performance What Is Hyper-Threading and How Does It Improve Performance Ali Muthanna, Lunds Universitet, IDA2, EDT621 Abstract Hyper-Threading (HT) is Intel s version of simultaneous multi-threading (SMT). Hyper-Threading

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

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

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Introduktion till formella metoder Programmeringsmetodik 1. Inledning Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur

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

Testning av program. Verklig modell för programutveckling

Testning av program. Verklig modell för programutveckling Fel i program När man skriver program uppkommer alltid fel. Felen kan indelas i följande kategorier: Under kompileringen upptäcker kompilatorn fel som handlar om att man använt konstruktionerna i programspråket

Läs mer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer 729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser

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

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

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

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

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

F5: Högnivåprogrammering

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

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

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

Läs mer

F5: Högnivåprogrammering

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

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

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

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

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

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

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

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

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

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

Objektorientering i liten skala

Objektorientering i liten skala Linköpings Universitet Institutionen för datavetenskap (IDA) UPP-gruppen 2012-10-24 Objektorientering i liten skala Mål I denna lab skall du skriva ett objektorienterat program. Programmet skall delas

Läs mer

Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs:

Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs: UMEÅ UNIVERSITET Tillämpad fysik och elektronik Digitalteknik Lars Wållberg/Håkan Joëlson 2001-03-01 v 1.5 ELEKTRONIK Digitalteknik Laboration D159 Sekvensnät beskrivna med VHDL och realiserade med PLD

Läs mer

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo 729G75: Programmering och algoritmiskt tänkande Tema 1. Föreläsning 1 Jody Foo Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt

Läs mer

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

Introduktion till programmering SMD180. Föreläsning 1: Programmets väg Introduktion till programmering Föreläsning 1: Programmets väg 1 1 Vad är en dator? En maskin vars beteende styrs av de bitmönster som finns lagrade i datorns minne (inte helt olikt förra seklets självspelande

Läs mer

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

Designmönster, introduktion. Vad är det? Varför skall man använda mönster? Designmönster, introduktion. Vad är det? Varför skall man använda mönster? Kent Petersson EMW, Mölndal Datavetenskap, Chalmers epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL: http://www.cs.chalmers.se/~kentp

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

Digitalt lärande och programmering i klassrummet

Digitalt lärande och programmering i klassrummet Stockholm 2018-02-14 14 februari 2018 Digitalt lärande och programmering i klassrummet Programmera i Python med micro:bit Introduktion I förra lektionen gick vi igenom grunderna i hur man programmerar

Läs mer