9/!Qumf!j!lpotusvldkf!tufsvk df 22:

Wielkość: px
Rozpocząć pokaz od strony:

Download "9/!Qumf!j!lpotusvldkf!tufsvk df 22:"

Transkrypt

1 9/!Qumf!j!lpotusvldkf!tufsvk df 22: Jak już wcześniej powiedzieliśmy, w skład programów napisanych w języku AutoLISP wchodzą funkcje. Wewnątrz funkcji występują instrukcje. O sile języka w dużej mierze decydują mechanizmy służące do specyfikacji kolejności wykonywania instrukcji. Wszystkie nowoczesne języki programowania mają po kilka struktur sterujących, które pozwalają, aby pewne fragmenty programu były wykonywane tylko jeden raz lub wielokrotnie w zależności od spełnienia lub niespełnienia jakiegoś warunku. Inaczej mówiąc od prawdziwości lub fałszywości jakiegoś wyrażenia. Ponieważ temat prawda fałsz w AutoLISPie został już omówiony wcześniej (przy okazji omawiania operatorów), zostaną teraz omówione po kolei poszczególne konstrukcje sterujące stosowane w języku AutoLISP. Programy omówione w tym rozdziale PROG_012.LSP Przykład instrukcji warunkowej if. PROG_013.LSP Przykład instrukcji warunkowej if z zastosowaniem instrukcji złożonej. PROG_014.LSP Przykład instrukcji warunkowej if. Obliczenie pierwiastków równania kwadratowego wersja 1. PROG_015.LSP Przykład instrukcji warunkowej if. Obliczenie pierwiastków równania kwadratowego wersja 2. PROG_016.LSP Przykład użycia instrukcji while wersja1.

2 231 BvupMJTQ!!qsbluzd{oz!lvst PROG_017.LSP Przykład użycia instrukcji while wersja2. PROG_018.LSP Przykład użycia instrukcji while. Obliczenie i wypisanie kwadratów liczb całkowitych od 1 do 10. PROG_019.LSP Przykład zagnieżdżonej instrukcji while. Wypisanie liczb od 1 do 100 w 10 rzędach po 10 kolumn. PROG_020.LSP Przykład użycia instrukcji cond wersja1. PROG_021.LSP Przykład użycia instrukcji cond wersja2. PROG_022.LSP Przykład użycia instrukcji cond. Obliczenie pierwiastków równania kwadratowego. PROG_023.LSP Przykład użycia instrukcji repeat. Obliczenie i wypisanie kwadratów liczb całkowitych od 1 do 100. PROG_024.LSP Przykład użycia zagnieżdżonych instrukcji repeat. Wypisanie liczb od 1 do 100 w 10 rzędach po 10 kolumn. PROG_025.LSP Realizacja pętli FOR w AutoLISPie. PROG_026.LSP Użycie instrukcji FOR przykład 1. PROG_027.LSP Użycie instrukcji FOR przykład 2. PROG_028.LSP Użycie instrukcji FOR przykład 3. Tworzenie listy oraz wyświetlanie jej zawartości. PROG_029.LSP Użycie instrukcji FOR przykład 4. Obliczenie i wypisanie kwadratów liczb całkowitych od 1 do 10. PROG_030.LSP Użycie zagnieżdżonych instrukcji FOR. Wypisanie liczb od 1 do 100 w 10 rzędach po 10 kolumn.

3 9/!Qumf!j!lpotusvldkf!tufsvk df 232 PROG_031.LSP Realizacja pętli DO_WHILE w AutoLISPie. PROG_032.LSP Użycie instrukcji DO_WHILE. Obliczenie i wypisanie kwadratów liczb całkowitych od 1 do 10. Często zdarza się, że, w zależności od sytuacji, program musi dokonać wyboru, jaka jego sekcja ma być wykonywana. W takim przypadku możemy zastosować instrukcję warunkową if. Instrukcja if możemieć 2formy: lub (if wyrażenie (instrukcja_1) )if (if wyrażenie (instrukcja_1) (instrukcja_2) )if else Wyrażenie to tutaj coś, comajakąś wartość. Może być to po prostu obiekt wybrany przez nas do przechowywania zmiennej logicznej, ale może tobyć też naprawdę wyrażenie, które najpierw trzeba obliczyć, by w rezultacie tego poznać jego wartość. Najpierw zatem oblicza się wartość wyrażenia. Jeśli nie jest ona równa nil (prawda), to wykonywana jest instrukcja_1. Jeśli wartość wyrażenia jest równa nil (fałsz), to instrukcja_1 nie jest wykonywana. W drugiej wersji instrukcji if widzimy za napisem instrukcja_2 słowo komentarza else, co można przetłumaczyć jako: w przeciwnym razie. A zatem jeśli w tej drugiej sytuacji wartość wyrażenia jest różna od nil (prawda), to zostanie wykonana instrukcja_1, w przeciwnym razie, czyli gdy wartość wyrażenia jest równa nil (fałsz), zostanie wykonana instrukcja_2. Otoprostyprzykład: **************************************************PROG_012 Przyklad instrukcji warunkowej IF. przejscie na ekran tekstowy (textscr)

4 233 BvupMJTQ!!qsbluzd{oz!lvst pobranie wartosci zmiennej x x (getint "\npodaj liczbe calkowita: ") )setq sprawdzenie warunku na x (if (= x 10) (princ "Zmienna x ma wartosc 10.") (princ "Zmienna x ma wartosc inna niz 10.") else )if **************************************************KONIEC Wykonanie powyższego programu możebyć następujące: Command: (load "prog_012") Podaj liczbe calkowita: 2 Zmienna x ma wartosc inna niz 10. Command: Jeżeli użytkownik wprowadzi liczbę 10, ekran będzie wyglądał następująco: Command: (load "prog_012") Podaj liczbe calkowita: 10 Zmienna x ma wartosc 10. Command: Omówmy teraz wyróżnione linie programu: Funkcja textscr przełącza ekran AutoCADa na stronę tekstową działanie analogiczne jak klawisza funkcyjnego F1. Funkcja ta może być pomocna przy prowadzeniu dłuższego dialogu z użytkownikiem, ponieważ standardowo ekran graficzny AutoCADa wyświetla tylko 3 ostatnie linie tekstowe. W tym miejscu zmiennej x przypisujemy wartość całkowitą. Funkcją odpowiedzialną za przypisanie do zmiennej x wartości całkowitej jest funkcja getint omówimy ją sobie dokładnie w punkcie Pobieranie informacji od użytkownika. To tutaj stosujemy instrukcję warunkową if, która sprawdza wartość wyrażenia (= x 10) Ponieważ w pierwszym powyższym przykładzie użytkownik wprowadził z klawiatury cyfrę 2, wyrażenie (= x 10) zwraca nil (fałsz) i funkcja if wykonuje instrukcję instrukcja_2 (warunek na else). Gdyby użytkownik podał liczbę 10, wówczas ewaluacja wyrażenia (= x 10) daje T (prawda) i wykonana zostaje instrukcja instrukcja_1.

5 9/!Qumf!j!lpotusvldkf!tufsvk df 234 9/2/2/!Jotusvldkf!qsptuf!j!{p kf!qsptuf!j!{p pof Wjęzyku AutoLISP rolę symbolu końcowego instrukcji gra lewy skrajny nawias zamykający. Tak więc zapisy: oraz oraz oraz x 3) x 3 )setq x 3 )setq ( ) setq x 3 wjęzyku AutoLISP mają to samo znaczenie. Dzięki temu można w tym języku pisać grupy instrukcji nie troszcząc się o to, czy zmieszczą się w jednym wierszu. Nie zezwala na to np. większość realizacji języka BASIC. Jakżeczęsto zdarza się, że po napisaniu wiersza 100 IF A > 5 OR B = 1 OR C < 0 (jakiś długi ciąg operacji, który nie mieści się w jednym wierszu) musisz napisać to od nowa jako podprogram, aby uniknąć kłopotów! Z drugiej strony, jeżeli koniec wiersza nie ma żadnego znaczenia, to skąd interpreter AutoLISPu będzie wiedział, które instrukcje należy wykonać w razie spełnienia warunku? Często bowiem zdarza się, że chodzi nam o wykonanie warunkowe nie jednej instrukcji, a całego bloku instrukcji. Stosujemy wówczas instrukcję złożoną zwaną inaczej blokiem. Są to po prostu zwykłe instrukcje podane jako argumenty funkcji progn. instrukcja_1 instrukcja_2... instrukcja_n )progn Przyjęto zasadę, że wszędzie tam, gdzie można napisać instrukcję prostą, równie dobrze wolno umieścić instrukcję złożoną.

6 235BvupMJTQ!!qsbluzd{oz!lvst Konstrukcja: (if (warunek) instrukcja pusta )progn else lista_instrukcji )progn )if jest równoważna konstrukcji: (if (not (warunek)) lista_instrukcji )progn )if Oto przykład programu, w którym stosujemy instrukcje złożone: **************************************************PROG_013 Przyklad instrukcji warunkowej IF z zastosowaniem instrukcji zlozonej pobranie zmiennej x x (getint "\npodaj liczbe calkowita: ") )setq sprawdzenie warunku na x (if (= x 10) (princ "Zmienna x ma wartosc 10.") (princ "\ntrafiles.") )progn else (princ "Zmienna x ma wartosc inna niz 10.") (princ "\nnie trafiles.") )progn )if **************************************************KONIEC Oto przykładowy wygląd ekranu po wykonaniu tego programu: Command: (load "prog_013") Podaj liczbe calkowita: 10 Zmienna x ma wartosc 10. Trafiles. Command:

7 9/!Qumf!j!lpotusvldkf!tufsvk df 236 Jeżeli na zadane pytanie odpowiemy inaczej, to ekran może wyglądać tak: Command: (load "prog_013") Podaj liczbe calkowita: 5 Zmienna x ma wartosc inna niz 10. Nie trafiles. Command: Omówmy teraz wyróżnione linie programu: Pobieramy z klawiatury liczbę całkowitą (wykorzystując funkcję getint), a następnie liczbę tę podstawiamy pod zmienną x. Sprawdzamy wartość wyrażenia (= x 10). Wynik T (prawda) lub nil (fałsz), przekazujemy jako argument funkcji if. Wykorzystując instrukcję grupującą progn, budujemy instrukcję złożoną, która ma zostać wykonana, gdy wyrażenie (= x 10) jest prawdziwe zwraca T. Wykorzystując instrukcję grupującą progn, budujemy instrukcję złożoną else, która ma zostać wykonana, gdy wyrażenie (= x 10) jest fałszywe zwraca nil. Przypominam, że zróżnicowane odstępy od lewego marginesu (wypełnione białymi znakami), nie mają dla interpretera AutoLISPu żadnego znaczenia. Pomagają natomiast programiście. Dzięki nim program staje się bardziej czytelny. 9/2/3/![bhojf e pof!jot bhojf e pof!jotusvldkf!jg Po warunku if lub else może wystąpić dowolny typ instrukcji. Może tobyć instrukcja, która wprowadza lub wyprowadza dane, wykonuje działania matematyczne lub wywołuje funkcję użytkownika. Może tobyć także kolejna instrukcja if. O instrukcji if, która zawiera się wewnątrz innej instrukcji if, mówimy, że jest zagnieżdżona. Przykładowo, w poniższym kodzie druga instrukcja if jest zagnieżdżona w pierwszej: (if (> x 1) (if (< y 10) k1 1.25) )if )if Drugi warunek if testuje się tylko wówczas, gdy prawdziwy jest warunek pierwszy, tak więc zmiennej k1 jest przypisywana wartość 1.25 tylko wtedy, kiedy obydwa warunki są prawdziwe. To samo można zapisać następująco: (if (and (> x 1)(< y 10)) k1 1.25) )if Obydwa zapisy powodują wykonanie tego samego zadania, ale w drugim przykładzie, dzięki użyciu operatora logicznego and, zapis jest jaśniejszy. Nie trzeba rozszyfro-

8 237 BvupMJTQ!!qsbluzd{oz!lvst wywać, co wykonuje każda instrukcja if wystarczy odczytać instrukcję, byją zrozumieć Jeśli x jest większe niż 1iy jest mniejsze niż 10, to k1 wynosi Generalnie, dwie następujące po sobie zagnieżdżone instrukcje if można zastąpić jedną z operatorem and. Z reguły mądrze jest ich unikać, ponieważ mogą nas doprowadzić do niejasnych sytuacji i trudnych do odczytania kodów. Poniżej przedstawiam przykład eksponujący zastosowanie zagnieżdżonej instrukcji warunkowej if. Tym razem jest to temat szkolny i jednocześnie klasyczny w wielu podręcznikach programowania, a mianowicie obliczenie pierwiastków równania kwadratowego o postaci: ax 2 + bx + c = 0 Najpierw należy obliczyć tzw. deltę: delta = b 2-4ac a potem, w zależności od wartości delty, trzeba podjąć jedną z trzech akcji: 1. delta < 0 wypisanie komunikatu o braku pierwiastków rzeczywistych 2. delta = 0 zastosowanie odpowiedniego wzoru w celu uzyskania wartości pierwiastka podwójnego, a następnie, po opatrzeniu odpowiednim komunikatem, wyprowadzenie jej na ekran 3. delta > 0 zastosowanie odpowiednich wzorów do uzyskania wartości dwóch różnych pierwiastków rzeczywistych i podanie ich w odpowiedniej postaci Program realizujący powyższe zadania możemy zrealizować wykorzystując zagnieżdżone instrukcje warunkowe if else. Oto program obliczający pierwiastki dwumianu kwadratowego: **************************************************PROG_014 Obliczenie pierwiastkow rownania kwadratowego - wersja (textpage) (princ "Obliczenie pierwiastkow rownania kwadratowego.") (terpri) (terpri) pobranie wspolczynnikow a, b i c (initget (+ 1 2)) a (getreal "Podaj wartosc wspolczynnika a: ")) (initget 1) b (getreal "Podaj wartosc wspolczynnika b: ")) (initget 1) c (getreal "Podaj wartosc wspolczynnika c: ")) (terpri)

9 9/!Qumf!j!lpotusvldkf!tufsvk df 238 obliczenie delty delta (- (* b b)(* 4.0 a c)) )setq obliczenie pierwiastkow rownania (if (< delta 0) brak pierwiastkow rzeczywistych (princ "\ndla wspolczynnikow " (rtos a 2 4) ", " (rtos b 2 4) ", " (rtos c 2 4) "\nwielomian kwadratowy nie ma " "rozwiazan rzeczywistych." )strcat )princ )progn else - w tym miejscu dopuszczamy 2 sytuacje: delta = 0 i delta > 0 (if (= delta 0) podwojny pierwiastek rzeczywisty x1 (/ (- b)(* 2.0 a)) )setq (princ "\ndla wspolczynnikow " (rtos a 2 4) ", " (rtos b 2 4) ", " (rtos c 2 4) "\nwielomian kwadratowy ma " "podwojny pierwiastek rzeczywisty" "\nx1 = " (rtos x1 2 4) )strcat )princ )progn else - ostatnia, trzecia mozliwosc delta > 0-2 rozne pierwiastki rzeczywiste x1 (/ (- (- b)(sqrt delta))(* 2.0 a)) x2 (/ (+ (- b)(sqrt delta))(* 2.0 a)) )setq

10 239 BvupMJTQ!!qsbluzd{oz!lvst (princ "\ndla wspolczynnikow " (rtos a 2 4) ", " (rtos b 2 4) ", " (rtos c 2 4) "\nwielomian kwadratowy ma " "2 rozne pierwiastki rzeczywiste" "\nx1 = " (rtos x1 2 4) " " "x2 = " (rtos x2 2 4) )strcat )princ )progn )if )progn )if (terpri) **************************************************KONIEC Aotomożliwe przypadki wykonania programu: Przypadek 1 brak pierwiastków rzeczywistych Command: (load "prog_014") Obliczenie pierwiastkow rownania kwadratowego. Podaj wartosc wspolczynnika a: 1 Podaj wartosc wspolczynnika b: 1 Podaj wartosc wspolczynnika c: 1 Dla wspolczynnikow , , wielomian kwadratowy nie ma rozwiazan rzeczywistych. Command: Przypadek 2 podwójny pierwiastek rzeczywisty Command: (load "prog_014") Obliczenie pierwiastkow rownania kwadratowego. Podaj wartosc wspolczynnika a: 1 Podaj wartosc wspolczynnika b: -2 Podaj wartosc wspolczynnika c: 1 Dla wspolczynnikow , , wielomian kwadratowy ma podwojny pierwiastek rzeczywisty x1 = Command:

11 9/!Qumf!j!lpotusvldkf!tufsvk df 23: Przypadek 3 dwa różne pierwiastki rzeczywiste Command: (load "prog_014") Obliczenie pierwiastkow rownania kwadratowego. Podaj wartosc wspolczynnika a: 2 Podaj wartosc wspolczynnika b: -3 Podaj wartosc wspolczynnika c: 1 Dla wspolczynnikow , , wielomian kwadratowy ma 2 rozne pierwiastki rzeczywiste x1 = x2 = Command: Omówmy teraz wyróżnione linie programu: Funkcja textpage powoduje wyświetlenie ekranu tekstowego AutoCADa z jednoczesnym wyczyszczeniem jego zawartości. Funkcja initget ustala różne opcje, które mogą być użyte przez następującą po initget funkcję getxxx tutaj odnosi się to do wartości współczynnika a. W konkretnym przypadku bity kontrolne oznaczają: 1 nie pozwala na tzw. pusty ENTER 2 nie pozwala na wprowadzenie wartości zerowej unikniemy w ten sposób sprowadzenia równania kwadratowego do postaci liniowej bx + c = 0 Dokładniej o funkcji initget powiemy sobie w punkcie Pobieranie informacji od użytkownika. W liniach tych robimy założenia odnośnie wartości współczynników b i c. Mogą być one dowolne, za wyjątkiem pustego ENTER. Instrukcja grupująca progn określa nam instrukcje, które zostaną wykonane w przypadku, gdy delta będzie mniejsza od zera równanie nie posiada pierwiastków rzeczywistych. Funkcja strcat zwraca łańcuch będący złożeniem (konkatenacją) wszystkich swoich argumentów typu string. Otrzymany łańcuch podawany jest jako argument funkcji princ,którawyświetla go na ekranie tekstowym. Dokładniej o funkcji strcat powiemy sobie w punkcie Działania na łańcuchach. Jak już wspomniałem wcześniej, argumenty funkcji stcat muszą być łańcuchami (typ string). Ponieważ pierwiastki równania kwadratowego są zmiennymi typu rzeczywistego, należy wpierw poddać je konwersji na typ łańcuchowy. Kowersja ta przeprowadzana jest za pomocą funkcji rtos. W naszym konkretnym przypadku funkcja rtos zwraca łańcuch obrazujący format dziesiętny zmiennej z czterema cyframi po przecinku. Ten blok instrukcji ma zostać wykonany, gdy delta jest równa lub większa od zera.

