Simula 67

Simula 67 je nejspíš první funkční objektově orientovaný programovací jazyk, odvozený podobně jako Pascal z Algolu (kterému se syntaxí velmi podobá).

Jazyk byl navržen v roce 1967 speciálně pro simulování systémů hromadné obsluhy. Proto byl vybaven možností kvaziparalelního výpočtu a kalendářem událostí.

Jazyk se prakticky neuplatnil mimo akademické prostředí, ale měl významný vliv na další vývoj objektového programování. Mnoho rysů Simuly (speciálně celé pojetí tříd a dědičnosti) bylo totiž později převzato jazykem C++ nebo Java. Jazyk Java byl sice odvozen z jazyka C++, nicméně v některých rysech se blíží Simule.[1] Simula, stejně jako Java a některé další jazyky, obsahuje garbage collector, což je mechanismus pro automatické uvolňování nepoužívaných objektů z paměti.

Charakteristika jazyka

Základní datové typy

  • Integer
  • Short Integer
  • Real
  • Long Real
  • Boolean
    Integer a;
    Real b;
    Boolean c;
    a:=25;
    b:=6.2;
    c:=True;
    a:=a+20;
    b:=b/2;
    c:=c and (a<20);
    

Řídící struktury

Příkaz: je ukončen středníkem.

Přiřazení hodnot: A:=B převzaté z Algolu.

Přiřazení referencí: A:-B.

Blok: begin.....end.

Podmínka: if výraz then příkaz nebo blok (else příkaz nebo blok).

Cyklus while: while výraz do příkaz nebo blok.

Cyklus for: velmi obecný

Procedury

Přístup k parametrům procedury

Hodnotou

Implicitní pro jednoduché typy, možné pro texty a pole.

! toto je komentář
procedure X(Param); value Param; text Param; ! text předávaný hodnotou

Procedura pracuje s kopií proměnné.

Referencí

Implicitní pro nejednoduché typy.

procedure X(Param); text Param; ! text předávaný referencí

Procedura pracuje přímo s proměnnou, předává se jí reference na proměnnou. Pokud je proměnná v proceduře změněna, projeví se změna i v původní proměnné.

Jménem

Povolené pro všechny typy.

procedure X(Param); name Param; text Param; ! text předávaný jménem

Podobné jako předávání referencí, ale proměnná se při každém použití znovu vyhodnotí.

Příklad procedury

Procedure FormatujText(T, N, Ok); Text T; Integer N; ! Vypíše text T zarovnaný zprava, N je maximální počet sloupců
               Name Ok; Boolean Ok; ! Pomocí Ok se vrátí, jestli se text vešel do N sloupců
Begin
    Integer I;
    Ok := N >= T.Length; ! ověření, zda se text vejde do N sloupců
    For i:=1 step 1 until N-T.Length do ! výpis mezer zleva
    Begin
        OutText(" ");
    End
    OutText(T); ! výpis textu
End of FormatujText;

Funkce

Pro deklaraci funkce se před procedure napíše typ, který funkce vrací. Pro předávání parametrů platí totéž co pro procedury.

Příklad funkce

Integer Procedure Umocni(Zaklad, Exponent); Integer Zaklad; Integer Exponent; ! Umocni Zaklad na Exponent
Begin
    Umocni:=Zaklad**Exponent; ! Operátor ** slouží k umocnění
End

Třídy

Třída v Simule je tvořená čtyřmi částmi: parametry, atributy, metody a životní pravidla.

Deklarace

Class Obdelnik (Width, Height); Real Width, Height; ! třída se dvěma parametry
 Begin
    Real Obsah, Obvod; ! atrubuty;

    Procedure Aktualizuj; ! metody
    Begin
      Obsah := Width * Height;
      Obvod := 2*(Width + Height)
    End of Aktualizuj;

    Boolean Procedure JsemCtverec;
    Begin
        JsemCtverec := Width=Height;
    End of JsemCtverec;
    ! životní pravidla
    Aktualizuj;
    OutText("Vytvořen obdélník: ");
    OutFix(Width,2,6);
    OutFix(Height,2,6);
    OutImage
 End of Obdelnik;

Vytvoření objektu

Ref(Obdelnik) obd;
obd:-New Rectangle(20, 30);

Objektu se přiřadí paměť zkopírují se hodnoty parametrů a začnou se provádět životní pravidla.

Vytvoření podtřídy

Obdelnik Class GrafickyObdelnik(Viditelny); Boolean Viditelny;
Begin
    If Viditelny Then
        OutText("Tento obdelnik je viditelný");
    Else
        OutText("Tento obdelnik není viditelný");
    OutImage;
End of GrafickyObdelnik;

Při vytvoření objektu se nejdříve provedou životní pravidla nadtřídy a potom podtřídy. Lze to změnit příkazem inner.

Vytvoření objektu podtřídy

Ref(GrafickyObdelnik) obdelnik;
obdelnik:-New GrafickyObdelnik(40, 10, True);

Inner

Pokud do nadtřídy umístíme příkaz inner, budou se nejdříve provádět pravidla nadtřídy, ale až se narazí na inner, provedou se pravidla podtřídy a pak se bude pokračovat v příkazech nadtřídy za inner.

Class A
Begin
    !kod A1
    Inner;
    !kod A2
End of A;

A Class B
Begin
    !kod B1
    Inner;
    !kod B2
End of B;

B Class C
Begin
    !kod C1
    Inner;
    !kod C2
End of C;

Provede se nejdříve kód A1, potom se narazí na inner a začnou se provádět pravidla B, provede se kód B1, až se narazí na inner provede se kód C1. Inner ve třídě C nemá žádný efekt, takže se provede kód C2. Pak program pokračuje zpět do třídy B a provede se B2 a nakonec se provede A2.

Ukázka kódu

Program Hello world vypadá takto:

Begin
  OutText("Hello World!");
  OutImage;
End;

Odkazy

Reference

  1. Garbage Collection, Simula 67, Java. www.cs.uiowa.edu [online]. [cit. 2007-02-20]. Dostupné v archivu pořízeném dne 2007-02-08. 

Externí odkazy

Read other articles:

UnownNomor PokédexNasional #201 Sebelumnya Selanjutnya Misdreavus (#200) Wobbuffet (#202) RegionalJohto#061Hoenn#346Sinnoh#114Penampilan perdanaPermainanPokémon Gold dan SilverInfo produksiGenerasiII (Kedua) - 1999PerancangKen Sugimori Info Pokémon TipepsikisSpesiesPokémon simbolKemampuanLevitate (Melayang)Rasio gendertak berjenis kelamin Evolusitak berevolusi Nama dalam bahasa lainJepangアンノーン UnknownJermanIcognitoKorea안농 AnnongPrancisZarbiTionghoa (Man...

 

 

Shand Mason was a British company which designed and manufactured steam powered fire engines and other fire-fighting equipment during the 19th century and early 20th centuries. History 1882 Shand Mason and Co fire engine 1889 steam pumper, Pride of Ashburton The company that eventually became Shand Mason was founded in 1760 by Samuel Phillips, and incorporated as Phillips and Hopwood in 1797. In 1818, after William Joshua Tilley had joined the business, it became Hopwood and Tilley and later ...

 

 

Veikkausliiga 2009 Competizione Veikkausliiga Sport Calcio Edizione 100ª Organizzatore SPL/FBF Date dal 18 aprile 2009al 17 ottobre 2009 Luogo  Finlandia Partecipanti 14 Formula Girone all'italiana Risultati Vincitore HJK(22º titolo) Retrocessioni RoPS Statistiche Miglior marcatore Hermanni Vuorinen (16) Incontri disputati 182 Gol segnati 498 (2,74 per incontro) Cronologia della competizione 2008 2010 Manuale La Veikkausliiga 2009 fu la centesima edizione della massi...

  لمعانٍ أخرى، طالع ستالينغراد (توضيح). ستالينغرادСталинград (بالروسية) معلومات عامةالتصنيف فيلم ثلاثي الأبعاد الصنف الفني دراما، حربالمواضيع الحرب العالمية الثانية — معركة ستالينغراد تاريخ الصدور 2013مدة العرض 135 دقيقة اللغة الأصلية الروسية والألمانيةالبلد روسياال...

 

 

