Pascal... Pascal. Pascal... Pascal...

Relevanta dokument
Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

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.

Några fakta om Standard Pascal. Serafim Dahl, Carina Edlund, m.fl.

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

TDIU01 - Programmering i C++, grundkurs

Funktioner, Procedurer och Parametrar. Funktioner, Procedurer och Parametrar... Funktioner, Procedurer och Parametrar procedurspecifikation

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Parameteröverföring. Exempel. Exempel. Metodkropp

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Standardfilerna Input och Output

Standardfilerna Input och Output. Filer... Filer... vanlig utbyggnad för ökad dynamik. Filer... filtyper

Sista delen av kursen

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Programmering A. Johan Eliasson

Sista delen av kursen

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Övning2. Variabler. Data typer

Språket Python - Del 1 Grundkurs i programmering med Python

Deklarationer/definitioner/specifikationer

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

Programmeringsteknik med C och Matlab

DD1361 Programmeringsparadigm. Carina Edlund

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

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

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

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

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

Språket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck.

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Objektorienterad Programmering (TDDC77)

Polymorfi (många skepnader) är egentligen en mängd olika abstraktionsmekanismer och en indelning skulle kunna se ut så här: polymorfi

Variabler och konstanter

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

Översikt över Visual Basic

Objektorienterad programmering Föreläsning 4

Exempel på ett litet Ada-program

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

DD1314 Programmeringsteknik

1 Funktioner och procedurell abstraktion

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

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Objektorienterad programmering i Java

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

Pythons standardbibliotek

F4. programmeringsteknik och Matlab

Abstraktion. Abstraktion... Abstraktion... Abstraktion...

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

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

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

C++ - En introduktion

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Föreläsning 2 Programmeringsteknik och C DD1316

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

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

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Anteckningar 1: Grundläggande saker

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

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

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27

Introduktion C-programmering

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

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2)

Kontinuerliga listor. Fält (listor) Kontinuerliga listor... Kontinuerliga listor...

Några saker till och lite om snabbare sortering

Repetition C-programmering

Programmeringsteknik I

SMD 134 Objektorienterad programmering

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

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

Lathund. C för inbyggda system

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Beräkningsvetenskap föreläsning 2

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

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

i LabVIEW. Några programmeringstekniska grundbegrepp

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

C++ - En introduktion

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

6.1 Kompilering och lite grundläggande information

Objektorienterad Programmering (TDDC77)

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Tentamen Grundläggande programmering

Periodiska decimalbråk

FÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION

Planering Programmering grundkurs HI1024 HT 2014

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

2.2. Ett enkelt Fortran-program

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

Transkript:

... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken kräver stort utrymme eller mycket tid. Programmen byggs upp av reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt är ett starkt typat språk, d.v.s. att man kan vid kompileringstillfället avgöra om ett program är syntaktiskt och semantiskt korrekt (men inte om det är logiskt korrekt). Varje objekt associeras med en datatyp och regler för konvertering mellan datatyper avgör om en operation är riktig. Ett fullständigt (meningslöst) program: PROGRAM test { programhuvud, skiljer satser åt } { END utgör ett block } DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 1 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 2 / 25...... Programmet skrivs i en texteditor, spars på en fil under ett namn t.ex. test.p (.p för att tala om för kompilatorn att det är ett program) För att kompilera programmet kan man skriva: gpc -o test test.p Om kompileringen lyckas blir resultatet en fil med namnet test Programmet startas med kommandot test Man kan även skriva pc test.p. Då har man inte givit programmet ett namn och måste starta det med kommandot a.out Det kan hända att man måste använda formen./test respektive./a.out för att kunna starta programmet. För att få något gjort måste man ha med procedurer och funktioner samt andra satser: PROGRAM test(output) funktionsnamn formella parametrar och deras typ resultatets typ FUNCTION square(x:integer):integer { funktionshuvud } square := x * x { funktionskropp } END gör att resultatet sänds tillbaka Writeln(square(3)) { huvudprogram } anrop av funktionen DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 3 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 4 / 25

