KOLOKWIUM PODSTAWY PROGRAMOWANIA

Podobne dokumenty
Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Utworzenie pliku. Dowiesz się:

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Rozdzia l 3. Laboratorium 3. danych zawierajac

Programowanie obiektowe i C++ dla matematyków

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

Wstęp do programowania. Wykład 1

1 Podstawy c++ w pigułce.

Spis treści. 1 Kraj/region i język Ustawienia regionalne Liczby Waluta Czas i data Inne...

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Zadanie 2: Arytmetyka symboli

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

lekcja 8a Gry komputerowe MasterMind

Paradygmaty programowania. Paradygmaty programowania

Część 4 życie programu

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Budowa i generowanie planszy

1. Wypisywanie danych

Programowanie w języku Python. Grażyna Koba

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Algorytmy i język C++

Lab 9 Podstawy Programowania

Numeracja dla rejestrów zewnętrznych

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Rekurencja (rekursja)

Monika Wrzosek (IM UG) Programowanie obiektowe 21 / 25

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

Zadanie programistyczne nr 3 z Sieci komputerowych

4. Funkcje. Przykłady

Pomorski Czarodziej 2016 Zadania. Kategoria C

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Paradygmaty programowania

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

SYSTEMY OPERACYJNE ĆWICZENIE POLECENIA SYSTEMU MSDOS

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Blockly Kodowanie pomoc.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Wstęp. Opis programu :

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Programowanie strukturalne i obiektowe. Funkcje

TEMAT : System operacyjny MS DOS pliki wsadowe

Wyk lad 4 Dzia lania na macierzach. Określenie wyznacznika

Podstawy Kompilatorów

Pytanie 1. Pytanie 2. Pytanie 3 WOJEWÓDZKI KONKURS INFORMATYCZNY. Treść pytania

3. Instrukcje warunkowe

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Laboratorium nr 4: Arytmetyka liczb zespolonych

ALGORYTMY I STRUKTURY DANYCH

Zadanie projektowe nr 1

Dodatkowe pakiety i polecenia L A TEXowe

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Program 14. #include <iostream> #include <ctime> using namespace std;

Wstęp do programowania

Autor: dr inż. Katarzyna Rudnik

Pytania sprawdzające wiedzę z programowania C++

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

Jak utworzyć diagram

Windows XP Wiersz polecenia

Rozkłady zajęć- notatki

Szablony funkcji i szablony klas

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści

1 Powtórzenie wiadomości

KRYTERIA OCENIANIA Z ZAJĘĆ KOMPUTEROWYCH W KLASIE IV

Laboratorium 7 Blog: dodawanie i edycja wpisów

