Programowanie w PMC W prezentacji Wstęp Polecenia programu PMC Dodawanie ciągu n liczb Silnia liczby n Szukanie liczb ujemnych w ciągu n liczb Wprowadzenie Nauka programowania komputerów jest zadaniem bardzo trudnym. Współczesny sprzęt informatyczny ma za sobą długą drogę rozwoju i osiągnął wysoki stopień komplikacji będący barierą dla początkujących, którzy chcieliby poznać zasady programowania w języku bezpośrednio rozumianym przez procesor, czyli w asemblerze. Moim celem jest zmniejszenie chaosu oraz złożoności systemów rzeczywistych i przybliżenie wam Przykładowej Maszyny Cyfrowej czyli PMC, która ma prostą i zrozumiałą konstrukcję oraz niewielki zestaw rozkazów. Dzięki tym cechom będziemy mogli szybko nauczyć się jej budowy i skoncentrować na samym programowaniu. Program PMC Licznik rozkazów Będzie nas informował który krok programu aktualnie wykonujemy Kod programu Rejestr rozkazów Odpowiedzialny za przekodowanie kodu binarnego na konkretny rozkaz Dane Przykład: dodaj liczbę • Wejściowe Akumulator • Wyjściowe Menu Pamięć podręczna w której dokonujemy obliczeń Wykonuje program Uruchomia program krok po kroku Uruchomia program jako kolejne kroki procesora Polecenia PMC ZD 27 – polecenie zeruj akumulator i dodaj liczbę z komórki 27 Przykład: Początek: Polecenie: Wynik: ZD 27 DO 27 – polecenie dodaje do akumulatora liczbę z komórki 27 OD 27 – polecenie odejmuje od akumulatora liczbę z komórki 27 MN 27 – polecenie mnoży akumulator przez liczbę z komórki 27 Przykład: Początek: Polecenie: OD 27 Wynik: Polecenia PMC PA 27 – polecenie zeruj wartość komórki 27 i zapamiętuje w niej wartość akumulatora Przykład: Początek: Polecenie: Wynik: PA 27 Uwagi: • Do akumulatora możemy wprowadzać nie tylko liczby ale i polecenia (np. DO 26) Przeadresowywanie komórek Polecenia PMC Instrukcje skoku: SK 10 – wykonanie tego rozkazu powoduje bezwarunkowy przeskok wykonywanego programu do komórki o adresie 10 SS 0 – wykonanie tego rozkazu powoduje bezwarunkowy przeskok wykonywanego programu do komórki o adresie 0 i zatrzymanie programu SM 10 – wykonanie tego rozkazu powoduje skok do komórki o adresie 10 w momencie kiedy wartość akumulatora będzie ujemna w przeciwnym razie program przejdzie do następnej komórki Menu Dodawanie liczb Spróbujmy teraz napisać prosty program dodający sześć liczb Trzy etapy tworzenia programu: Stwórz dobry algorytm rozwiązujący problem Na podstawie algorytmu zaprogramuj maszynę cyfrową Przetestuj program aby mieć pewność, że działa prawidłowo NO TO DO DZIEŁA Dodawanie n liczb Rozpoczynamy pracę programu A L G Wczytujemy ilość liczb oraz ich wartości Ustawiamy indeks i = 1 oraz zerujemy sumę liczb Dodajemy pierwszą liczbę do sumy O R Y T M Pytamy program czy dodał już wszystkie liczby Jeśli nie to zwiększamy indeks i o 1 aby w następnej pętli programu dodać kolejną liczbę Jeśli warunek był spełniony wypisujemy wynik sumy liczb „s” Kończymy pracę programu Dodawanie n liczb Dodajemy kolejne liczby P R O G R A M Obliczamy liczbę n - i - 1 Sprawdzamy czy jest ona ujemna, jeśli tak to skaczemy do komórki 13, jeśli nie to wykonujemy rozkaz z komórki 7 Zmieniamy i na i + 1 Przeadresowujemy komórkę o 1 aby w kolejnej pętli program dodał następną liczbę Zapętlamy program D A N E Wprowadzone liczby: -14, 3, 6, -5, -7, 11, 24 Liczba i Ilość liczb Menu Pomocnicza jedynka do obliczeń Wynik Silnia liczby n Rozpoczynamy pracę programu A L G O R Y T M Wczytujemy liczbę n Sprawdzamy czy n nie jest liczbą ujemną Jeśli nie jest to za zmienną i przyjmujemy 1 Za s (wynik silni) podstawiamy i Pytamy program czy obliczył już silnię z n Jeśli nie to zwiększamy indeks i o 1 Mnożymy s przez i ponieważ n!=1*2*…*n, a następnie przechodzimy do następnej pętli z pytaniem czy już policzyliśmy silnię Jeśli warunek był spełniony wypisujemy wynik silni liczb n Kończymy pracę programu Silnia liczby n Wczytujemy liczbę n P R O G R A M Sprawdzamy czy jest ona ujemna jeśli tak to kończymy program jeśli nie to idziemy do kolejnego rozkazu Podstawiamy za wynik liczbę i Obliczamy liczbę n – i – 1 Sprawdzamy czy jest ona ujemna jeśli nie to podstawiamy zamiast i, i +1, a następnie wynik s mnożymy przez i Zapętlamy program Pomocnicza jedynka do obliczeń D A N E Liczba i Liczba z której policzymy silnię Wynik Menu Obliczanie ile jest liczb ujemnych w ciągu n liczb Rozpoczynamy pracę programu A Wczytujemy liczbę n i liczby od a[1] do a[n] L Pytamy program czy sprawdziliśmy już wszystkie liczby G O Jeśli nie to sprawdzamy czy i-ta liczba jest ujemna R Y Jeśli nie to zwiększamy indeks i o 1 T M Jeśli tak to zwiększamy indeks i o 1 i doliczamy kolejną liczbę ujemną Kończymy pracę programu Jeśli warunek był spełniony wypisujemy wynik silni liczb n Obliczanie ile jest liczb ujemnych w ciągu n liczb Zmniejszamy ilość liczb o jeden P R O G R A M Program pyta czy sprawdziliśmy już wszystkie liczby Zapamiętujemy nową ilość liczb W czytujemy i-tą liczbę i sprawdzamy czy jest ona ujemna Jeśli nie jest ona ujemna to przeadresowywujemy komórki tak aby w nowej pętli program badał następną liczbę Jeśli tak to zliczmy ilość liczb ujemnych, przeadresowywujemy komórki i przechodzimy do badania następnej liczby D A N E Wprowadzone liczby: -14, 3, 6, -5, -7, 11, 24 Pomocnicza jedynka do obliczeń Ilość liczb Wynik Menu Podsumowanie Dziękuję za uwagę