1 Sammanfattning. Utökning av programmeringsspråk(plex-c) för telekommunikation
|
|
- Kurt Lindberg
- för 8 år sedan
- Visningar:
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
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 merEclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.
Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod
Läs merProgrammering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Läs merF4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Läs merNetBeans 7. Avsikt. Projektfönster
NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
Läs merNetBeans 5.5. Avsikt. Projektfönster
NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
Läs merLabb 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 merMÄ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 merKlassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Läs merProgrammering i C++ Kompilering från kommandoraden
Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö
Läs merProgram & 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 merTentamen 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 merInledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock
Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.
Läs merProgrammering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:
Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk
Läs merProgrammering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Läs merTentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-04-28 Tid: 08-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
Läs merImperativ 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 merProgrammerbar 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 merFöreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Läs merProgrammera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Läs merIntroduktion 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 merTDP005 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 merSoftware 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 merUppgift 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 merIntroduktion 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 merInternational 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 merTwincat: 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 merBackcode. 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 merBakgrund 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 merProgram. Kapitel make Program Interpreterande och kompilerande program
Kapitel 11 Program Detta kapitel är som synes mycket kort och nämner inte allt från föreläsningen. 11.1 Program Ett datorprogram är en samling instruktioner som beskriver något som en dator ska utföra.
Läs merSimulering 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 merGrundkurs 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 merAlla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php
Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är
Läs merKompilatorer 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 merProgrammering 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 merFö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 merTentamen 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 merGU / 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 merIntroduktion 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 merPython. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
Läs merPython. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
Läs merDependensregler - 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 merIntroduktion 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 merFö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 merForskning 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 merProva 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 merCode-Lite tutorial ( /RoJ)
Code-Lite tutorial (2013-03-20/RoJ) Följ dessa anvisningar för att skapa projekt, kompilera/länka och testa dina laborationsuppgifter 3,4. Project Projekt, innehåller bland annat ett antal källtextfiler
Läs merKTH 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 merFö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 merLektion 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 merkind 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 merTDIU01 (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 merFö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 merTENTAMEN OOP
TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Läs merlex 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 merTDDD78, 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 merITK: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 merDagens 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 mer1 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 merVHDL 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 merDIGITALTEKNIK. 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 merGrundkurs 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 merSimulering 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 merObjektorienterad programmering Föreläsning 2
Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade
Läs merstd_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 merObjektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Läs merFö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 merOMTENTAMEN 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 merWhat 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 merEDAA20 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 merIntroduktion C-programmering
Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder
Läs merIntroduktion 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 merAtt 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 merTestning 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 mer729G04 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 merSupport 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 merAbstrakta 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 merGPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner
GPT föreläsning 8 Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner Denna gång Reflektioner kring OU1 Funktioner Reflektioner
Läs merOOP 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 merDatorlaboration 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 merF5: Högnivåprogrammering
F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via
Läs merIntroduktion 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 merFö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 merF5: Högnivåprogrammering
1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data
Läs merInledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio
Ditt första C#-program med Visual Studio Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så
Läs merBoken?!?! 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 merz/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 merC++ 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 merInledande 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 merLogik 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 merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon
Läs merProgramsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010
Programsystemkonstruktion med C++: Övning 1 Karl Palmskog palmskog@kth.se september 2010 Programuppbyggnad Klassens uppbyggnad en C++-klass består av en deklaration och en definition deklaration vanligtvis
Läs merDet finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
Läs merObjektorientering 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 merLaboration 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 mer729G75: 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 merIntroduktion 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 merDesignmö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 merSockets: 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 merDigitalt 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