/*W tym miejscu funkcja system wywołuje systemową komendę PAUSE tj.czeka tak długo, aż zostanie wciśnięty dowolny znak z

Języki programowania zasady ich tworzenia

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Tematy lekcji informatyki klasa 4a luty/marzec 2013

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 3

Z nowym bitem Zajęcia komputerowe dla szkoły podstawowej. Wymagania na poszczególne oceny szkolne dla klasy IV

XML i nowoczesne technologie zarządzania treścią 2007/08

Przedmiot: Informatyka w inżynierii produkcji Forma: Laboratorium Temat: Zadanie 4. Instrukcja warunkowa.

INFORMATYKA KLASA IV

Układy VLSI Bramki 1.0

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa IV

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa 4 Wymagania edukacyjne na poszczególne oceny szkolne dla klasy 4

Podstawy programowania

Zadanie nr 2: Arytmetyka liczb zespolonych

TEMAT : KLASY DZIEDZICZENIE

Algorytmika i programowanie

Tematy lekcji informatyki klasa 4a styczeń 2013

1. Wyrażenia regularne. Symbole w wyrażeniach regularnych 1 :

1 Podstawy c++ w pigułce.

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Pokaz slajdów na stronie internetowej

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Funkcje systemu Unix

Transkrypt:

KOLOKWIUM PODTAWY PROGRAMOWANIA BARTOZ ZIELIŃKI pis treści 1. Zasady ogólne 2 2. Zadanie cześć wspólna 3 2.1. Cel zadania 3 2.2. Wskazówki 4 2.3. Uwagi na temat uruchamiania programów 5 3. Zestawy 7 3.1. Zestaw A 7 3.2. Zestaw B 8 3.3. Zestaw C 9 3.4. Zestaw D 10 3.5. Zestaw E 11 3.6. Zestaw F 12 3.7. Zestaw G 13 3.8. Zestaw H 14 4. Regu ly oceniania 15 1

2 BARTOZ ZIELIŃKI 1. Zasady ogólne (1) Czas pracy: 2h. (2) Można korzystać z notatek z zajeć, z ksiażek, z internetu (z istniejacych stron: nie wolno wysy lać pytań na fora dyskusyjne ani korzystać z maila). Nie wolno korzystać z pomocy kolegów, ani bezpośrednio ani za pośrednictwem internetu. (3) W przypadku niejasności co do treści zadania należy zadać pytanie prowadza- cemu, który może choć nie musi na nie odpowiedzieć (na przyk lad gdy uzna że odpowiedź u latwi laby nadmiernie rozwiazanie). (4) Ogólny zarys zadania jest wspólny dla wszystkich zestawów i jest opisany w ekcji 2. zczegó ly specyficzne dla poszczegónych zestawów podane sa w ekcji 3. (5) Każdemu studentowi prowadzacy przydziela jeden zestaw. (6) Rozwiazaniem zadania jest kompilujacy sie i poprawnie dzia lajacy program. (7) Na poczatku tekstu programu student powinien umieścić w komentarzu swoje imie i nazwisko a także numer przydzielonego zestawu. (8) Napisany program student powinien przes lać jako za lacznik maila z pustym cia lem wiadomości i tematem Kolokwium: Podstawy Programowania na adres bzielinski@uni.lodz.pl.

KOLOKWIUM: PODTAWY PROGRAMOWANIA 3 2. Zadanie cz eść wspólna 2.1. Cel zadania. Celem zadania jest napisanie programu wypisujacego generowane rekurencyjnie wzory, sk ladajace sie z dużych znaków z których każdy jest obrazkiem ACII. Na przyk lad, program może wypisać nastepuj acy obraz ACII: +- +- -+ +- -+ -+ *** *** *** *** ***** ***** ***** ***** ******* --+-- ******* ******* --+-- ******* +- +- ************ -+ +- ************ -+ -+ Obraz 1 reprezentujacy wygenerowany rekurencyjnie wzór: [[ ][ ]] gdzie +- +- [ ] -+ -+ --+-- * *** ***** ******* ******* Program powinien przyjmować od użytkownika dwa parametry: D i N. N opisuje charakterystyczny rozmiar obrazków ACII reprezentujacych symbole [, ], i, natomiast D podaje g l ebokość rekurencji. Każdy zestaw (patrz ekcja 3) podaje: (1) Postać konkretnej formu ly rekurencyjnej. Definicja wzoru we wszystkich zestawach wymaga dwóch funkcji wzajemnie rekurencyjnych f(d) i g(d). Przyjmujemy konwencje że dla parametru D powinna zostać wygenerowana grafika ACII odpowiadajaca wzorowi f(d). (2) Przyk lady wygenerowanych wzorów dla kilku wartości parametru D. (3) Zależna od N postać obrazków ACII odpowiadajacych symbolom i. (Do generowania obrazków ACII odpowiadajacych nawiasom [ i ] należy użyć funkcji C++ leftpar() i rightpar() zdefiniowanych w ekcji 2.2. Na przyk lad obrazek ACII podany na poczatku tej sekcji zosta l wygenerowany dla parametrów N = 3, D = 2 przez program rysujacy wzór f(d) zdefiniowany rekurencyjnie (z pomoca dodatkowej funkcji g(d)) jako: [g(d 1)g(d 1)] gdy d > 0, [f(d 1) f(d 1)] gdy d > 0. dla d = 0 [] dla d = 1 [[ ][ ]] dla d = 2 [[[] []][[] []]] dla d = 3

4 BARTOZ ZIELIŃKI Obrazki ACII odpowiadajace w tym wypadku symbolom i maja (zależna od parametru N) forme: - - - + - - - * * 2.2. Wskazówki. Problem w naturalny sposób dzieli sie na dwie cześci których rozwiazanie jest podobne do rozwiazania zadań omawianych na zajeciach: (1) Budowanie formu l definiowanych rekurencyjnie i sk ladajacych sie z niewielkiej ilości różnych znaków (w tym wypadku czterech). (2) Rysowanie obrazów ACII o ustalonym zarysie zależnych od rozmiaru. Majac rozwiazania tych dwóch podproblemów możemy je z lożyć w jedna ca lość. W miejscu w którym w funkcji budujacej rekurencyjnie wzór wys lalibyśmy na konsole pojedyńczy znak ACII reprezentujacy określony symbol (n.p. znak [ instrukcja cout<< [ ;) wywo lujemy funkcje rysujac a odpowiadajacy symbolowi obrazek ACII. Niestety na konsoli możemy wyświetlać tylko kompletne wiersze, nie możemy natomiast wyświetlić fragmentu wiersza a wrócić do niego potem. Z drugiej strony każdy z obrazków ACII reprezentujacych symbole, które musimy z lożyć obok siebie aby utworzyć kompletny wzór ma 2N + 1 wierszy. Wynika stad że nie możemy po prostu napisać funkcji rysujacych kompletny pojedyńczy symbol. Możemy natomiast napisać funkcje które wypisuja pojedyńczy wiersz (bez znaku nowej linii) danego symbolu. Na przyk lad funkcje poniżej wypisuja j-ty wiersz odpowiednio lewego i prawego nawiasu rozmiaru N: 1 void leftpar ( int N, int j ) 2 int width=(n>3)?n/2+1:2; 3 cout<< ; 4 i f ( j ==0 j==2 N) cout<< + ; 5 else cout<< ; 6 for ( int i =1; i<width ; i ++) 7 i f ( j ==0 j==2 N) cout<< ; 8 else cout<< ; 9 } 10 cout<< ; 11 } 12 13 void rightpar ( int N, int j ) 14 cout<< ; 15 int width=(n>3)?n/2+1:2; 16 for ( int i =1; i<width ; i ++)

KOLOKWIUM: PODTAWY PROGRAMOWANIA 5 17 i f ( j ==0 j==2 N) cout<< ; 18 else cout<< ; 19 } 20 i f ( j ==0 j==2 N) cout<< + ; 21 else cout<< ; 22 cout<< ; 23 } Warto zwrócić uwage na spacje wstawiane w wierszach 3,10,14 i 22 które wprawdzie znaduja sie poza obszarem znaku, ale zapobiegaja sklejaniu kolejnych znaków. tosowanie powyższych funkcji powinien wyjaśnić poniższy przyk lad: Kod dla N = 3 wypisuje for ( int j =0; j <2 N+1; j ++) leftpar (N, j ) ; leftpar (N, j ) ; rightpar (N, j ) ; rightpar (N, j ) ; cout<< \n ; } +- +- -+ -+ +- +- -+ -+ Do samodzielnego napisania przez studenta pozostaja funkcje: void sign(int N,int j); Wypisuje j-ty wiersz obrazka ACII o rozmiarze N void symbol(int N,int j); void f(int N,int j,int d); void g(int N,int j,int d); odpowiadajacego symbolowi. Wypisuje j-ty wiersz obrazka ACII o rozmiarze N odpowiadajacego symbolowi. Implementacja funkcji wzajemnie rekurencyjnych generujacych j wiersz wzoru zapisanego przy pomocy obrazków ACII o rozmiarze N. oraz funkcja main() która powinna wczytać parametry D i N oraz wywo lać f() w odpowiedniej p etli. 2.3. Uwagi na temat uruchamiania programów. Ponieważ okno konsoli tekstowej ma ograniczona szerokość, wiersze generowane przez nasz program sa na ogó l d luższe od szerokości konsoli a zawijanie wierszy psuje efekt, warto przekierować wyjście programu do pliku tekstowego. W tym celu zamiast uruchamiać skompilowany program poleceniem menu DEV a należy: (1) Wykomentować w kodzie programu linie system( PAUE ); i skompilować program. (2) Wybrać w menu TART program Wiersz polecenia. (3) Przejść do katalogu w którym znajduje sie plik wykonywalny naszego programu (ten z rozszerzeniem EXE) przy pomocy polecenia cd. (4) Zak ladajac że plik wykonywalny naszego programu nosi nazwe zadanie.exe należy wykonać na konsoli polecenie zadanie > wynik. txt

6 BARTOZ ZIELIŃKI które spowoduje że wszystko to co zosta loby wypisane na konsoli zostanie umieszczone w pliku wynik.txt. Jeśli plik o tej nazwie nie istnia l, zostanie utworzony, w przeciwnym wypadku dotychczasowa zawartość pliku zostanie zastapiona nowa.

KOLOKWIUM: PODTAWY PROGRAMOWANIA 7 3. Zestawy 3.1. Zestaw A. Formu la rekurencyjna: [g(d 1)g(d 1)] gdy d > 0, [f(d 1) f(d 1)] gdy d > 0. Obrazki ACII: dla d = 0 [] dla d = 1 [[ ][ ]] dla d = 2 [[[] []][[] []]] dla d = 3 - - - + - - - * *

8 BARTOZ ZIELIŃKI 3.2. Zestaw B. Formu la rekurencyjna: [] gdy d = 0, [f(d 1)g(d 1)] gdy d > 0, [g(d 1) f(d 1)] gdy d > 0. Obrazki ACII: [] dla d = 0 [[]] dla d = 1 [[[]][ []]] dla d = 2 [[[[]][ []]][[ []] [[]]]] dla d = 3 - - - + - - - * * *

KOLOKWIUM: PODTAWY PROGRAMOWANIA 9 3.3. Zestaw C. Formu la rekurencyjna: [g(d 1)] [g(d 1)] gdy d > 0, [] gdy d = 0, [g(d 1)f(d 1)] gdy d > 0. Obrazki ACII: dla d = 0 [[]] [[]] dla d = 1 [[[]]] [[[]]] dla d = 2 [[[[]][[]] [[]]]] [[[[]][[]] [[]]]] dla d = 3 + - - - - - - -

10 BARTOZ ZIELIŃKI 3.4. Zestaw D. Formu la rekurencyjna: [f(d 1)] [g(d 1)] gdy d > 0, [] gdy d = 0, [f(d 1)f(d 1)] gdy d > 0. Obrazki ACII: dla d = 0 [] [[]] dla d = 1 [[] [[]]] [[]] dla d = 2 [[[] [[]]] [[]]] [[[] [[]][] [[]]]] dla d = 3 - - - - - - - + * * * *

KOLOKWIUM: PODTAWY PROGRAMOWANIA 11 3.5. Zestaw E. Formu la rekurencyjna: [g(d 1)]g(d 1) gdy d > 0, [] gdy d = 0, [f(d 1) f(d 1)] gdy d > 0. Obrazki ACII: dla d = 0 [[]][] dla d = 1 [[ ]][ ] dla d = 2 [[[[]][] [[]][]]][[[]][] [[]][]] dla d = 3 - - - + - - - *

12 BARTOZ ZIELIŃKI 3.6. Zestaw F. Formu la rekurencyjna: g(d 1)[g(d 1)] gdy d > 0, [f(d 1) f(d 1)] gdy d > 0. Obrazki ACII: dla d = 0 [] dla d = 1 [ ][[ ]] dla d = 2 [[] []][[[] []]] dla d = 3 - - - - - - - + * * * *

KOLOKWIUM: PODTAWY PROGRAMOWANIA 13 3.7. Zestaw G. Formu la rekurencyjna: [] gdy d = 0, g(d 1)[f(d 1)] gdy d > 0, [f(d 1) g(d 1)] gdy d > 0. Obrazki ACII: [] dla d = 0 [[]] dla d = 1 [[] ][[[]]] dla d = 2 [[[]] [[] ]][[[] ][[[]]]] dla d = 3 - - - - - - - + *

14 BARTOZ ZIELIŃKI 3.8. Zestaw H. Formu la rekurencyjna: [] gdy d = 0, g(d 1) [f(d 1)] gdy d > 0, [f(d 1)g(d 1)] gdy d > 0. Obrazki ACII: [] dla d = 0 [[]] dla d = 1 [[]] [ [[]]] dla d = 2 [ [[]][[]]] [[[]] [ [[]]]] dla d = 3 + - - - - - - - * * * * *

KOLOKWIUM: PODTAWY PROGRAMOWANIA 15 4. Regu ly oceniania Maksymalnie po 4 punkty można otrzymać za: (1) Funkcje sign(). (2) Funkcje symbol(). (3) Funkcje f(), g() i main(). Do zdobycia jest zatem 12 punktów. W przypadku gdy nie zostana zaimplementowane funkcje rekurencyjne f() i g() ale program potrafi wypisać przynajmniej symbole z sign() i/lub symbol() student może otrzymać maksymalna ilość punktów za funkcje sign() i/lub symbol() ale nie otrzymuje punktu za main(). Na ocene poszczególnych cześci zadania ma wp lyw oprócz ogólnej poprawności także zgodność ze specyfikacja struktury programu (wymagany podzia l na funkcje itd.) Wstepny przelicznik punkty na oceny (może ulec zmianie na korzyść studentów jeśli okaże sie że zadanie by lo zdecydowanie za trudne): ocena = 2 + punkty 2 2.