Stuck in the loop. Sterowanie. Marcin Makowski. 29 października Zak lad Chemii Teoretycznej UJ

Podobne dokumenty
Instrukcje sterujące. Programowanie Proceduralne 1

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

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Języki i paradygmaty programowania

Podstawy i języki programowania

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Podstawy programowania w języku C i C++

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

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

Podstawy programowania w języku C

Odczyt danych z klawiatury Operatory w Javie

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

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

dr inż. Jarosław Forenc

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

Podstawy Programowania C++

Instrukcje sterujące

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Język C zajęcia nr 5

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Program w C. wer. 10 z drobnymi modyfikacjami! Wojciech Myszka :28:

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

ROZDZIAŁ 2. Operatory

Język C, instrukcje sterujące (laboratorium)

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne Wyrażenie warunkowe operator selekcji Instrukcja switch

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

1 Podstawy c++ w pigułce.

Część 4 życie programu

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Wprowadzenie do programowania w języku C

Program w C. wer. 12 z drobnymi modyfikacjami! Wojciech Myszka :59:

Część XV C++ Ćwiczenie 1

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

Programowanie - instrukcje sterujące

Słowa kluczowe i nazwy

I - Microsoft Visual Studio C++

Programowanie strukturalne i obiektowe

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Materiały pomocnicze do wykładu 3 - Elementy języka Java

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

Język C część 2. Podejmowanie decyzji w programie. if else. switch

Programowanie obiektowe

Termin Egzaminu (Język C): !!! >> CZWARTEK, 7 LUTEGO << GODZ

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

dr inż. Jarosław Forenc

Bardzo szybkie podsumowanie: wykład 1 wer. 6 z drobnymi modyfikacjami!

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

1 Podstawy c++ w pigułce.

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Programowanie komputerowe. Zajęcia 3

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