12 241 BvupMJTQ!!qsbluzd{oz!lvst Tutaj dokonujemy kolejnego uściślenia warunku na deltę. Ten blok instrukcji ma zostać wykonany, gdy delta jest równa zero. W linii tej następuje zgrupowanie instrukcji w blok, który ma zostać wykonany, gdy delta jest większa od zera. Ponieważ zastosowanie zagnieżdżonych instrukcji warunkowych if prowadzi do otrzymania zawiłego kodu, poniższy przykład pokazuje sposób obejścia tego problemu. **************************************************PROG_015 Obliczenie pierwiastkow rownania kwadratowego - wersja (textpage) (princ "Obliczenie pierwiastkow rownania kwadratowego.") (terpri) (terpri) pobranie wspolczynnikow a, b i c (initget (+ 1 2)) a (getreal "Podaj wartosc wspolczynnika a: ")) (initget 1) b (getreal "Podaj wartosc wspolczynnika b: ")) (initget 1) c (getreal "Podaj wartosc wspolczynnika c: ")) (terpri) obliczenie delty delta (- (* b b)(* 4.0 a c)) )setq obliczenie pierwiastkow rownania (if (< delta 0) brak pierwiastkow rzeczywistych (princ "\ndla wspolczynnikow " (rtos a 2 4) ", " (rtos b 2 4) ", " (rtos c 2 4) "\nwielomian kwadratowy nie ma " "rozwiazan rzeczywistych." )strcat )princ )progn )if

13 9/!Qumf!j!lpotusvldkf!tufsvk df 242 (if (= delta 0) podwojny pierwiastek rzeczywisty x1 (/ (- b)(* 2.0 a)) )setq (princ "\ndla wspolczynnikow " (rtos a 2 4) ", " (rtos b 2 4) ", " (rtos c 2 4) "\nwielomian kwadratowy ma " "podwojny pierwiastek rzeczywisty" "\nx1 = " (rtos x1 2 4) )strcat )princ )progn )if (if (> delta 0) 2 rozne pierwiastki rzeczywiste x1 (/ (- (- b)(sqrt delta))(* 2.0 a)) x2 (/ (+ (- b)(sqrt delta))(* 2.0 a)) )setq (princ "\ndla wspolczynnikow " (rtos a 2 4) ", " (rtos b 2 4) ", " (rtos c 2 4) "\nwielomian kwadratowy ma " "2 rozne pierwiastki rzeczywiste" "\nx1 = " (rtos x1 2 4) " " "x2 = " (rtos x2 2 4) )strcat )princ )progn )if (terpri) **************************************************KONIEC

14 243 BvupMJTQ!!qsbluzd{oz!lvst Wykonanie powyższego programu jest dla użytkownika identyczne jak programu PROG_014.LSP różnice widoczne są tylko z punktu widzenia programisty. Jak widać w powyższym kodzie, wykorzystując obliczoną wcześniej deltę, do obliczenia pierwiastków równania wykorzystano trzy proste instrukcje warunkowe if (bez realizacji warunku typu else): (if (< delta 0)... )progn )if (if (= delta 0)... )progn )if (if (> delta 0)... )progn )if Sam program stał się przez to bardziej przejrzysty i zrozumiały. Instrukcja while ma postać: (while wyrażenie instrukcja_1 )while wyrażenie Najpierw oblicza się wartość wyrażenia. Jeśli wynik jest równy nil (fałsz), wówczas instrukcja_1 nie jest wcale wykonywana. Jeśli jednak wartość wyrażenia jest różna od nil (prawda), wówczas wykonywana jest instrukcja_1, po czym ponownie obliczana jest wartość wyrażenia. Jeśli nadal wartość tego wyrażenia jest różna od nil, wówczas ponownie wykonywana jest instrukcja_1 i tak dalej, dopóki (while!) wyrażenie ma wartość różną od nil. Jeśli w końcu kiedyś obliczone wyrażenie będzie równe nil, wówczas dopiero pętla zostanie przerwana. Obliczenie wartości wyrażenia odbywa się przed wykonaniem instrukcji instrukcja_1. Instrukcja_1 może być instrukcją prostą lub złożoną.

15 9/!Qumf!j!lpotusvldkf!tufsvk df 244 Qs{zlbe!2 Należy zawsze pamiętać o umieszczeniu warunku wyjścia z pętli. Jeśli jednak zdarzy Ci się uruchomić nieskończoną pętlę, możesz ją bardzo prosto przerwać naciskając kombinację klawiszy Ctrl-C. A tak na marginesie kombinacja klawiszy Ctrl-C przerywa dowolną komendę AutoCADa lub funkcję AutoLISPu. Zastosowanie pętli while omówimy sobie na poniższych przykładach. W przykładzie tym, będąc wpętli while, pobieramy coraz to nowe wartości zmiennej x. Warunkiem opuszczenia pętli while jest nadanie zmiennej x wartości zero. *************************************************PROG_016 Wykorzystanie instrukcji WHILE - wersja (textpage) przejscie na ekran tekstowy nadanie zmiennej x wartosci nil x nil) wejscie w petle while (while (/= x 0) pobranie nowej wartosci zmiennej x x (getint "Podaj nowa wartosc zmiennej x [0 - koniec]: " )getint )setq )progn )while *************************************************KONIEC A oto przykładowy wygląd ekranu po wykonaniu programu: Command: (load "prog_016") Podaj nowa wartosc zmiennej x [0 - koniec]: 1 Podaj nowa wartosc zmiennej x [0 - koniec]: -10 Podaj nowa wartosc zmiennej x [0 - koniec]: 0 Command: Omówmy teraz wyróżnione linie programu:

16 245BvupMJTQ!!qsbluzd{oz!lvst Qs{zlbe!3 Wchodzimy w pętlę while i rozpoczynamy pobieranie wartości zmiennej x. Wyrażeniem, powodującym dopuszczenie do wejścia w pętlę jest (/= x 0). Wyrażenie to jest prawdziwe (zwraca T), gdyż wcześniej zmiennej x została nadana wartość nil. Pobieramy nową wartość zmiennej x, po czym wracamy na początek pętli while, by ponownie porównać warunek (/= x 0). Jeśli warunek jest prawdziwy, pobieramy następną wartość zmiennej x i znowu skaczemy na początek pętli. Jeśli warunek jest fałszywy, omijamy pętlę while i wykonujemy dalszy ciąg instrukcji w tym przypadku jest to tylko instrukcja, powodująca niezauważalne zakończenie wykonywania programu. Program ten stanowi modyfikację programu PROG_016. Ukazuje on inny sposób kontroli wyrażenia, powodującego wyjściezpętli while. *************************************************PROG_017 Wykorzystanie instrukcji WHILE - wersja (textpage) przejscie na ekran tekstowy nadanie zmiennej jeszcze wartosci T jeszcze T) wejscie w petle while (while jeszcze pobranie nowej wartosci zmiennej x x (getint "Podaj nowa wartosc zmiennej x [0 - koniec]: " )getint )setq zbadanie wartosci zmiennej x (if (= x 0) jeszcze nil) )progn )if )progn )while jeszcze *************************************************KONIEC

17 Qs{zlbe!4 9/!Qumf!j!lpotusvldkf!tufsvk df 246 Wykonanie programu jest identyczne jak dla programu PROG_016 różnice są widoczne jedynie dla programisty. Omówmy teraz wyróżnione linie programu: Inicjalizujemy zmienną jeszcze i nadajemy jej wartość T (prawda). Zmienna ta będzie sterować pętlą while. Ponieważ wcześniej zmiennej jeszcze nadano wartość T, wchodzimy w pętlę while. Pobieramy nową wartość zmiennej x. Sprawdzamy, czy zmienna x jest równa zero. Jeżeli zmienna x jest równa zero, ustawiamy wartość zmiennej jeszcze na nil, umożliwiając tym samym opuszczenie pętli while. W przykładzie tym, wykorzystujemy instrukcję while do obliczenia i wypisania na ekranie tekstowym kwadratów liczb całkowitych od 1 do 10. *************************************************PROG_018 Wykorzystanie instrukcji WHILE. Program do obliczania kwadratow liczb calkowitych od 1 do (textpage) przejscie na ekran tekstowy liczba 1) (princ "\nkwadraty liczb calkowitych od 1 do 10.\n") (princ "\nliczba Kwadrat liczby\n") (while (< liczba 11) kwadrat (* liczba liczba)) (princ " " (rtos liczba 2 0) " " (rtos kwadrat 2 0) )strcat )princ (terpri) liczba (1+ liczba)) )progn )while *************************************************KONIEC

