Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek
|
SPIS TREŚCI |
Podrozdziały |
Napisać program dla PMC, który odczyta liczbę dodatnią n, a następnie policzy sumę kolejnych wartości:
1 + (-2) + 3 + (-4) + 5 + (-6) +... + (+/-n)
Program ma odczytać pewną wartość. Będziemy więc potrzebowali zmiennej na przechowanie tej wartości. Do odczytu liczby zastosujemy gotowy algorytm z poprzedniego rozdziału. Po odczytaniu tej liczby mamy sumować kolejne wartości od 1 do n, które przyjmują znak dodatni dla liczb nieparzystych, a znak ujemny dla parzystych. Będzie więc nam potrzebna następna zmienna przechowująca te wartości. Liczba jest parzysta, jeśli dzieli się przez 2. Skoro tak, to w zapisie dwójkowym ostatni bit musi mieć wartość 0. W przeciwnym razie po podzieleniu przez 2 otrzymywalibyśmy resztę 1:
2 - 10(2),
4 - 100(2), 6 - 110(2),
8 - 1000(2), 10 - 1010(2)
- liczby parzyste
1 - 1(2),
3 - 11(2), 5 - 101(2),
7 - 111(2), 9 - 1001(2),
11 - 1011(2)
- liczby nieparzyste
Wynika z tego, iż do stwierdzenia, czy dana liczba jest parzysta lub nie wystarczy zbadać ostatni, najmłodszy bit tej liczby. Kolejne liczby należy sumować. Suma musi być umieszczona w osobnej zmiennej. Oznaczmy więc zmienne następująco:
n - liczba sumowań
i
- kolejne liczby naturalne, które będą sumowane
s
- wartość sumy.
Teraz możemy przystąpić do narysowania odpowiedniego schematu blokowego, a
następnie na jego podstawie utworzymy program dla PMC.
RUN START N: DAT 0 ;tutaj trafi odczytana liczba X: DAT 0 ;zmienna pomocnicza I: DAT 1 ;kolejne liczby naturalne S: DAT 0 ;wartość sumy przemiennej START: LDA INP ;odczytujemy znak z bufora JZR #START ;bufor zajęty? JMI #START ;bufor pusty? LP1: SUB #"0" ;obliczamy wartość cyfry STA X ;i zapamiętujemy ją tymczasowo LDA N ;N przemnażamy przez 10 MUL #10 ADD X ;dodajemy cyfrę STA N ;zapisujemy wynik LP2: LDA INP ;pobieramy kolejny znak JZR #LP2 ;czekamy na dostępność bufora JMI #LP3 ;ale kończymy, gdy pusty. Wynik w N JMP #LP1 ;inaczej przetwarzamy znak LP3: LDA N ;sprawdzamy, czy n-i < 0 SUB I JMI #0 ;jeśli tak, to stop LDA I ;sprawdzamy, czy i jest parzyste AND #1 ;badając najmłodszy bit JZR #SPAR LDA S ;i nieparzyste - dodajemy ADD I JMP #ON1 SPAR: LDA S ;i parzyste - odejmujemy SUB I ON1: STA S ;uaktualniamy sumę INC I ;zwiększamy i o 1 JMP #LP3 ;i kontynuujemy pętlę
Napisz program dla PMC, który wypisze na środku wyświetlacza znakowego słowo KONIEC, a następnie będzie je przesuwał w prawo i w lewo odbijając od krawędzi.
Napisz program dla PMC, który będzie w kółko wypisywał na wyświetlaczu znakowym słówko KONIEC w ten sposób, iż będzie się ono wysuwało ze strony lewej i nikło po prawej stronie. Po całkowitym zniknięciu tego słówka ma się ono od nowa wysuwać literka po literce ze strony lewej i przemieszczać na prawo, aż do zniknięcia.
Napisz program dla PMC, który będzie odczytywał teksty wprowadzane przez użytkownika i wyświetlał je na wyświetlaczu znakowym zmieniając wszystkie literki "a" na "o", a wszystkie literki "o" na "a". Duże znaki mają pozostać bez zmian.
Napisz program dla PMC, który będzie wczytywał teksty wprowadzane przez użytkownika obliczając na bieżąco liczbę wpisanych przez niego samogłosek.
Napisz program dla PMC, który będzie odczytywał teksty wprowadzane przez użytkownika i wyświetlał je na wyświetlaczu znakowym pomijając jednak wszystkie samogłoski i spacje.
Napisz program dla PMC, który będzie odczytywał liczby dziesiętne wprowadzone przez użytkownika i na bieżąco obliczał ich sumę. Działanie programu ma być kończone w przypadku wpisania liczby 0.
Napisz program dla PMC, który będzie odczytywał liczby dziesiętne wprowadzane przez użytkownika i na bieżąco liczył ilość liczb o wartości większej niż 10. Działanie programu ma być przerywane w przypadku podania przez użytkownika liczby o wartości 0.
Napisz program dla PMC, który będzie odczytywał liczby dziesiętne wprowadzane przez użytkownika i na bieżąco wyszukiwał największą liczbę z dotychczas wprowadzonych. Działanie programu ma być przerywane w przypadku podania przez użytkownika liczby o wartości 0.
Napisz program dla PMC, który wczyta liczbę podaną przez użytkownika, a następnie wyświetli na wyświetlaczu znakowym tyle literek "A", ile wynosi wartość wprowadzonej liczby.
Napisz program dla PMC, który odczyta liczbę podaną przez użytkownika, a następnie policzy sumę kolejnych liczb naturalnych od 1 do podanej przez użytkownika liczby włącznie.
Napisz program licznika, który na wyświetlaczu 7-mio segmentowym LED będzie wyświetlał kolejne liczby od 0 do 59. Po osiągnięciu wartości 59 licznik ten ma się zerować i zliczać od początku. Działanie programu ma być przerywane kliknięciem przycisku 0 na panelu IOP.
Napisz program, który wyświetli na wyświetlaczu 7-mio segmentowym LED liczbę 12345, a następnie będzie po kolei zwiększał jej cyfry o 1. Gdy dana cyfra osiągnie wartość 9, to powinna zmieniać się na 0. Działanie programu ma być przerywane kliknięciem przycisku nr 0 na panelu IOP.
Zaprojektuj na panelu wyświetlaczy 7-mio segmentowych 4-ro cyfrowy licznik w kodzie szesnastkowym zliczający wstecz od wartości FFFF. Program ma się kończyć po osiągnięciu przez ten licznik stanu 0000.
Zaprojektuj program, który odczyta z portu INP liczbę dziesiętną, przeliczy ją na liczbę szesnastkową i wynik wyświetli na wyświetlaczu 7-mio segmentowym LED.
Zaprojektuj program, który będzie monitorował stan przycisków IOP wyświetlając go jako liczbę w kodzie szesnastkowym na wyświetlaczu 7-mio segmentowym LED.
Napisz program dla PMC, który odczyta tekst wprowadzony przez użytkownika, umieści go w zarezerwowanym do tego celu obszarze pamięci PMC, a następnie zacznie wyświetlać go w kółko przesuwając na wyświetlaczu znakowym w lewą stronę. Dobierz odpowiednią pętlę opóźniającą, aby tekst był dobrze czytelny w trakcie przewijania.
Napisz program dla PMC, który odczyta 10 liczb dziesiętnych ze znakiem wprowadzonych przez użytkownika, umieści je w odpowiednio zarezerwowanej do tego celu tablicy, a następnie wyszuka wśród tych liczb liczbę największą i najmniejszą, policzy ich różnicę i wynik wypisze na wyświetlaczu znakowym lub na wskaźnikach 7-mio segmentowych LED.
Napisz program dla PMC, który odczyta liczbę w systemie rzymskim, obliczy jej wartość w systemie dziesiętnym i wyświetli ją na wyświetlaczu znakowym lub na wskaźnikach 7-mio segmentowych LED.
Napisz program dla PMC, który odczyta liczbę, a następnie przeliczy ją na liczbę w systemie rzymskim i wynik wyświetli na wyświetlaczu znakowym.
Napisz program szyfrujący teksty wprowadzane przez użytkownika. Szyfrowanie powinno być tak zaprojektowane, iż wprowadzenie zaszyfrowanego tekstu spowoduje jego deszyfrację. Wynik działania programu powinien być widoczny na wyświetlaczu znakowym.
Napisz program obliczający w odpowiednio zarezerwowanej do tego celu tablicy zadaną ilość liczb pierwszych.
Napisz program, który odczyta 10 dowolnych liczb dziesiętnych do zarezerwowanej tablicy, a następnie uporządkuje je rosnąco.
Napisz program gry w zgadywankę. Pierwszy gracz wprowadza liczbę, którą program zapamiętuje. Następnie drugi gracz stara się ją odgadnąć. Wpisuje on swoją liczbę. Jeśli jest mniejsza od liczby gracza pierwszego, to program wypisuje tekst "ZA MAŁO". Jeśli jest większa, to program wypisuje "ZA DUŻO". Jeśli jest równa, to program wypisuje "ODGADŁEŚ, BRAWO". Przed wypisaniem nowego tekstu na wyświetlaczu znakowym poprzedni napis powinien być w całości usuwany. Na wskaźnikach 7-mio segmentowych LED program powinien wypisywać numer tury. Jeśli gracz drugi nie odgadnie wprowadzonej liczby w 7-mej kolejce, program wypisuje napis "PRZEGRAŁEŚ", a na wskaźnikach LED powinna pojawić się wartość liczby gracza nr 1.
Napisz program, który wyrysuje obrazek logo na ekraniku graficznym.
Napisz program, który utworzy na wskaźnikach LED 10 cyfrowy licznik w kodzie piątkowym liczący w sposób ciągły. Program zaprojektuj, tak aby łatwo można było zmieniać bazę systemu, w którym pracuje licznik.
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.