if (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; a > b - a większe od b if (warunek) instrukcja1; a <= b - a mniejsze lub równe b

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Michał Bielecki, KNI 'BIOS'

2 Przygotował: mgr inż. Maciej Lasota

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

KURS C/C++ WYKŁAD 1. Pierwszy program

Wstęp do programowania

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

( wykł. dr Marek Piasecki )

Zmienne, stałe i operatory

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Konstrukcje warunkowe Pętle

Wstęp do programowania 1

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

Języki programowania - podstawy

for (i=1; i<=10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

12. Skrypty w Linux - funkcje, instrukcje sterujące i obliczenia arytmetyczne

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

APLIKACJE INTERNETOWE 5 PHP W P R O W A D Z E N I E D O P R O G R A M O W A N I A

Java Podstawy. Michał Bereta

Język C zajęcia nr 11. Funkcje

Proste programy w C++ zadania

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Informatyka 1

System operacyjny Linux

4. Funkcje. Przykłady

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Warunki logiczne instrukcja if

Transkrypt:

Sterowanie Zak lad Chemii Teoretycznej UJ 29 października 2007

1 2 3 4

arytmetyczne +, -, *, / % (dzielenie modulo) operatory sa lewostronnie l aczne priorytety: (*, /, %), (+, -) nie istnieje operator pot egowania

i relacje logiczne I relacji >, >=, <, <= == (równy),!= (różny od) logiczne! (negacja) && (koniunkcja) (alternatywa)

i relacje logiczne II Priorytety:!, operatory arytmetyczne, (>, >=, <, <=), (==,!=), &&, Koniec obliczania wartości wyrażenia logicznego nast epuje natychmiast po określeniu jego wyniku (?) i f ( i < s i z e && j!= 3) Numeryczna wartościa prawdziwego wyrażenia jest 1, fa lszywego 0 Operator negacji zamienia argument różny od zera na 0, argument równy zeru na 1 (?) i n t i ; i f (! i ) // oznacza to samo, co i f ( i == 0)

przypisania i n t i, j = 7 ; i = j ; // zwykle przypisanie, wartosc i s t a j e s i e rowna wartosci j i += j ; // i = i + j (+= to t e z o p e r a t o r p r z y p i s a n i a ) i *= j ; i = j ; i /= j ; i %= j ; Wyrażenie przypisania ma wartość: typem jest typ lewego argumentu wartościa jest przypisana wartość i n t c ; while ( ( c = getchar ( ) )!= EOF) // typ : int, wartosc : znak z wejsc ia

inkrementacji i dekrementacji i n t i ; double x ; i ++; // z w i e k s z a w a r t o s c z m i e n n e j i o 1 x ; // z m n i e j s z a w a r t o s c z m i e n n e j x o 1 Forma przedrostkowa i przyrostkowa ++i (zwi eksza wartość zmiennej i przed jej użyciem) i++ (zwi eksza wartość zmiennej i po jej użyciu) i n t i = 2, j = 2, k, l ; k = ++i ; // k b e d z i e rowne 3 l = j ++; // l b e d z i e rowne 2 Operator mozna zastosować tylko do zmiennej: i n t i = 2, j = 1 ; i ++; // poprawne ( i * j )++; // niepoprawne

if... Najprostszy model to zachowanie typu jeśli a jest prawda to wykonaj b... i f ( w y r a z e n i e ) i n s t r u k c j a ; // wykonana j e s l i w y r a z e n i e j e s t prawdziwe /* d a l s z e i n s t r u k c j e */ i f ( w y r a z e n i e ) { /* b l o k wykonany, j e s l i w y r a z e n i e j e s t prawdziwe */ /* d a l s z e i n s t r u k c j e */

if... else...... zdefiniujmy dodatkowo specyficzne zachowanie w innym przypadku... i f ( w y r a z e n i e ) { /* b l o k wykonany, j e s l i w y r a z e n i e j e s t prawdziwe */ e l s e { /* b l o k wykonany, j e s l i w y r a z e n i e j e s t n i e p r a w d z i w e */ /* d a l s z e i n s t r u k c j e */ i f ( a == b ) p r i n t f ( a j e s t rowne b\n ) ; e l s e p r i n t f ( a n i e j e s t rowne b\n ) ;

if... else... else if...... i skomplikujmy sytuacj e bardziej... i f ( w y r a z e n i e ) { /* b l o k wykonany, j e s l i w y r a z e n i e j e s t prawdziwe */ e l s e i f ( w y r a z e n i e 1 ) { /* blok wykonany, j e s l i wyrazenie j e s t nieprawdziwe i wyrazenie 1 j e s t prawdziwe */ e l s e i f ( w y r a z e n i e 2 ) { /* b l o k wykonany, j e s l i w y r a z e n i e i w y r a z e n i e 1 sa n i e p r a w d z i w e a w y r a z e n i e 2 j e s t pra e l s e { /* b l o k wykonany w p o z o s t a l y c h przypadkach */ /* d a l s z e i n s t r u k c j e */ i f ( a > 0) b = a ; e l s e i f ( a == 0) b = 1 ; e l s e b = 1 / a ;

Niejednoznaczne else Gdy w serii zagnieżdżonych instrukcji if nie wszystkie posiadaja cześć else pojawia sie niejednoznaczność przypisania pary if-else. Definicja jezyka rozstrzyga to przypisujac else do najbliższej instrukcji if nie zawierajacej cześci else. i f ( a > 0) i f ( a > b ) c = a ; e l s e // z w i a z a n y z i f ( a > b ) c = b ; i f ( a > 0) { i f ( a > b ) c = a ; e l s e // z w i a z a n y z i f ( a > 0) c = b ;

Wyrażenia warunkowe wyr1? wyr2 : wyr3 Obliczane jest wyr1. Jesli jego wartość jest różna od 0 (wyr1 jest prawdziwe), to obliczane jest wyr2 i jego wartość staje sie wartościa ca lego wyrażenia warunkowego. W przeciwnym wypadku obliczane jest wyr3 i to jego wartość staje sie wartościa ca lego wyrażenia warunkowego. i f ( a!= 0) b = 1 / a ; e l s e b = 0 ; b = ( a!= 0)? 1 / a : 0 ; // d o k l a d n i e rownowazne powyzszemu // a = ( 1)ˆb a = ( b & 1)? 1 : 1 ;

switch... Decyzje moge podejmować wyliczajac wszystkie możliwości... s w i t c h ( w y r a z e n i e ) { case wyr1 : /* punkt w e j s c i a, j e s l i w y r a z e n i e == wyr1, wyr1 musi byc wyrazeniem s t a l y m */ case wyr2 : /* punkt w e j s c i a, j e s l i w y r a z e n i e == wyr2, wyr2 musi byc wyrazeniem s t a l y m */......... default : /* punkt we js cia dla pozostalych przypadkach */ s w i t c h ( d z i e c i ) { case 0 : break ; /* brak d z i e c i c z y l i brak u l g i */ case 1 : podatek = podatek ( podatek / 100 * 2 ) ; /* u l g a 2% */ break ; case 2 : podatek = podatek ( podatek / 100 * 5 ) ; /* u l g a 5%*/ break ; default : podatek = podatek ( podatek / 100 * 1 0 ) ; /* u l g a 10% */ break ;

switch + enum switch i enum czesto ida w parze... switch ( k i e r u n e k ) { case W GORE: y++; break ; case W DOL: y ; break ; case W PRAWO: x++; break ; case W LEWO: x ; break ; // n i e k o n i e c z n y

while... w h i l e ( warunek ) { /* i n s t r u k c j e wykonywane w p e t l i j a k d l u g o warunek j e s t prawdziwy */ /* d a l s z e i n s t r u k c j e */ Program wypisujacy kwadraty kolejnych liczb od 1 do 10 móg lby wygladać tak... #i n c l u d e <s t d i o. h> i n t main ( ) { i n t a = 1 ; w h i l e ( a < 11) { /* d o p o k i a j e s t m n i e j s z e od 11 */ p r i n t f ( %d\n, a*a ) ; /* wypisujemy kwadrat a */ ++a ; /* zwiekszamy a o j e d e n */ r e t u r n 0 ;

do... while do { /* i n s t r u k c j e do wykonania w p e t l i */ w h i l e ( warunek ) ; /* d a l s z e i n s t r u k c j e */ Tym razem wypisujemy używajac tegoż typu petli... #i n c l u d e <s t d i o. h> i n t main ( ) { i n t a = 1 ; do { p r i n t f ( %d\n, a * a ) ; ++a ; w h i l e ( a < 1 1 ) ; r e t u r n 0 ;

for... f o r ( w y r a z e n i e 1 ; w y r a z e n i e 2 ; w y r a z e n i e 3 ) { /* i n s t r u k c j e do wykonania w p e t l i */ /* d a l s z e i n s t r u k c j e */ wyrazenie1: inicjalizacje, wykonywane przed wejściem do petli wyrazenie2: warunek, którego prawdziwość jest sprawdzana przed każda iteracja wyrazenie3: wykonywane po każdej iteracji #i n c l u d e <s t d i o. h> i n t main ( ) { i n t a ; f o r ( a = 1 ; a < 11; ++a ) p r i n t f ( %d\n, a * a ) ; r e t u r n 0 ;

Operator przecinkowy i wyrażenie przecinkowe Para wyrażeń oddzielona przecinkami. Obliczane od lewej do prawej strony. Typem i wartościa wyrażenia jest typ i wartość prawego argumentu. #i n c l u d e <s t d i o. h> i n t main ( ) { i n t i, j, n = 2 0 ; f o r ( i = 0, j = n ; i < j ; i ++, j ) p r i n t f ( %d %d\n, i, j ) ; r e t u r n 0 ;

break i continue Instrukcja break powoduje zakończenie najbardziej zagnieżdżonej p etli lub instrukcji switch, w której wyst epuje. i n t a ; f o r ( a = 1 ; a!= 9 ; ++a ) { i f ( a == 5) break ; p r i n t f ( %d\n, a ) ; Instrukcja continue powoduje zakończenie bieżacej iteracji petli. f o r ( i = 0 ; i < 100 ; ++i ) { p r i n t f ( Poczatek \n ) ; i f ( i > 40) c o n t i n u e ; p r i n t f ( Koniec \n ) ;

Etykiety i goto etykieta ma taka postać jak nazwa zmiennej i jest zakonczona dwukropkiem, jej zasiegiem jest ca la funkcja do miejsc wskazanych przez etykiety można bezwarunkowo przenosić sterowanie (instrukcja skoku goto) e t y k i e t a : /* i n s t r u k c j e */ goto e t y k i e t a ; Dlaczego używanie goto jest równie z le jak podk ladanie nogi staruszkom? Odpowiedź: http://www.acm.org/classics/oct95/ i n t i, j ; f o r ( i = 0 ; i < 10; ++i ) f o r ( j = i ; j < i + 10; ++j ) i f ( i j % 3 == 2) goto koniec ; koniec : /* d a l s z a c z e s c programu */