18 247 BvupMJTQ!!qsbluzd{oz!lvst Po wykonaniu programu ekran tekstowy będzie wyglądał następująco: Command: (load "prog_018") Kwadraty liczb calkowitych od 1 do 10. Liczba Kwadrat liczby Command: Omówmy teraz wyróżnione linie programu: Ustawiamy wartość zmiennej liczba na 1. Tutaj rozpoczyna się pętla, która zostanie wykonana, ponieważ wartość zmiennej liczba jest mniejsza niż 11. Gdyby liczba już na początku była równa 11, wówczas pętla nie wykonałaby się ani razu. Obliczany kwadrat danej liczby. Wynik podstawiany jest pod zmienną kwadrat. Używając funkcji princ, strcat oraz rtos, wypisujemy w jednym wierszu daną liczbę oraz jej kwadrat. To tutaj następuje przejście do nowej linii. Zwiększamy wartość zmiennej liczba o 1. Gdybyśmy o tym zapomnieli, wówczas jedynym sposobem na opuszczenie pętli while byłoby przerwanie wykonywania programu poprzez naciśnięcie kombinacji klawiszy Ctrl-C. 9/3/2/![bhojf e pof!jotusv f e pof!jotusvldkf!xij ldkf!xijmf Aby zapewnić sobie dwa poziomy powtarzania, możemy zagnieździć pętle while. Można na przykład zastosować zewnętrzną pętlę w celu powtarzania całego programu, dopóki użytkownik nie zadecyduje inaczej, oraz wewnętrzną do sprawdzania poprawności danych wejściowych. Poniższy program pokazuje wykorzystanie zagnieżdżonych pętli while do wypisania na ekranie tekstowym liczb od 1 do 100 w 10 rzędach po 10 kolumn. *************************************************PROG_019 Wykorzystanie zagniezdzonych instrukcji WHILE. Wypisanie liczb od 1 do 100 w 10 rzedach po 10 kolumn

19 9/!Qumf!j!lpotusvldkf!tufsvk df 248 (textpage) (princ "\nwykorzystanie zagniezdzonych instrukcji WHILE.") (princ "\nwypisanie liczb od 1 do 100 " "w 10 rzedach po 10 kolumn." )strcat )princ (princ "\n\n") rzad 1) (while (< rzad 11) kolumna 1 liczba 1 )setq (while (< kolumna 11) (princ (+ liczba (* 10 (- rzad 1)))) (princ " ") kolumna (1+ kolumna) liczba (1+ liczba) )setq )progn )while kolumna (princ "\n") rzad (1+ rzad)) )progn )while rzad *************************************************KONIEC Wykonanie programu będzie następujące: Command: (load "prog_019") Wykorzystanie zagniezdzonych instrukcji WHILE. Wypisanie liczb od 1 do 100 w 10 rzedach po 10 kolumn

20 249 BvupMJTQ!!qsbluzd{oz!lvst Command: Omówmy teraz wyróżnione linie programu. Ustawiamy wartość początkową zmiennej rzad. Wchodzimy w zewnętrzną pętlę while. Pętlę tę wykonujemy tak długo, dopóki zmienna rzad jest mniejsza od 11. Ustawiamy wartości początkowe zmiennych kolumna i liczba dla kolejnego rzędu liczb. Wchodzimy w wewnętrzną pętlę while. Pętlę tę wykonujemy tak długo, dopóki zmienna kolumna jest mniejsza od 11. Obliczamy aktualną wartość liczby, po czym wypisujemy ją używając instrukcji princ. Oddzielamy od siebie dwoma spacjami poszczególne liczby w rzędzie. Zwiększamy o 1 wartości zmiennych kolumna i liczba, zapewniając tymsamym dalszy prawidłowy przebieg pętli wewnętrznej. Będąc już poza pętlą wewnętrzną przechodzimy do nowego wiersza, umożliwiając tym samym prawidłowe wypisanie kolejnego rzędu liczb. Zwiększamyo1wartość zmiennej rzad, zapewniając tym samym dalszy prawidłowy przebieg pętli zewnętrznej. W pewnych okolicznościach trzeba w zależności od wyniku jakiegoś testu, wybrać jedną z wielu dróg. Konstrukcja if... else daje do wyboru tylko dwie możliwości dalszego postępowania, chociaż pozwala też stosować rodzaj zagnieżdżania jednych konstrukcji w innych, na przykład: if (warunek_1) czynnosc_1 else if (warunek_2) czynnosc_2 else

21 9/!Qumf!j!lpotusvldkf!tufsvk df 24: if (warunek_3) czynnosc_3 itd. Jest to jednak zdecydowanie nieznośny sposób rozwiązania tego problemu. W języku AutoLISP istnieje mechanizm, zwany instrukcją cond (zwrotnica), który pozwala wybrać jeden spośród wielu skoków. Format instrukcji cond jest następujący: (cond (test_1 result_1)... (test_n result_n)) Argumentami funkcji może być dowolna liczba list. Funkcja testuje wyrażenia test, wyznaczając wartość pierwszych elementów każdej kolejnej listy podrzędnej (w podanym porządku), aż do momentu, gdy wartość któregoś z nich okaże się różna od nil. Następnie wartościowane jest to wyrażenie result, które występuje po pozytywnie przetestowanym wyrażeniu test i zwracana jest wartość ostatniego wyrażenia listy podrzędnej. Zwykle jako ostatnie wyrażenie test używa się T (jest ono uwzględniane w przypadku braku pozytywnego wyniku testowania wszystkich poprzednich). Typowym przykładem zastosowania tej instrukcji może być program zarządzania danymi, którego działaniem steruje się za pośrednictwem menu. Użytkownik programu otrzymuje następujące menu: Mozliwe opcje programu: 1. Utworz nowy plik. 2. Dolacz jeden element do pliku. 3. Usun jeden element z pliku. 4. Wypisz jeden element z pliku. 5. Przeszukaj plik. 6. Zakoncz prace. Wybierz opcje [1-6]: Jest sześć funkcji przeznaczonych do wykonywania tych zadań oraz funkcja o nazwie MENU, zarządzająca pozostałymi funkcjami. A oto i program realizujący powyższe zadania: *************************************************PROG_020 Przyklad uzycia instrukcji COND - wersja 1. ================================================= definicje poszczegolnych funkcji programu (defun NOWY_PLIK () (princ "\nwybrales opcje NOWY PLIK.")

22 251 BvupMJTQ!!qsbluzd{oz!lvst cialo_funkcji )progn )NOWY_PLIK (defun DOPISZ_ELEMENT () (princ "\nwybrales opcje DOPISZ ELEMENT.") cialo_funkcji )progn )DOPISZ_ELEMENT (defun USUN_ELEMENT () (princ "\nwybrales opcje USUN ELEMENT.") cialo_funkcji )progn )USUN_ELEMENT (defun WYPISZ_ELEMENT () (princ "\nwybrales opcje WYPISZ ELEMENT.") cialo_funkcji )progn )WYPISZ_ELEMENT (defun SZUKAJ ()

23 9/!Qumf!j!lpotusvldkf!tufsvk df 252 (princ "\nwybrales opcje SZUKAJ.") cialo_funkcji )progn )SZUKAJ (defun ZAKONCZ_PRACE () (princ "\nwybrales opcje ZAKONCZ PRACE.") cialo_funkcji jeszcze nil) )progn )ZAKONCZ PRACE Funkcja glowna (defun MENU () jeszcze T) (while jeszcze (textpage) wypisanie zawartosci menu (princ "\nmozliwe opcje programu:" "\n1. Utworz nowy plik." "\n2. Dolacz jeden element do pliku." "\n3. Usun jeden element z pliku." "\n4. Wypisz jeden element z pliku." "\n5. Przeszukaj plik." "\n6. Zakoncz prace." )strcat )princ (terpri) pobranie numeru opcji opcja (getint

24 253 BvupMJTQ!!qsbluzd{oz!lvst "\nwybierz opcje [1-6]: " )getint )setq (textpage) wywolanie funkcji zwiazanej z numerem podanej opcji (cond ((= opcja 1)(NOWY_PLIK)) ((= opcja 2)(DOPISZ_ELEMENT)) ((= opcja 3)(USUN_ELEMENT)) ((= opcja 4)(WYPISZ_ELEMENT)) ((= opcja 5)(SZUKAJ)) ((= opcja 6)(ZAKONCZ_PRACE)) (T (princ "\nniepoprawny przypadek.")) )cond zatrzymanie realizacji programu do chwili nacisniecia klawisza ENTER (getstring "\n\nnacisnij ENTER...") )progn )while jeszcze )progn )MENU koniec definicji funkcji ================================================= wywolanie funkcji MENU (MENU) ================================================= *************************************************KONIEC Wykonanie powyższego programu możebyć następujące: Command: (load "prog_020") Mozliwe opcje programu: 1. Utworz nowy plik. 2. Dolacz jeden element do pliku. 3. Usun jeden element z pliku. 4. Wypisz jeden element z pliku. 5. Przeszukaj plik. 6. Zakoncz prace. Wybierz opcje [1-6]: 3 Wybrales opcje USUN ELEMENT

25 9/!Qumf!j!lpotusvldkf!tufsvk df 254 Nacisnij ENTER... Mozliwe opcje programu: 1. Utworz nowy plik. 2. Dolacz jeden element do pliku. 3. Usun jeden element z pliku. 4. Wypisz jeden element z pliku. 5. Przeszukaj plik. 6. Zakoncz prace. Wybierz opcje [1-6]: 7 Niepoprawny przypadek. Nacisnij ENTER... Mozliwe opcje programu: 1. Utworz nowy plik. 2. Dolacz jeden element do pliku. 3. Usun jeden element z pliku. 4. Wypisz jeden element z pliku. 5. Przeszukaj plik. 6. Zakoncz prace. Wybierz opcje [1-6]: 6 Wybrales opcje ZAKONCZ PRACE Nacisnij ENTER... Command: Omówmy teraz wyróżnione linie programu: Używając funkcji defun, definiujemy poszczególne funkcje naszego programu. Funkcje te są to tylko funkcje prototypowe nie robią nic poza wypisaniem nazwy wybranej komendy (za wyjątkiem funkcji ZAKONCZ_PRACE). W linii tej, będącej instrukcją funkcji ZAKONCZ_PRACE, poprzez nadanie zmiennej jeszcze wartości nil, opuszczamy pętlę while. Definiujemy naszą funkcję główną MENU. Nadajemy zmiennej jeszcze wartość T (prawda), umożliwiając tym samym wejście w pętlę while. Wchodzimy w pętlę while. Używając funkcji princ oraz strcat, wypisujemy menu użytkownika. W linii tej, liczba całkowita, będąca odpowiedzią (wyborem) użytkownika, zostaje podstawiona pod zmienną opcja. To tutaj wykorzystujemy instrukcję cond, aby dokonać wyboru wielowariantowego. Jeśli zmienna opcja =1,tobędzie wywołana funkcja NOWY_PLIK, jeśli zaś zmienna opcja = 2, to zostanie wywołana funkcja DOPISZ_ELEMENT itd.