Typer In- och utmatning De grundläggande typerna i är: Integer (heltal) Real (reella tal) Boolean (sanningsvärden true & false) Char (tecken ur aktuell kodtabell) Delintervall av ovanstående (utom Real) Write(par1, par2,...) skriv par1, par2,... utan radbyte WriteLn(par1, par2,...) skriv par1, par2,... avslutat med radbyte Write(234:6) skriv 234 högerjusterat i 6 positioner. Om platsen är för liten sker automatiskt utvidgning så objektet får plats. DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 5 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 6 / 25 In- och utmatning... OBS Write(2.234567:1:3) Skriv 2.234567 i en position (måste alltså utvidgas) och med 3 decimaler (korrekt avrundat) Write(3:1:4) är fel eftersom 3 är (implicit) ett heltal. Write och Writeln kan skriva enkla typer och teckensträngar omgivna av apostroftecken. Read(var1, var2,...) läser in värden till var1, var2,... ReadLn(var1, var2,...) läser in värden till var1, var2,... och ser till att nästa Read (Readln) läser från en ny rad (har inte något med radbyte att göra) Objekts, funktioners och procedurers namn måste börja på en bokstav och bara innehålla bokstäver och siffror. (bokstav är A..Z,a..z) Kompilatorn läser texten endast en gång och alla namn som den stöter på måste vara definierade innan de används. Man måste alltså skriva saker i rätt ordning En funktion f 1 som använder en funktion f 2 måste stå efter f 2 i programkoden! DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 7 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 8 / 25

Deklarationsordning... Operatorer PROGRAM test2(output) FUNCTION absolutbelopp(x:integer):integer IF x < 0 THEN absolutbelopp := -x ELSE absolutbelopp := x END FUNCTION absx3(x:integer):integer absx3 := Sqr(x) * absolutbelopp(x) END Writeln(absx3(-3)) Aritmetiska opererar på resultat + addition num & set num (real) & set subtraktion num & set num (real) & set multiplikation num & set num (real) & set / division num real div division Integer Integer mod modulo Integer Integer Relationsop > < >= <= = <> DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 9 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 10 / 25 Operatorer... En mer utbyggd programdel Boolean NOT AND OR Prioritetsordning 1. NOT 2. * / DIV MOD AND 3. + - OR 4. > < >= <= = <> Detta betyder att vi måste sätta ut parenteser i logiska uttryck. Ex: (1 + 1 = 3) OR (2 < 4) AND (7 >= 3 * 2) PROGRAM test3(input, output) CONST { konstantdefinitioner } n = 10 pi = 3.141592 prompter = Mata in ett tal TYPE { typspecifikationer } naturligt = 0..Maxint smallint = 0..n biglet = A.. Z flyttal = Real VAR { variabeldeklarationer } tal: naturligt ch: biglet... DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 11 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 12 / 25

I Scheme Scheme... I scheme har vi programmerat strikt funktionellt (allt har varit funktioner och vi arbetar bara med funktionsvärden). Men man kan ändra ett objekts tillstånd med set! > (define x 3) > (set! x 7) > x 7 Objektets tillstånd har ändrats! > (define := (lambda (val) (set! x val))) > (:= 12) > 12 I bygger de flesta program på att objektens tillstånd ändras! DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 13 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 14 / 25 I Val PROGRAM test4(input, output) VAR n, k: Integer FUNCTION fak(n: Integer): Integer IF n < 2 THEN fak := 1 ELSE fak := n * fak(n - 1) END Writeln( N över K, ange n och k ) Readln(n, k) Writeln(fak(n) / (fak(k) * fak(n - k)):1:0) IF villkor THEN sats1 ELSE sats2 Eller IF villkor THEN sats DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 15 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 16 / 25

Val... Syntaxdiagram satserna kan vara sammansatta och skall då omges av END sats icketerminal symbol (förklaras i annat diagram). end terminal symbol (förklaras inte vidare) IF villkor THEN sats1 sats2 END ELSE sats3 sats4 END program identifierare ( (fil-) identifierare, ) block. DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 17 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 18 / 25 identifierare bokstav bokstav bokstav A B... Z a b... z siffra siffra 0 1 2 3 4 5 6 7 8 9 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 19 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 20 / 25

deklarationsdel label lägesdeklaration const konstantdefinition block deklarationsdel sammansatt sats type typdefinition var variabeldeklaration procedurdeklaration funktionsdeklaration DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 21 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 22 / 25 procedurdeklaration procedurhuvud block procedurhuvud direktiv procedure identifierare ( formell parameter ) funktionsdeklaration funktionshuvud block direktiv DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 23 / 25 DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 24 / 25

funktionshuvud function identifierare ( formell parameter ) : (typ-)identifierare DA2001 (Föreläsning 10) Datalogi 1 Hösten 2010 25 / 25