Football stadium in Larnaca, Cyprus AEK ArenaFull nameAEK Arena – Georgios KarapatakisLocationLarnaca, CyprusCoordinates34°55′35″N 33°35′52″E / 34.92639°N 33.59778°E / 34.92639; 33.59778OwnerAEK LarnacaOperatorAEK LarnacaCapacity8,058Field size105 m × 68 m (344 ft × 223 ft)SurfaceNatural GrassScoreboardYesConstructionBroke ground2016Built2015–2016Opened17 October 2016; 7 years ago (2016-10-17) [1]...

 

 

Small ironclad warship with large guns This article is about the type of warship. For the U.S. Navy warship which gave its name to this type, see USS Monitor. USS Monitor, the first monitor (1861) HMS Marshal Ney used a surplus 15-inch gun battleship turret. A monitor is a relatively small warship that is neither fast nor strongly armored but carries disproportionately large guns. They were used by some navies from the 1860s, during the First World War and with limited use in the Se...

Stazione spaziale TiangongRendering della stazione spaziale di Tiangong nel suo attuale stato di costruzione a luglio 2022, con il modulo centrale di Tianhe al centro, il modulo Wentian a sinistra, Tianzhou a destra e la Shenzhou al nadir.StatisticheEquipaggio3 Lancio29 aprile 2021 (Primo modulo) Perigeo340 km Apogeo450 km Inclinazione43° Massa66 t[1] Volume abitabile110 m³[2] Modifica dati su Wikidata · Manuale La Stazione spaziale Tiangong (in cinese 天宫S,...

 

 

La neutralità di questa voce o sezione sugli argomenti editoria e fumetti è stata messa in dubbio. Motivo: Tutte le fonti sono autoreferenziali, ovvero siti ufficiali o interviste alla casa editrice stessa. Sono necessarie quindi fonti terze. Grave inoltre la mancanza di fonti per gran parte del testo e delle affermazioni ivi presenti. Per contribuire, correggi i toni enfatici o di parte e partecipa alla discussione. Non rimuovere questo avviso finché la disputa non è risolta. Segui...

 

 

Pour les articles homonymes, voir Cible (homonymie). Cet article est une ébauche concernant le sport. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations du projet sport. Des fléchettes dans une cible. Une cible est un objet portant une zone destinée à être visée, souvent représentée par des cercles concentriques. Il est utilisé dans des sports ou jeux tels que le tir à l'arc, les fléchettes ou encore le tir sportif. Tir à l'arc Ar...

Loudersingolo discograficoArtistaDJ Fresh FeaturingSian Evans Pubblicazione3 luglio 2011 Durata3:26 GenereDubstepDrum and bass EtichettaMinistry of Sound ProduttoreDaniel Stein Registrazione2010 FormatiDownload digitale, vinile DJ Fresh - cronologiaSingolo precedenteLassitude(2010)Singolo successivoHot Right Now(2012) Louder è un brano musicale del produttore Drum and bass britannico DJ Fresh. Il brano è interpretato dalla cantante gallese Sian Evans, ed è stato utilizzato come accompagnam...

 

 

Pieter de Bitter in late 1930s History Netherlands NamePieter de Bitter NamesakePieter de Bitter BuilderP. Smit, Rotterdam Laid down21 March 1936 Launched29 October 1936 Commissioned26 May 1937 FateScuttled, 6 March 1942 General characteristics Class and typeJan van Amstel-class minesweeper Displacement460 long tons (467 t) Length56.8 m (186 ft 4 in) Beam7.8 m (25 ft 7 in) Draft2.2 m (7 ft 3 in) Installed power 2 × Yarrow boilers 1,600 ...

 

 

此條目没有列出任何参考或来源。 (2012年3月23日)維基百科所有的內容都應該可供查證。请协助補充可靠来源以改善这篇条目。无法查证的內容可能會因為異議提出而被移除。 中国每年的平均降水。 水资源总量为降水形成的地表和地下产水量,即地表产水量与降水入渗补给地下水量之和。由两部分组成:第一部分为河川径流量,即地表水资源量;第二部分为降水入渗补给的�...

School district in Michigan This article may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral. Please help improve it by replacing them with more appropriate citations to reliable, independent, third-party sources. (April 2018) (Learn how and when to remove this message) Grosse Pointe Public School SystemLocation42°23′2.8″N 82°54′42.2″W / 42.384111°N 82.911722°W / 42.38...

 

 

Dog Day AfternoonSutradaraSidney LumetProduser Martin Bregman Martin Elfand SkenarioFrank PiersonBerdasarkanThe Boys in the Bankoleh P. F. KlugeThomas MoorePemeran Al Pacino John Cazale James Broderick Charles Durning SinematograferVictor J. KemperPenyuntingDede AllenPerusahaanproduksiArtists Entertainment ComplexDistributorWarner Bros.Tanggal rilis 20 September 1975 (1975-09-20) (San Sebastián) 21 September 1975 (1975-09-21) (Amerika Serikat) Durasi125 menitNegaraAmerika S...

 

 

هاينريش فيوبولد فاجنر (بالألمانية: Heinrich Leopold Wagner)‏  معلومات شخصية الميلاد 19 فبراير 1747(1747-02-19)ستراسبورغ الوفاة 4 مارس 1779 (32 سنة)فرانكفورت سبب الوفاة سل  مواطنة ألمانيا  الحياة العملية المدرسة الأم جامعة ستراسبورغ  المهنة شاعر،  وكاتب[1]،  وشاعر قانوني  ...

Questa voce o sezione sull'argomento storia è priva o carente di note e riferimenti bibliografici puntuali. Sebbene vi siano una bibliografia e/o dei collegamenti esterni, manca la contestualizzazione delle fonti con note a piè di pagina o altri riferimenti precisi che indichino puntualmente la provenienza delle informazioni. Puoi migliorare questa voce citando le fonti più precisamente. Segui i suggerimenti del progetto di riferimento. Battaglia della Piana dei MerliBattaglia della ...

 

 

Cameroonian diplomat and writer (1929-2010) Ferdinand Léopold Oyono (14 September 1929 – 10 June 2010[1]) was a diplomat, politician and author from Cameroon. His literary work is recognised for a sense of irony that reveals how easily people can be fooled. Writing in French in the 1950s, Oyono had only a brief literary career, but his anti-colonialist novels are considered classics of 20th century African literature; his first novel, Une vie de boy—published in 1956 and later tr...

 

 

British actor Anthony HigginsHiggins in the trailer for Taste the Blood of Dracula (1970), credited as Anthony CorlanBorn (1947-05-09) 9 May 1947 (age 77)Northampton, Northamptonshire, EnglandNationalityBritishOther namesAnthony CorlanOccupationActorYears active1968–presentSpouseHeide Lausen Anthony Higgins (born 9 May 1947) is an English stage, film and television actor. His credits include A Walk with Love and Death (1969), Taste the Blood of Dracula (1970), Hadleigh (1976)...

Pour les articles homonymes, voir Mau Mau. Cet article possède un paronyme, voir Maï-Maï. Révolte des Mau Mau Soldats des King's African Rifles britanniques durant la révolte. Informations générales Date 1952-1960 Lieu Colonie du Kenya Belligérants Rebelles Mau Mau Royaume-Uni Colonie du Kenya Commandants Dedan Kimathi Musa Mwariama Waruhiu Itote Stanley Mathenge Evelyn Baring George Erskine Kenneth O'Connor Forces en présence Inconnu 10 000 soldats 21 000 policiers 25 000 soldats K...

 

 

كارلو سكاربا (بالإيطالية: Carlo Scarpa)‏  معلومات شخصية الميلاد 2 يونيو 1906(1906-06-02)البندقية الوفاة 28 نوفمبر 1978 (72 سنة)سنداي سبب الوفاة سُقُوط  مواطنة إيطاليا (18 يونيو 1946–28 نوفمبر 1978) مملكة إيطاليا (2 يونيو 1906–18 يونيو 1946) إيطاليا  عضو في أكاديمية فنون الرسم  الحياة العملية �...