Skip to content
Snippets Groups Projects

Laboratorium 3


Z tego laboratorium przygotowujesz sprawozdanie. Przygotowujesz je na zajęciach, a przy ich zakończeniu wysyłasz na adres podany na końcu tej instrukcji. Instrukcja dla wszystkich jest taka sama.

Rzeczy oznaczone tak, jak poniżej, dotyczą tego, co masz zawrzeć w sprawozdaniu. Na przykład:

Zapisz swoje imię, nazwisko, adres e-mail, kierunek i rok studiów
oraz grupę laboratoryjną i numer albumu.

Podaj również numer zajęć laboratoryjnych (nr 3).

Mogą być to też pytania, na które w sprawozdaniu udzielisz odpowiedzi. Możesz pomagać sobie wyszukiwarką internetową, oraz zabrać głos w dyskusji, jeśli się jakaś wywiąże.

Do pewnego miejsca tą instrukcję należy wykonać. Niewykonanie jej będzie skutkowało obniżeniem oceny.

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

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 Taki język programowania będzie językiem regularnym oraz (w sumie jest to konsekwencja bycia jedynie językiem regularnym) nie będzie kompletny w sensie 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,