26 255 BvupMJTQ!!qsbluzd{oz!lvst W linii tej, widzimy, jak w instrukcji cond zastosować opcję domyślną. Jeżeli wartość zmiennej opcja będzie mniejsza niż 1lubwiększa niż 6, to instrukcja cond wybierze instrukcje występujące po stałej predefiniowanej T wypisze komunikat "Niepoprawny przypadek.", po czym zostanie ponowiony wybór opcji z menu. Wywołujemy wcześniej zdefiniowaną funkcję MENU. Postępowanie takie automatycznie wywołuje funkcję MENU zaraz po pomyślnym załadowaniu programu do interpretera AutoLISPu. Należy zwrócić szczególną uwagę na odpowiednią liczbę nawiasów, oddzielających od siebie poszczególne warunki. Na przykład zapis: (cond ((= x1 1) lista_instrukcji ) ((and (= x1 2)(/= x3 0)) lista_instrukcji ) )cond jest poprawny, podczas gdy zapis: (cond (= x1 1) lista_instrukcji ) (and (= x1 2)(/= x3 0)) lista_instrukcji ) )cond jest zapisem błędnym. W takim przypadku interpreter powinien zasygnalizować błąd zamknięcia nawiasów. Jeżeli jednak pomylisz się również w liczbie nawiasów w lista_ instrukcji tak, że ich liczba będzie zgodna, mogą powstać błędy trudne do zlokalizowania. Aby uniknąć takiego przypadku, możesz stosować następującą konstrukcję: (cond (przypadek 1 (= x1 1) lista_instrukcji_1 )progn )koniec przypadku 1 (rzypadek 2 (and (= x1 2)(/= x3 0)) lista_instrukcji_2 )progn

27 9/!Qumf!j!lpotusvldkf!tufsvk df 256 )koniec przypadku 2... (przypadek n (warunek_n) lista_instrukcji_n )progn )koniec przypadku n )cond Zapis taki jest przejrzysty i czytelny, można również łatwo zlokalizować odpowiadającą sobie parę nawiasów. Wróćmy jednak do naszego programu. Funkcja główna MENU wywoływana była z pętli while. Po wyborze i wykonaniu funkcji z menu 1 5, następowało ponowne wywołanie funkcji MENU. Co jednak zrobić, jeśli chcemy, aby funkcja MENU była wywoływana jednokrotnie (tzn. wykonywała jedną z funkcji podrzędnych, po czym opuszczała pętlę while)? Odpowiedź jest bardzo prosta. Wystarczy do każdej funkcji pomocniczej dopisać na końcu instrukcję ustalającą wartość zmiennej jeszcze na nil. Program PROG_021, znajdujący się na dołączonej dyskietce, zawiera odpowiednie zmiany, pozwalające na działanie w wyżej wymieniony sposób. Ostatnim przykładem użycia instrukcji cond będzie program obliczający pierwiastki równania kwadratowego. **************************************************PROG_022 Wykorzystanie instrukcji COND. Obliczenie pierwiastkow rownania kwadratowego (textpage) (princ "Obliczenie pierwiastkow rownania kwadratowego.") (terpri) (terpri) pobranie wspolczynnikow a, b i c (initget (+ 1 2)) a (getreal "Podaj wartosc wspolczynnika a: ")) (initget 1) b (getreal "Podaj wartosc wspolczynnika b: ")) (initget 1) c (getreal "Podaj wartosc wspolczynnika c: ")) (terpri) obliczenie delty

28 257 BvupMJTQ!!qsbluzd{oz!lvst delta (- (* b b)(* 4.0 a c)) )setq obliczenie pierwiastkow rownania (cond ((< delta 0) brak pierwiastkow rzeczywistych (princ "\ndla wspolczynnikow " (rtos a 2 4) ", " (rtos b 2 4) ", " (rtos c 2 4) "\nwielomian kwadratowy nie ma " "rozwiazan rzeczywistych." )strcat )princ )progn )koniec delta < 0 ((= delta 0) podwojny pierwiastek rzeczywisty x1 (/ (- b)(* 2.0 a)) )setq (princ "\ndla wspolczynnikow " (rtos a 2 4) ", " (rtos b 2 4) ", " (rtos c 2 4) "\nwielomian kwadratowy ma " "podwojny pierwiastek rzeczywisty" "\nx1 = " (rtos x1 2 4) )strcat )princ )progn )koniec delta = 0 ((> delta 0) 2 rozne pierwiastki rzeczywiste x1 (/ (- (- b)(sqrt delta))(* 2.0 a)) x2 (/ (+ (- b)(sqrt delta))(* 2.0 a)) )setq (princ

29 9/!Qumf!j!lpotusvldkf!tufsvk df 258 "\ndla wspolczynnikow " (rtos a 2 4) ", " (rtos b 2 4) ", " (rtos c 2 4) "\nwielomian kwadratowy ma " "2 rozne pierwiastki rzeczywiste" "\nx1 = " (rtos x1 2 4) " " "x2 = " (rtos x2 2 4) )strcat )princ )progn )koniec delta > 0 )cond (terpri) **************************************************KONIEC Wykonanie powyższego programu jest identyczne, jak w programach PROG_014 i PROG_015, gdzie używaliśmy instrukcji warunkowej if. Omówmy teraz wyróżnione linie programu: Wchodzimy w instrukcję cond i rozpoczynamy sprawdzanie wartości zmiennej delta. Ten fragment programu wykonywany jest wówczas, gdy zmienna delta jest mniejsza od zera. Ten fragment programu wykonywany jest wówczas, gdy zmienna delta jest równa zero. Ten fragment programu wykonywany jest wówczas, gdy zmienna delta jest większa od zera. Pętla repeat posiada następujący format: (repeat number expr_1... expr_n) W funkcji tej argument number jest dowolną dodatnią liczbą typu integer. Funkcja dokonuje wartościowania każdego argumentu expr tyle razy, ile określa argument number i zwraca wartość ostatniego z nich.

30 259 BvupMJTQ!!qsbluzd{oz!lvst Funkcja ta jest podobna do być może znanej Ci z innych języków programowania funkcji for. Jej działanie prześledzimy na poniższym przykładzie. Będzie to modyfikacja programu PROG_018, który oblicza i wypisuje kwadraty liczb całkowitych od 1 do 10. W programie PROG_018, została do tego celu użyta funkcja while. W poniższym programie pokażę Ci, jak rozwiązać to zadanie przy pomocy pętli repeat. A oto i nasz program: *************************************************PROG_023 Wykorzystanie instrukcji REPEAT. Program do obliczania kwadratow liczb calkowitych od 1 do (textpage) przejscie na ekran tekstowy liczba 1) (princ "\nkwadraty liczb calkowitych od 1 do 10.\n") (princ "\nliczba Kwadrat liczby\n") (repeat 10 zmiana w stosunku do PROG11 kwadrat (* liczba liczba)) (princ " " (rtos liczba 2 0) " " (rtos kwadrat 2 0) )strcat )princ (terpri) liczba (1+ liczba)) )progn )repeat *************************************************KONIEC Po wykonaniu programu ekran będzie wyglądał identycznie, jak w programie PROG_018. Omówmy teraz wyróżnione linie programu: Instrukcja (while (< liczba 11)...) została zastąpiona instrukcją (repeat 10...). Jest to jedyna zmiana dokonana w stosunku do programu PROG_018. Zastosowanie instrukcji while czy instrukcji repeat zależy od tego, co chcemy uzyskać. Instrukcję repeat stosujemy wówczas, gdy znamy liczbę powtórzeń pętli. Instrukcję while możemy stosować zarówno wtedy, gdy znamy liczbę powtórzeń pętli, jak również wtedy, gdy liczba powtórzeń nie jest znana, a zakończenie pętli zależne jest od spełnienia danego warunku.

31 9/!Qumf!j!lpotusvldkf!tufsvk df 25: 9/5/2/![bhojf e pof!jotu hojf e pof!jotusvldkf!sf svldkf!sfqfbu Zagnieżdżanie instrukcji repeat jest identyczne jak instrukcji while, co zobrazowano na poniższym przykładzie. *************************************************PROG_024 Wykorzystanie zagniezdzonych instrukcji REPEAT. Wypisanie liczb od 1 do 100 w 10 rzedach po 10 kolumn (textpage) (princ "\nwykorzystanie zagniezdzonych instrukcji REPEAT.") (princ "\nwypisanie liczb od 1 do 100 " "w 10 rzedach po 10 kolumn." )strcat )princ (princ "\n\n") rzad 1) (repeat 10 kolumna 1 liczba 1 )setq (repeat 10 (princ (+ liczba (* 10 (- rzad 1)))) (princ " ") kolumna (1+ kolumna) liczba (1+ liczba) )setq )progn )repeat (princ "\n") rzad (1+ rzad)) )progn )repeat *************************************************KONIEC

32 261 BvupMJTQ!!qsbluzd{oz!lvst Po wykonaniu programu ekran będzie wyglądał identycznie, jak w programie PROG_019. Omówmy teraz wyróżnione linie programu, które obrazują zmiany w stosunku do kodu z programu PROG_019: Instrukcja (while (< rzad 11)...), będąca pętlą zewnętrzną, została zastąpiona instrukcją (repeat 10...) liczba powtórzeń pętli wynosi 10. Instrukcja (while (< kolumna 11)...), będąca pętlą wewnętrzną, została zastąpiona instrukcją (repeat 10...) liczba powtórzeń pętli wynosi 10. Jeśli programowałeś już w jakimś innym języku, jedną z pierwszych poznanych instrukcji była zapewne pętla for. Ma ona następującą formę (przykład z języka C): for (instr_ini wyraz_warun instr_krok) tresc_petli co w przykładzie może wyglądać choćby tak: for (i=0 i<10 i=i+1) { printf ("\njestem w petli for.") } Wyjaśnijmy sobie teraz, co oznaczają poszczególne człony: for (ang. dla...) oznacza: dla takich warunków rób... instr_ini jest to instrukcja wykonywana zanim pętla zostanie po raz pierwszy uruchomiona. W naszym przykładzie jest to podstawienie i=0. wyraz_warun jesttowyrażenie, które obliczane jest przed każdym obiegiem pętli. Jeśli jest ono różne od zera, to wykonywane zostają instrukcje będące treścią pętli. U nas wyrażeniem warunkowym jest wyrażenie i<10. Jeśli rzeczywiście i jest mniejsze od 10, wówczas wykonana zostaje instrukcja będąca treścią pętli, czyli wypisanie tekstu "\njestem w pętli for." instr_krok to instrukcja wykonywana na zakończenie każdego obiegu pętli. Jest to jakby ostatnia instrukcja, wykonywana bezpośrednio przed obliczeniem wyrażenia wyraz_warun. Unasjesttopoprostui=i+1. Praca tej pętli odbywa się więc jakby według takiego harmonogramu: 1. Najpierw wykonują się instrukcje inicjalizujące pracę pętli.

33 9/!Qumf!j!lpotusvldkf!tufsvk df Obliczane jest wyrażenie warunkowe. Jeśli jest równe 0 praca pętli jest przerywana. 3. Jeśli powyżej okazało się, że wyrażenie było różne od zera, wówczas wykonywane zostają instrukcje będące treścią pętli. 4. Po wykonaniu treści pętli wykonana zostaje instrukcja inst_krok, po czym powtarzana jest akcja 2). Pora teraz na wyjaśnienie, dlaczego w celu omówienia pętli for posłużyłem się przykładem z języka C. Otóż w standardowych funkcjach języka AutoLISP nie ma definicji pętli for!!! Jest wprawdzie instrukcja repeat, lecz nie jest to jeszcze pętla for w całej okazałości. Powyższy problem da się jednak obejść. Język AutoLISP oferuje nam konstrukcję tzw. listy-funkcji. Ponieważ funkcja jest listą, więc po prostu zbudujmy ją jak listę, anastępnie wykonajmy jako funkcję. Pisanie programów wykorzystujących takie sztuczki jest możliwe tylko w LISPie. Inne języki nie pozwalają na traktowanie obiektu raz jako danej (lista), a raz jako części programu (funkcja). Temat listy-funkcji zostanie omówiony dokładnie podczas omawiania funkcji, teraz więc zostanie zaprezentowana definicja pętli FOR, której autorami są Panowie: Maciej Horczyczak i Jacek Skierski książka AutoLISP dla użytkowników AutoCADa. *************************************************PROG_025 Maciej Horczyczak & Jacek Skierski Petla FOR (jak w BASIC'u) (for 'zm_ster war_pocz_zm_ster war_kon_zm_ster krok_zm_ster 'lista instrukcji) Przyklady wywolania: (for 'i '(print i)) (for 'i ' (print i) (print (+ i 1)) )progn )for i (defun FOR ( zmster ip ik ki zakres / fun w ) (if (> ki 0) w (eval '<=)) w (eval '>=)) )if fun (list (list '/ ) zakres)) (set zmster ip) (while (w (eval zmster) ik) (FUN)

34 263 BvupMJTQ!!qsbluzd{oz!lvst Qs{zlbe!2 (set zmster (+ ki (eval zmster))) )while fun nil) )progn )FOR *************************************************KONIEC O definicji pętli FOR powiemy sobie podczas omawiania definiowania własnych funkcji, teraz tylko podam kilka przykładów jej wykorzystania. W przykładzie tym, po pobraniu wartości początkowej, końcowej oraz kroku pętli, wypisujemy na ekran wybrane liczby. *************************************************PROG_026 Wykorzystanie petli FOR - przyklad odszukanie i zaladowanie pliku PROG_025.LSP plik (findfile "prog_025.lsp")) (if plik plik zostal znaleziony (load plik) )progn else - nia znaleziono pliku (alert "Nie znaleziono pliku PROG_025.LSP!!!" "\nwykonywanie programu przerwane." )strcat )alert (exit) )progn )if jesli plik prog_025 zostal znaleziony wykorzystanie petli for (textpage) przejscie na ekran tekstowy (princ "\nprzyklad wykorzystania petli for.") (initget ( )) x1 (getint "\npodaj wartosc poczatkowa petli: ")) (initget ( )) x2 (getint "\npodaj wartosc koncowa petli: "))

35 9/!Qumf!j!lpotusvldkf!tufsvk df 264 (initget ( )) x3 (getint "\npodaj krok petli: ")) (princ "\nwypisywanie od " (rtos x1 2 0) " do " (rtos x2 2 0) " z krokiem = " (rtos x3 2 0) ".\n" )strcat )princ (for 'i x1 x2 x3 ' (princ i) (terpri) przejscie do nowej linii )progn )for i *************************************************KONIEC Wykonanie programu możebyć następujące: Command: (load "prog_026") Przyklad wykorzystania petli for. Podaj wartosc poczatkowa petli: 1 Podaj wartosc koncowa petli: 10 Podaj krok petli: 2 Wypisywanie od 1 do 10 z krokiem = Command: Omówmy teraz wyróżnione linie programu: Wykorzystując standardową funkcję AutoLISPu findfile, poszukujemy pliku z definicją pętli FOR. Format funkcji findfile jest następujący: (findfile filename)

36 265BvupMJTQ!!qsbluzd{oz!lvst Funkcja ta poszukuje określonego pliku (w naszym przypadku jest to plik PROG_025.LSP) w bibliotecznej ścieżce poszukiwań AutoCADa. Jeśli podany plik zostanie znaleziony, funkcja zwraca pełną nazwę pliku wraz ze ścieżką dostępu, w przeciwnym wypadku funkcja zwraca nil. Wartość zwracana przez funkcję findfile jest następnie podstawiana pod zmienną plik. Jeśli plik PROG_025.LSP został znaleziony, funkcja load powoduje jego załadowanie. Jeśli plik PROG_025.LSP nie został znaleziony, standardowa funkcja AutoLISPu alert powoduje wypisanie w oknie dialogowym podanego łańcucha tekstu. Funkcja exit wymusza zakończenie bieżącego programu użytkowego. Wywołujemy ją po wyświetleniu komunikatu ostrzegawczego w oknie dialogowym. Gdyby funkcja ta nie została tutaj zastosowana, w trakcie realizacji dalszej części programu otrzymalibyśmy komunikat o błędzie gdyż wystąpiłaby próba wywołania niezdefiniowanej funkcji FOR. Zapis (initget ( )) jest równoważny zapisowi (initget 5). Nie dopuszcza on do podania pustego ENTER, liczby zerowej lub liczby ujemnej podczas najbliższego wywołania funkcji entsel, nentsel lub getxxx (za wyjątkiem getstring, getenv i getvar). To tutaj wywołujemy naszą pętlę FOR. Oprócz podania wartości początkowej, końcowej oraz kroku pętli, pierwszym argumentem funkcji jest nazwa zmiennej sterującej pracą pętli. Nazwa zmiennej sterującej pracą pętli musi być poprzedzona apostrofem (tzn. musi być kwotowana). Jeśli o tym zapomnisz, program może dać nieoczekiwane rezultaty. Instrukcja progn grupuje nam instrukcje, które należy wykonać wpętli. Instrukcja grupująca progn musi być także kwotowana. Wypisujemy na ekranie tekstowym liczby spełniające podane wymagania. Qs{zlbe!3 Analizując wygląd ekranu w przykładzie pierwszym, z pewnością zauważyłeś dodatkowe odstępy pomiędzy wartością początkową,końcową oraz krokiem pętli, np: Podaj wartosc poczatkowa petli: 1 wolna_linia Podaj wartosc koncowa petli: 10 Dzieje się tak dlatego, że funkcje typu getxxx muszą być zakończone naciśnięciem klawisza ENTER, i to właśnie powoduje powstanie dodatkowej pustej linii.

37 9/!Qumf!j!lpotusvldkf!tufsvk df 266 W poniższym przykładzie, usuniemy te linie. Dodatkowo, spowodujemy, by wybrane liczby zostały zapisane w jednym rzędzie (a nie w jednej kolumnie, jak w przykładzie pierwszym). A oto i nasz program po modernizacji: *************************************************PROG_027 Wykorzystanie petli FOR - przyklad odszukanie i zaladowanie pliku PROG_025.LSP plik (findfile "prog_025.lsp")) (if plik plik zostal znaleziony (load plik) )progn else - nia znaleziono pliku (alert "Nie znaleziono pliku PROG_025.LSP!!!" "\nwykonywanie programu przerwane." )strcat )alert (exit) )progn )if jesli plik prog_025 zostal znaleziony wykorzystanie petli for (textpage) przejscie na ekran tekstowy (princ "\nprzyklad wykorzystania petli for.") (initget ( )) x1 (getint "\npodaj wartosc poczatkowa petli: ")) (initget ( )) x2 (getint "Podaj wartosc koncowa petli: ")) (initget ( )) x3 (getint "Podaj krok petli: ")) (princ "\nwypisywanie od " (rtos x1 2 0) " do " (rtos x2 2 0) " z krokiem = " (rtos x3 2 0) ".\n" )strcat )princ

38 267 BvupMJTQ!!qsbluzd{oz!lvst Qs{zlbe!4 (for 'i x1 x2 x3 ' (princ i) (princ " ") )progn )for i *************************************************KONIEC Wykonanie powyższego programu możebyć następujące: Command: (load "prog_027.lsp") Przyklad wykorzystania petli for. Podaj wartosc poczatkowa petli: 1 Podaj wartosc koncowa petli: 10 Podaj krok petli: 2 Wypisywanie od 1 do 10 z krokiem = Command: Omówmy teraz wyróżnione linie programu, obrazujące zmiany w stosunku do programu PROG_026: Przy wypisywaniu na ekran tekstu "Podaj wartosc koncowa petli:", został pominięty znak nowej linii, umieszczony na początku łańcucha. Tym samym została usunięta pierwsza wolna linia. Przy wypisywaniu na ekran tekstu "Podaj krok petli:", został pominięty znak nowej linii, umieszczony na początku łańcucha. Tym samym została usunięta druga wolna linia. Zamiast funkcji terpri, powodującej przejście do nowej linii po wypisaniu liczby, używamy instrukcji princ, aby oddzielić od siebie poszczególne liczby, wypisywane w jednym rzędzie. Przykład ten pokazuje, jak za pomocą pętli FOR można tworzyć listę lub wyświetlać jej zawartość. *************************************************PROG_028 Wykorzystanie petli FOR - przyklad odszukanie i zaladowanie pliku PROG_025.LSP plik (findfile "prog_025.lsp"))

39 9/!Qumf!j!lpotusvldkf!tufsvk df 268 (if plik plik zostal znaleziony (load plik) )progn else - nia znaleziono pliku (alert "Nie znaleziono pliku PROG_025.LSP!!!" "\nwykonywanie programu przerwane." )strcat )alert (exit) )progn )if jesli plik prog_025 zostal znaleziony wykorzystanie petli for (textpage) przejscie na ekran tekstowy (princ "\nprzyklad wykorzystania petli for.") (initget ( )) x1 (getint "\npodaj liczbe zmiennych do umieszczenia na liscie: " )getint )setq lista_1 (list)) pobranie zmiennych i umieszczenie ich na liscie lista_1 (terpri) (for 'i 1 x1 1 ' pobranie typu zmiennej (initget "I R S") typ (getkword "\Podaj typ zmiennej numer " (rtos i 2 0) " [I - integer, R - real, S - string]: " )strcat )getkword )setq typ (strcase typ)) pobranie wartosci zmiennej (princ "Podaj wartosc zmiennej numer " (rtos i 2 0) ": "

40 269 BvupMJTQ!!qsbluzd{oz!lvst )strcat )princ (cond ((= typ "I") zmienna (getint))) ((= typ "R") zmienna (getreal))) ((= typ "S") zmienna (getstring T))) )cond umieszczenie zmiennej na liscie lista_1 lista_1 (append lista_1 (list zmienna)) )setq )progn )for i wyswietlenie utworzonej listy (textpage) przejscie na ekran tekstowy (princ "Oto twoja lista wyswietlona funkcja PRINC:\n") (princ lista_1) (getstring T "\nnacisnij ENTER...") (princ "\na oto twoja lista wyswietlona funkcja PRIN1:\n") (prin1 lista_1) (getstring T "\nnacisnij ENTER...") wyswietlenie typu i wartosci poszczegolnych zmiennych (textpage) przejscie na ekran tekstowy (princ "Typy i wartosci zmiennych na liscie LISTA_1:") (terpri) przejscie do nowej linii (for 'i 1 x1 1 ' wyswietlenie numeru zmiennej (princ "\nzmienna numer " (rtos i 2 0) )strcat )princ wyswietlenie typu zmiennej typ (type (nth (- i 1) lista_1))) (cond ((= typ 'INT) typ "integer")) ((= typ 'REAL) typ "real")) ((= typ 'STR) typ "string")) )cond (princ "\ntyp zmiennej = " typ )strcat )princ

Pętle. Dodał Administrator niedziela, 14 marzec :27

Pętle. Dodał Administrator niedziela, 14 marzec :27 Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Wstęp do informatyki- wykład 7

Wstęp do informatyki- wykład 7 1 Wstęp do informatyki- wykład 7 Operatory przypisania, złożone operatory przypisania, Pętla while i do..while Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania.

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nazwa implementacji: Nauka języka Python wyrażenia warunkowe Autor: Piotr Fiorek Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nasz kalkulator umie już liczyć, ale potrafi przeprowadzać

Bardziej szczegółowo

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; } Pętle Pętle (ang. loops), zwane też instrukcjami iteracyjnymi, stanowią podstawę prawie wszystkich algorytmów. Lwia część zadań wykonywanych przez programy komputerowe opiera się w całości lub częściowo

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Liczby losowe i pętla while w języku Python

Liczby losowe i pętla while w języku Python Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak

Bardziej szczegółowo

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; } Pętle Pętle (ang. loops), zwane też instrukcjami iteracyjnymi, stanowią podstawę prawie wszystkich algorytmów. Lwia część zadań wykonywanych przez programy komputerowe opiera się w całości lub częściowo

Bardziej szczegółowo

7. Pętle for. Przykłady

7. Pętle for. Przykłady . Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i

Bardziej szczegółowo

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Pzetestuj działanie pętli while i do...while na poniższym przykładzie: Pzetestuj działanie pętli while i do...while na poniższym przykładzie: Zadania pętla while i do...while: 1. Napisz program, który wczytuje od użytkownika liczbę całkowitą, dopóki podana liczba jest mniejsza

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Lekcja : Tablice + pętle

Lekcja : Tablice + pętle Lekcja : Tablice + pętle Wprowadzenie Oczywiście wiesz już jak dużo można osiągnąć za pomocą tablic oraz jak dużo można osiągnąć za pomocą pętli, jednak tak naprawdę prawdziwe możliwości daje połączenie

Bardziej szczegółowo

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

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

JAVAScript w dokumentach HTML (2)

JAVAScript w dokumentach HTML (2) Informatyka ćw.6 JAVAScript w dokumentach HTML (2) Interakcyjne wprowadzanie danych Jednym ze sposobów jest stosowanie metody prompt dla wbudowanego obiektu window: zmienna= prompt("tekst zachęty, np.

Bardziej szczegółowo

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest Pętle Pętla to pewien fragment kodu, który jest wykonywany wielokrotnie. Wyobraź sobie taką sytuację. Piszesz program do szyfrowania danych. Dane są szyfrowane kolejno bajt po bajcie. Załóżmy, że plik

Bardziej szczegółowo

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest

Bardziej szczegółowo

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76 . p. 1 Algorytmem nazywa się poddający się interpretacji skończony zbiór instrukcji wykonania zadania mającego określony stan końcowy dla każdego zestawu danych wejściowych W algorytmach mogą występować

Bardziej szczegółowo

x 2 = a RÓWNANIA KWADRATOWE 1. Wprowadzenie do równań kwadratowych 2. Proste równania kwadratowe Równanie kwadratowe typu:

x 2 = a RÓWNANIA KWADRATOWE 1. Wprowadzenie do równań kwadratowych 2. Proste równania kwadratowe Równanie kwadratowe typu: RÓWNANIA KWADRATOWE 1. Wprowadzenie do równań kwadratowych Przed rozpoczęciem nauki o równaniach kwadratowych, warto dobrze opanować rozwiązywanie zwykłych równań liniowych. W równaniach liniowych niewiadoma

Bardziej szczegółowo

3. Instrukcje warunkowe

3. Instrukcje warunkowe . Instrukcje warunkowe Przykłady.1. Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran słowo ujemna lub nieujemna, w zależności od tego czy dana liczba jest ujemna czy nie. 1 #include

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2 Pętle wielokrotne wykonywanie ciągu instrukcji. Bardzo często w programowaniu wykorzystuje się wielokrotne powtarzanie określonego ciągu czynności (instrukcji). Rozróżniamy sytuacje, gdy liczba powtórzeń

Bardziej szczegółowo

Programowanie w Turbo Pascal

Programowanie w Turbo Pascal Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji

Bardziej szczegółowo

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy

Bardziej szczegółowo

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda. Nazwa implementacji: Nauka języka C wyrażenia warunkowe if- Autor: Piotr Fiorek Opis implementacji: Poznanie struktury oraz zastosowania wyrażeń warunkowych if- w języku C. W programie realizującym jakiś

Bardziej szczegółowo

Blockly Kodowanie pomoc.

Blockly Kodowanie pomoc. 1 Blockly Kodowanie pomoc. Słowniczek: Zmienna posiada nazwę wywoływaną w programie oraz miejsce na przechowywanie wartości. Instrukcja warunkowa pozwala na wykonanie instrukcji w zależności od warunku

Bardziej szczegółowo

do instrukcja while (wyrażenie);

do instrukcja while (wyrażenie); Instrukcje pętli -ćwiczenia Instrukcja while Pętla while (póki) powoduje powtarzanie zawartej w niej sekwencji instrukcji tak długo, jak długo zaczynające pętlę wyrażenie pozostaje prawdziwe. while ( wyrażenie

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

lekcja 8a Gry komputerowe MasterMind

lekcja 8a Gry komputerowe MasterMind lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych

Bardziej szczegółowo

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117). 2. Zmienne i stałe Przykłady 2.1. Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117). 5 int a = 281; int b = 117; 7 8 cout

Bardziej szczegółowo

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pętle for, while, do... while, foreach Jeszcze o operatorach... Skrócone operatory arytmetyczne przykład x +=

Bardziej szczegółowo

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający

Bardziej szczegółowo

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek Nazwa implementacji: Nauka języka Python pętla for Autor: Piotr Fiorek Opis implementacji: Poznanie innego rodzaju pętli, jaką jest pętla for w języku Python. Składnia pętli for jest następująca: for

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Programowanie - instrukcje sterujące

Programowanie - instrukcje sterujące Instytut Informatyki Uniwersytetu Śląskiego Laborki środowisko NetBeans, tworzenie nowego projektu; okno projekty; główne okno programu; package - budowanie paczek z klas; public class JavaApplication

Bardziej szczegółowo

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą

Bardziej szczegółowo

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch. Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania

Bardziej szczegółowo

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

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1 Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem

Bardziej szczegółowo

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

Zapis algorytmów: schematy blokowe i pseudokod 1

Zapis algorytmów: schematy blokowe i pseudokod 1 Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu

Bardziej szczegółowo

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja Część VIII C++ Przedrostkowa i przyrostkowa inkrementacja i dekrementacja W poprzednim ćwiczeniu operatory inkrementacji i dekrementacji występowały w wersji przyrostkowej. Istnieje inny sposób zapisu

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

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

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni, Baltie Zadanie 1. Budowanie W trybie Budowanie wybuduj domek jak na rysunku. Przedmioty do wybudowania domku weź z banku 0. Zadanie 2. Czarowanie sterowanie i powtarzanie W trybie Czarowanie z pomocą czarodzieja

Bardziej szczegółowo

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Język PHP Język interpretowalny, a nie kompilowany Powstał w celu programowania

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Każde wykonanie bloku instrukcji nazywamy pojedynczym przebiegiem lub iteracją pętli.

Każde wykonanie bloku instrukcji nazywamy pojedynczym przebiegiem lub iteracją pętli. Część XIII C++ Czym jest pętla? Pętla jest blokiem instrukcji, które wykonywane są w kółko (czyli po wykonaniu ostatniej instrukcji z bloku komputer wykonuje ponownie pierwszą instrukcję, później drugą

Bardziej szczegółowo

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Być może jesteś doświadczonym programistą, biegle programujesz w Javie, Kompendium PHP 01 Być może jesteś doświadczonym programistą, biegle programujesz w Javie, C++, Pythonie lub jakimś innym języku programowania, których jak myślę, powstało już tyle, że chyba nie ma osoby,

Bardziej szczegółowo

Umieszczanie kodu. kod skryptu

Umieszczanie kodu. kod skryptu PHP Definicja PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania C/C++, lecz jest bardzo uproszczona

Bardziej szczegółowo

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Cechy C++ Język ogólnego przeznaczenia Można programować obiektowo i strukturalnie Bardzo wysoka wydajność kodu wynikowego

Bardziej szczegółowo

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje Opracował: Zbigniew Rudnicki Powtórka z poprzedniego wykładu 2 1 Dokument, regiony, klawisze: Dokument Mathcada realizuje

Bardziej szczegółowo

Instrukcje sterujące

Instrukcje sterujące Podstawy programowania w C++ Bibliografia: Instrukcje sterujące Nauka programowania dla początkujących; A. Struzińska-Walczak / K. Walczak CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com Opracował:

Bardziej szczegółowo

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Operacje relacji (porównania) A

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Programowanie i techniki algorytmiczne

Programowanie i techniki algorytmiczne Temat 2. Programowanie i techniki algorytmiczne Realizacja podstawy programowej 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych 2) formułuje ścisły opis prostej

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 3 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Instrukcja wielokrotnego wyboru Instrukcja wielokrotnego wyboru switch umożliwia podejmowanie decyzji na podstawie wartości

Bardziej szczegółowo

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym S t r o n a 1 Bożena Ignatowska Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym Wprowadzenie W artykule zostaną omówione zagadnienia związane z wykorzystaniem funkcji tekstowych w arkuszu

Bardziej szczegółowo

Pomorski Czarodziej 2016 Zadania. Kategoria C

Pomorski Czarodziej 2016 Zadania. Kategoria C Pomorski Czarodziej 2016 Zadania. Kategoria C Poniżej znajduje się 5 zadań. Za poprawne rozwiązanie każdego z nich możesz otrzymać 10 punktów. Jeżeli otrzymasz za zadanie maksymalną liczbę punktów, możesz

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji Podstawy programowania Laboratorium Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji Instrukcja warunkowa if Format instrukcji warunkowej Przykład 1. if (warunek) instrukcja albo zestaw

Bardziej szczegółowo

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53: Instrukcje sterujące wer. 11 z drobnymi modyfikacjami! Wojciech Myszka 2017-07-05 10:53:09 +0200 Ala ma kota Część I Prosty przykład Problem 1. Zadanie polega na tym, żeby opracować algorytm który dla

Bardziej szczegółowo

1 Powtórzenie wiadomości

1 Powtórzenie wiadomości 1 Powtórzenie wiadomości Zadanie 1 Napisać program, który w trybie dialogu z użytkownikiem przyjmie liczbę całkowitą, a następnie wyświetli informację czy jest to liczba parzysta czy nieparzysta oraz czy

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux Administracja sieciowymi systemami operacyjnymi III Klasa - Linux SKRYPTY POWŁOKI mgr inż. Tomasz Borowiec SKRYPTY POWŁOKI - PODSTAWY W Linuksie skrypt jest plikiem tekstowym zawierającym polecenia systemowe

Bardziej szczegółowo

Układy VLSI Bramki 1.0

Układy VLSI Bramki 1.0 Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

I. Podstawy języka C powtórka

I. Podstawy języka C powtórka I. Podstawy języka C powtórka Zadanie 1. Utwórz zmienne a = 730 (typu int), b = 106 (typu long long), c = 123.45 (typu double) Wypisz następujące komunikaty: Dane sa liczby: a = 730, b = 106 i c = 123.45.

Bardziej szczegółowo

Kilka prostych programów

Kilka prostych programów Ćwiczenie 1 Kilka prostych programów Ćwiczenie to poświęcone jest tworzeniu krótkich programów, pozwalających na zapoznanie się z takimi elementami programowania jak: definiowanie stałych, deklarowanie

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych 4. Łódź 2018 Suma szeregu harmonicznego - Wpisz kod programu w oknie edycyjnym - Zapisz kod w pliku harmonic.py - Uruchom skrypt (In[1]: run harmonic.py) - Ten program wykorzystuje

Bardziej szczegółowo

Wykorzystanie języka AutoLISP.

Wykorzystanie języka AutoLISP. Wykorzystanie języka AutoLISP. AutoLISP jest językiem programowania podobnie jak Basic, Pascal, C. Różni się tym, że jest zintegrowany z AutoCADem i nie można go używać oddzielnie, AutoLISP liczy w arytmetyce

Bardziej szczegółowo

Wskazówki dotyczące zmiennych, tablic i procedur 1

Wskazówki dotyczące zmiennych, tablic i procedur 1 Wskazówki dotyczące zmiennych, tablic i procedur 1 Spis treści 1. Tworzenie zmiennych i tablic 1 2. Procedury i zmienne, przekazywanie zmiennych do procedur 5 3. Zakończenie działania procedury 9 1. Tworzenie

Bardziej szczegółowo

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); } KURS C/C++ WYKŁAD 2 Instrukcje iteracyjne Instrukcja while Składnia tej instrukcji jest następująca: while (wyrażenie) instrukcja W pętli while wykonanie instrukcji powtarza się tak długo, jak długo wartość

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Informatyka I: Instrukcja 4.2

Informatyka I: Instrukcja 4.2 Informatyka I: Instrukcja 4.2 1 Wskaźniki i referencje - bezboleśnie Nauczyliśmy się do tej pory, że funkcje w języku C mogą zwracać wartość. Co jednak, gdybyśmy chcieli napisać funkcję, która rozwiąże

Bardziej szczegółowo

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst. Schematy blokowe I Jeżeli po schematach blokowych będzie używany język C, to należy używać operatorów: '&&', ' ', '!=', '%' natomiast jeśli Ruby to 'and', 'or', '%', '!='. 1. Dostępne bloki: a) początek:

Bardziej szczegółowo

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych;

Bardziej szczegółowo

Warsztaty dla nauczycieli

Warsztaty dla nauczycieli WPROWADZENIE Wyprowadzanie danych: Wyprowadzanie na ekran komunikatów i wyników umożliwia instrukcja wyjścia funkcja print(). Argumentami funkcji (podanymi w nawiasach) mogą być teksty, wyrażenia arytmetyczne

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1)

JAVAScript w dokumentach HTML (1) JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript mogą być zagnieżdżane w dokumentach HTML. Instrukcje JavaScript

Bardziej szczegółowo

Programowanie strukturalne i obiektowe. Funkcje

Programowanie strukturalne i obiektowe. Funkcje Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy

Bardziej szczegółowo

Część XV C++ Ćwiczenie 1

Część XV C++ Ćwiczenie 1 Część XV C++ Instrukcja break przerywa działanie tylko tej pętli, w ciele której została wywołana. Jeśli więc wywołamy break w pętli zagnieżdżonej w innej pętli, zostanie przerwane działanie tylko tej

Bardziej szczegółowo

AutoLISP w środowisku VLISP

AutoLISP w środowisku VLISP Spis treści 1. Wprowadzenie... 11 1.1 Przyjęte konwencje leksykalne... 11 1.2 Pobranie plików z Internetu... 12 1.3 Wstęp... 13 1.4 Auto LISP jako język programowania... 15 1.4.1 Typ INT liczba całkowita...

Bardziej szczegółowo

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład z Technologii Informacyjnych. Piotr Mika Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły

Bardziej szczegółowo

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach: Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby przygotować skrypt, należy:

Bardziej szczegółowo

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania Wykład: 4 Instrukcje sterujące, operatory 1 programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe ; instrukcja_krok ) tresc_petli ; instrukcja_ini

Bardziej szczegółowo