diff --git a/src/lab3.md b/src/lab3.md index 244535b6f0a30f66f4b93657e4d5fc9e18e86cb8..abcc4a41da26978a826de18ec4e6de1e2b15752f 100644 --- a/src/lab3.md +++ b/src/lab3.md @@ -20,4 +20,79 @@ sobie wyszukiwarkÄ internetowÄ , oraz zabraÄ gĹos w dyskusji, jeĹli siÄ jak Do pewnego miejsca tÄ instrukcjÄ **naleĹźy wykonaÄ**. Niewykonanie jej bÄdzie skutkowaĹo obniĹźeniem oceny. -# Co to jest interpreter \ No newline at end of file +Zaliczenie najwyraĹşniej wypada w DzieĹ Dziecka (1 VI), za co szczerze przepraszam. +_On the bright side_, poniewaĹź jest to miesiÄ c przed sesjÄ , to bÄdzie moĹźna +spokojnie zrobiÄ poprawkÄ. + +Poprawka, jeĹli odbÄdzie siÄ w ogĂłle to najprawdopodobniej na rynku w Przeworsku w +palÄ cym czerwcowym sĹoĹcu, tak wiÄc proponujÄ siÄ nauczyÄ. + +# Co to jest interpreter + +Interpreter jest programem komputerowym, ktĂłry wykonuje inny program komputerowy. +Robi to w taki sposĂłb, Ĺźe czyta jego kod ĹşrĂłdĹowy - linijka po linijce - i wtedy +decyduje co dopiero naleĹźy zrobiÄ. DrugÄ moĹźliwoĹciÄ jest kompilator - przeksztaĹca on +wtedy kod programu na kod zrozumiaĹy bezpoĹrednio przez procesor. PewnÄ analogiÄ jest +tĹumaczenie: + +* interpreter jest jak tĹumacz symultaniczny, ktĂłry tĹumaczy rozmowÄ w jej trakcie. JeĹli jest ona monologiem, + wygĹoszenie jej bÄdzie zajmowaĹo dĹuĹźej, ale w razie problemĂłw pozwala naprawiÄ sytuacjÄ w trakcie +* kompilator jest jak tĹumacz tĹumaczÄ cy kartkÄ z przemĂłwieniem. JeĹli coĹ pĂłjdzie Ĺşle - nie jego + sprawa. Programista bÄdzie musiaĹ poprawiÄ bĹÄ d i zrobiÄ to jeszcze raz + +Pewnym rozwiÄ zaniem (w zasadzie standardem obecnie) sÄ [kompilatory JIT](https://pl.wikipedia.org/wiki/JIT_(informatyka)) + +Pisanie kompilatorĂłw jest wyĹźszÄ szkoĹÄ jazdy i oczekiwanie tego od studentĂłw +na kierunku niebÄdacym informatykÄ jest czystym szaleĹstwem, ale prosty interpreter +napisaÄ moĹźe kaĹźdy. SprĂłbujemy to zrobiÄ na tych zajÄciach. + +# JÄzyk programowania + +Naszym jÄzykiem programowania bÄdzie po prostu sekwencja liczb caĹkowitych. Stanem programu +- czyli jego zmiennymi - bÄdzie jedna zmienna symbolizujÄ ca "zapamietanÄ wartoĹÄ", czyli +[akumulator](https://pl.wikipedia.org/wiki/Akumulator_(informatyka)) Taki +jÄzyk programowania bÄdzie +[jÄzykiem regularnym](https://pl.wikipedia.org/wiki/Gramatyka_regularna) +oraz (w sumie jest to konsekwencja bycia jedynie jÄzykiem regularnym) nie bÄdzie [kompletny w sensie Turinga](https://pl.wikipedia.org/wiki/Kompletno%C5%9B%C4%87_Turinga), +czyli w praktyce nadawaĹ siÄ bÄdzie tylko do zabawy. + +BÄdzie on wczytywaĹ po kolei liczby _skÄ dĹ_. W naszym przypadku bÄdzie to strumieĹ +wejĹciowy `std::cin`. Liczba bÄdzie miaĹa konkretne znaczenie, tak wiÄc **przeczytaj +specyfikacjÄ ze zrozumieniem**. + +## Specyfikacja + +WartoĹciami wejĹciowymi sÄ zmienne caĹkowite. BĹÄdy obsĹuguj zakaĹczajÄ c program wczeĹniej, +podajÄ c numer liczby, z ktĂłrÄ byĹ problem oraz wypisujÄ c powĂłd bĹÄdu. + +Nie musisz obsĹugiwaÄ przypadku, gdy potrzebna jest kolejna liczba, a liczby wĹaĹnie siÄ +skoĹczyĹy. + +Gdy wykonaĹeĹ jednÄ komendÄ, nastÄpna pobrana liczba okreĹla kolejnÄ . + +* *0* - koniec programu. Wypisz zawartoĹÄ akumulatora +* *1* - pobierz kolejnÄ liczbÄ. Dodaj jÄ do akumulatora +* *2* - pobierz kolejnÄ liczbÄ. Dodaj jÄ do akumulatora +* *3* - pobieraj i sumuj kolejne liczby aĹź nie napotkasz zera. Wynik dodaj do akumulatora +* *4* - podziel zawartoĹÄ akumulatora przez kolejnÄ pobranÄ liczbÄ +* *5* - pobieraj kolejne liczby aĹź nie napotkasz zera. Ich ĹredniÄ arytmetycznÄ dodaj do akumulatora +* *6* - po prostu wyĹwietl wartoĹÄ akumulatora +* *7* - pobierz kolejnÄ liczbÄ **x**. Pobierz nastÄpnie **x** liczb i do akumulatora podstaw najwiÄkszÄ z nich +* *8* - pobierz kolejnÄ liczbÄ **x**. Pobierz nastÄpnie **x** liczb i do akumulatora podstaw najmniejszÄ z nich + +## Rozgrzewka i idea + + Napisz w tym jÄzyku programy: + + 1) WyĹwietlajÄ ce wynik dziaĹania 2+2*6 + + 2) WyĹwietlajÄ ce ĹredniÄ arytmetycznÄ ciÄ gu 2 4 5 5 3 5 2 5 1 + + Nie przeprowadzaj Ĺźadnych dziaĹaĹ "na kartce", w szczegĂłlnoĹci + nie zapisuj wyniku "na ostro" w programie. + +Po to masz program, Ĺźeby policzyĹ za ciebie. + +## Implementacja + +Kiedy juĹź program napiszesz, \ No newline at end of file