Skip to content
Snippets Groups Projects
Commit 81a08093 authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

bedzie fajnie

parent 916a9d2b
No related branches found
No related tags found
No related merge requests found
Pipeline #1519 passed with stage
in 3 minutes and 59 seconds
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment