1 / 86

Podstawy Informatyki – Ćwiczenia – Język C Zajęcia 1: Organizacja

Podstawy Informatyki – Ćwiczenia – Język C Zajęcia 1: Organizacja. Michał Karbowańczyk mak@zsk.p.lodz.pl http://zskl.p.lodz.pl/~mak Pokój nr 14 (parter) Poniedziałek 10 – 11 Czwartek 16 – 17 Sobota 14 – 15 w weekendy zjazdowe Organizacja zajęć Dyscyplina, obecność Sposób zaliczenia.

Download Presentation

Podstawy Informatyki – Ćwiczenia – Język C Zajęcia 1: Organizacja

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 1: Organizacja • Michał Karbowańczykmak@zsk.p.lodz.plhttp://zskl.p.lodz.pl/~makPokój nr 14 (parter)Poniedziałek 10 – 11Czwartek 16 – 17Sobota 14 – 15 w weekendy zjazdowe • Organizacja zajęć • Dyscyplina, obecność • Sposób zaliczenia

  2. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 1: Organizacja • Przedmiot zajęć:Podstawy programowania w języku C • Dlaczego język C • Literatura drukowana – olbrzymi wybórZalecane nazwiska: Kernighan, Ritchie • Kursy online • Narzędzia: środowisko Dev-CPPhttp://bloodshed.net

  3. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 1: Program zajęć • Rzut oka na program zajęć1: Organizacja2, 3: Struktura programu, włączanie bibliotek, funkcja main. Komentarze. Pojęcie zmiennej. Identyfikator. Podstawowe typy danych – int, float, char, bool. 4, 5: Deklaracja zmiennej i stałej. Operator podstawienia. Konwersje niejawne i ich skutki. Konwersje jawne. Operatory arytmetyczne.6, 7: Instrukcja warunkowa if / if … else. Operatory porównania i logiczne. Typowe błędy. Wyrażenie warunkowe.

  4. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 1: Program zajęć • Rzut oka na program zajęć – c.d. :8, 9: Pętla for. Tablice jednowymiarowe. Napisy. 10, 11: Pętle while i do…while. Bloki programu. Zakres i widoczność zmiennej. 12: Tablice dwuwymiarowe.13, 14: KOLOKWIUM, na którym wszyscy osiągają znakomite wyniki. 15: Omówienie wyników kolokwium

  5. KONIEC

  6. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 2: Pierwszy program #include <iostream.h> //Włączenie biblioteki iostream /* To jest program, który nic nie robi, ale jest potrzebny na ćwiczeniach PI. Autor: Michał Karbowańczyk, SZSK */ int main (int argc, char *argv[])// Tych parametrów nie będziemy używali { cout << "Hello world!" << endl; //wypisanie powitania return 0; //wartość przekazywana do systemu } • Proszę zwrócić uwagę na komentarze! • Włączanie bibliotek – dyrektywa #include • Wartości zwracane do systemu

  7. PRZERWA

  8. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 3: Pojęcie zmiennej • Pojęcie zmiennej-> zmienna – obszar pamięci przechowujący informacje-> typ – sposób interpretacji zawartości pamięci-> identyfikator – nazwa umożliwiająca odwołanie się do zmiennej

  9. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 3: Identyfikator • Składnia identyfikatora-> duże i małe litery, cyfry, znak podkreślnika-> litery wyłącznie z alfabetu angielskiego-> nie może zaczynać się od cyfry • -> nie może być słowem kluczowym-> duże i małe litery SĄ ROZRÓŻNIANE! Alfa jest innym identyfikatorem niż alfa -> identyfikator musi być unikatowy-> identyfikator musi mieć sens

  10. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 3: Identyfikator • Proszę wskazać ewentualne błędy w poniższych identyfikatorach:a) Let’sgo b) hagirac) 15alfa d) returne) wartośćElementu f) wartosc_elementug) _underlined_identifier h) starry*identifierh) checkout_the_letter j) value(test)

  11. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 3: Typy proste - liczbowe • Typ całkowity int-> wyraża liczby całkowite-> zakres : - (2^15) … 2^15-1 (- 32768 … 32767)-> odmiana unsigned: 0 … 2^16-1 (0 … 65535)-> odmiana long: -(2^31) … 2^31-1 (ok. -2 mld … 2 mld)-> odmiana unsigned long: 0 … 2^32-1 (ok. 4 mld) • Typ rzeczywisty float-> wyraża liczby rzeczywiste-> zakres: [+/-] 3.4e-38 … 3.4e38 • Typ rzeczywisty double-> wyraża liczby rzeczywiste-> zakres: [+/-] 1.7e-308 … 1.7e308-> odmiana long: [+/-] 3.4e-4932 … 1.1e4932

  12. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 3: Typy proste • Typ znakowy char-> wyraża znaki, ale także liczby-> wartości liczbowe 0 … 127-> znaki ujęte w apostrofach, np. ‘A’-> wartości liczbowe odpowiadają kodom ASCII znaków-> ‘A’ – 65 ‘a’ – 97 ‘0’ - 48 • Typ logiczny bool-> wyraża wartości logiczne true i false.

  13. KONIEC

  14. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 4: Deklaracja zmiennej • Najprostsza postać deklaracji zmiennej:typidentyfikator; • Przykład:int indeks;char tmp; • Tak zadeklarowana zmienna ma nieznaną z góry wartość. Prowadzi to często do trudnych do zdiagnozowania błędów w czasie wykonywania programu. Deklarując zmienną należy więc nadać jej wartość (zainicjalizować ją) float cisnieniePowietrza=0.0; • Zmienne deklarować można w każdym miejscu programu, jednak zaleca się grupowanie deklaracji na początku każdego bloku. • Każda deklaracja zmiennej powinna być opatrzona komentarzem!

  15. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 4: Deklaracja zmiennej i stałej • Można zadeklarować więcej niż jedną zmienną tego samego typu używając jednej deklaracji.int a, b, c;char d, e, f=‘a’; // tylko zmienna f jest zainicjalizowana!float x=0.0, y=1.0, z=x; • Deklaracja stałej wyróżniana jest słowem const. Inicjalizacja stałej jest obowiązkowa.const int wspolczynnikAlfa=0;const float beta=1.0, gamma=-1.2e-3; • Po co stosujemy stałe? -> zwiększają czytelność programu -> ułatwiają modyfikacje programu

  16. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 4: Operator podstawienia • Operator = jest nazywany operatorem przypisania lub podstawienia. Powoduje on przeniesienie wartości argumentu znajdującej się po jego prawej stronie (prawego operandu) do argumentu po jego lewej stronie (lewego operandu). • Kolejność działania operatora podstawienia: 1) oblicz wartość prawego operandu 2) dokonaj konwersji wartości, jeśli to potrzebne i możliwe 3) przepisz wartość do lewego operandu. • Przykład: a=2+3; 1) oblicz wartość wyrażenia 2 + 3 ( -> 5) 2) podstaw tą wartość do zmiennej a.

  17. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 4: Operator podstawienia • Wyrażenie z użyciem operatora podstawienia ma swoją wartość i można jej użyć w innym wyrażeniu, np.int a=0, b=0;a=2+(b=3+a);Jakie wartości mają teraz zmienne a i b ? • W szczególności możliwa jest deklaracja:float x, y, z=x=y=0.0;Wszystkie zmienne zostają zainicjowane wartością 0.0 • Lewy operand operatora przypisania musi być L-wartością.NIE są L-wartościami m. in. literały i wyrażenia arytmetyczne.

  18. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 4: Deklaracja zmiennej - ćwiczenie • Znajdź ewentualne błędy w poniższych deklaracjach:a) int a=0; b) int x; c) const int z;d) float a=0.0, b=1.0, c=a=3.0; e) int a_s;f) f: float; g) var t: integer;h) const char escape=17;

  19. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 4: Konwersje niejawne i jawne • Jeżeli prawy operand ma inny typ niż lewy operand, operator przypisania próbuje automatycznie „przełożyć” wartość prawego operandu na typ lewego operandu, wykonuje więc konwersję. • Konwersję wykonywaną przez operator przypisania nazywamy niejawną, gdyż nie jest ona w żaden sposób zaznaczona w tekście programu. • Nie powinno się dopuszczać do występowania konwersji niejawnych. Jeśli zachodzi taka potrzeba, należy użyć konwersji jawnej w postaci: (typ_pożądany) wartość • Przykład:int a=0;float b=1.0;a=b; //konwersja niejawna - unikać!a=(int)b; //konwersja jawna

  20. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 4: Dopuszczalne konwersje niejawne • Dopuszcza się pozostawienie konwersji niejawnych, jeśli z góry wiadomo, że konwersja nie spowoduje zmiany wartości wyrażenia, np: • Konwersja z typu całkowitego na typ całkowity o większym zakresieint i; long int li; unsigned int ui;Konwersje niedozwolone: i=li; i=ui; ui=i; ui=li;Konwersje dozwolone: li=i; li=ui; • Konwersja z typu rzeczywistego na typ rzeczywisty o większej precyzjifloat f; double d; long double ld;Konwersje niedozwolone: f=d; f=ld; d=ld;Konwersje dozwolone: ld=f; ld=d; d=f; • Konwersje między typem znakowym a całkowitym

  21. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 4: Dopuszczalne konwersje jawne • Często potrzebne są konwersje pomiędzy typami całkowitymi i rzeczywistymi. Konwersje takie powinny być zapisywane jawnie. • Konwersja liczb rzeczywistych na całkowite daje w wyniku część całkowitą liczby rzeczywistej (żargonowo „obcięcie w dół”), np. (int)5.3 daje w wyniku 5. • Konwersja liczb całkowitych na rzeczywiste może być obarczona błędem wynikającym ze skończonej reprezentacji liczb rzeczywistych! • Konwersja nie jest L-wartością! Nieprawidłowy jest np. zapis:int a;(float)a=3.3;

  22. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 4: Konwersje typu logicznego • Typ logiczny nie powinien być poddany konwersji zarówno jawnej, jak i niejawnej. Niestety, często programiści nie stosują się do tego zalecenia. • Konwersja liczby na typ logiczny daje w wyniku false, jeśli liczba ma wartość 0 lub 0.0; w przeciwnym wypadku daje w wyniku true. • Konwersja wartości false na wartość liczbową daje w wyniku 0 lub 0.0; konwersja wartości true daje w wyniku na ogół wartość 1 lub 1.0

  23. PRZERWA

  24. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 5: Operatory arytmetyczne • + dodawanie - odejmowanie * mnożenie / dzielenie (lewego operandu przez prawy)% reszta z dzielenia (lewego operandu przez prawy) • Kolejność operatorów: zgodnie z regułami matematyki. • Operator % działa tylko na liczbach całkowitych.Operator / użyty na liczbach całkowitych daje wynik całkowity i jest to część całkowita dzielenia lewego operandu przez prawy.

  25. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 5: Operatory arytmetyczne a konwersje • Jeśli oba operandy są tego samego typu, wynik operatora arytmetycznego jest także tego typu. • Jeśli jeden operand jest typu rzeczywistego a drugi całkowitego, ten drugi jest poddany konwersji na typ rzeczywisty i wynik jest typu rzeczywistego. Ta konwersja powinna zostać zapisana jawnie. • Jeśli jeden operand jest typu rzeczywistego o większej precyzji a drugi rzeczywistego o mniejszej precyzji, ten drugi jest poddany konwersji na typ o większej precyzji i wynik jest tegoż typu. Ta konwersja może pozostać niejawna. • Jeśli jeden operand jest typu całkowitego o większym zakresie a drugi całkowitego o mniejszym zakresie, ten drugi jest poddany konwersji na typ o większym zakresie i wynik jest tegoż typu. Ta konwersja może pozostać niejawna.

  26. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 5: Operatory arytmetyczne - ćwiczenie • Obliczyć wartość wyrażeń. Jeśli w wyrażeniu powinna znajdować się konwersja jawna, wskazać to miejsce.int a=1, b=2, c=3;float x=1.0, y=2, z=3.0e0;a) b * c + a;b) b * (c + a);c) (b * c) + a;d) c/2;e) c/2.0;f) c%b;g) c%y;h) a+c/b-a;i) (a+c)/(b-a);j) (a+c)/(float)(b-a);

  27. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 5: Inne operatory arytmetyczne • Operatory z jednoczesnym podstawieniem+= -= *= /= %=Przykład: a+=b; jest równoznaczne z a=a+b; • Operatory inkrementacji i dekrementacji (tylko dla liczb całkowitych!)++ zwiększenie o 1 -- zmniejszenie o 1UWAGA! Ma znaczenie z której strony operandu znajduje się operator ++ i --:int a=0, b=1, c=0, d=1;a=b++; //a jest równe 1, b jest równe 2c=++d; //c jest równe 2, d jest równe 2 • Ćwiczenie: obliczyć wyniki wyrażeń (podać wartość zmiennych):int a=1, b=2;float x=1.0, y=2.0;a) a+=b; b) a/=b--; c)a/=x++; d) a*=++b;e) x*=(float)a++; f) y-=y-1.0

  28. KONIEC

  29. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 6: Instrukcja warunkowa if • Instrukcja warunkowa if pozwala na wykonanie lub nie pewnego fragmentu programu w zależności od spełnienia lub nie pewnego warunku. • Najprostszy wariant instrukcji warunkowej:if (warunek) instrukcja; • warunek jest dowolnym wyrażeniem logicznym. • instrukcja jest wykonywanawtedy i tylko wtedy, gdy warunek ma wartość logiczną true.

  30. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 6: Operatory porównania. • Warunki najczęściej konstruuje się używając operatorów porównania: ==, !=, <, >, <=, >= • Operatory porównania == (równe) i != (różne) działają na każdym typie, przy czym po obu stronach operatora powinna być wartość tego samego typu. • Operatory < (mniejsze), > (większe), <= (mniejsze lub równe) i >= (większe lub równe) działają na wartościach liczbowych. • Operatory porównania dokonują konwersji tak samo jak operatory arytmetyczne, i powinno się unikać tych konwersji zgodnie z przedstawionymi poprzednio zasadami.

  31. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 6: Operatory porównania – typowe błędy • Istnienie automatycznych konwersji niejawnych umożliwia powstawanie bardzo popularnego w języku C i zarazem trudnego do wychwycenia błędu. • int a = 0;Wyrażenie:a == 2ma wartość logiczną falseWyrażenie:a = 2ma wartość logiczną true (dlaczego?) • Błąd powstał na skutek nie wpisanego znaku =.Jak się przed nim chronić?2 == a jest równoważne a == 22 = a jest błędem (dlaczego?)

  32. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 6: Operatory porównania • Operatory porównania wykonywane są PO operatorach arytmetycznych, w związku z tym:4 < 2 + 3ma wartość logiczną true; najpierw policzona jest wartość wyrażenia po prawej stronie, a później dokonywane porównanie. • W bardziej skomplikowanych przypadkach nalezy posługiwać się nawiasami.

  33. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 6: Instrukcja warunkowa if - ćwiczenie • Dane są zmienne a i b typu całkowitego. Napisać fragment programu, który wypisze na ekranie słowo "tak", jeśli zmienna a jest podzielna przez b.

  34. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 6: Instrukcja warunkowa if • Składnia instrukcji warunkowej przewiduje wystąpienie pojedynczej instrukcji po wyrażeniu warunkowym. • W zapisieif (warunek)instrukcja1;instrukcja2;tylko wykonanie instrukcji1 jest warunkowane przez warunek. instrukcja2 jest wykonywana bezwarunkowo!

  35. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 6: Instrukcja warunkowa if • Objęcie większej liczby instrukcji warunkiem jest możliwe dzięki zastosowaniu instrukcji blokowej jak w poniższym przykładzie:if (warunek){instrukcja1;instrukcja2;} • Częstym błędem jest postawienie średnika tuż po wyrażeniu warunkowym:if (warunek);instrukcja;Wbrew naszym intencjom instrukcja jest wykonywana bezwarunkowo!

  36. PRZERWA

  37. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 7: Operatory logiczne • Operatory logiczne służą do budowania złożonych wyrażeń logicznych. • Operator negacji (przeczenia): !Operator iloczynu logicznego (logiczne 'i'): &&Operator sumy logicznej (logiczne 'lub'):|| • Operatory logiczne wykonywane są po operatorach porównania, zatem ma sens wyrażenie: a == 7 && b >= 9W bardziej skomplikowanych przypadkach nalezy stosować nawiasy. • Przykład: obliczyć wartość logiczną wyrażeń:((2 > 3) || (!(3.0 != 3.0e0))) && (true == false)(4 * 2 + 1 < 4 * 3) || ((9 – 2 + 2 * 5 < 67) && (1e3 != 1e2))

  38. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 7: Instrukcja warunkowa if .. else • Klauzula else pozwala na wykonanie instrukcji wtedy i tylko wtedy, gdy warunek nie jest spełniony. • Przykład: if (0 == a % 2) cout << "Liczba jest parzysta";else cout << "Liczba jest nieparzysta"; • Zastosowanie w tym przypadku klauzuli else zamiast powtarzania instrukcji if zwiększa czytelność programu, a zmniejsza ryzyko popełnienia błędu.

  39. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 7: Instrukcja warunkowa if .. else • Połączenie klauzuli else z następną instrukcją if umożliwia skonstruowanie wielu wariantów, z których wykonany zostanie tylko jeden. • Przykład:if (a > 0) cout << "liczba dodatnia";else if (a < 0) cout << "liczba ujemna";else cout << "zero";

  40. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 7: Instrukcja warunkowa - ćwiczenie • Zmienna g jest typu int i opisuje aktualną godzinę. Napisać ciąg instrukcji wypisujący na ekranie działanie człowieka, który je śniadanie o 8, obiad o 14 i kolację o 20, między śniadaniem a godziną 16 pracuje, między 17 a 22 odpoczywa, w pozostałe godziny śpi.

  41. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 7: Instrukcja warunkowa if • Instrukcje warunkowe można zagnieżdżać wewnatrz ich samych. Należy stosować tę technikę, aby jak najbardziej uprościć wyrażenia warunkowe. • Przykład:if (a==0 && b!=0 && c<1) instrukcja1;if (a==0 && b==0 && c<1) instrukcje2; • Oto równoważny fragment programu:if (a==0 && c<1) if (b!=0) instrukcje1;else instrukcje2;Efekt: 3 wyrażenia porównania zamiast 6 i tyleż mniej możliwości popełnienia błędu.

  42. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 7: Instrukcja warunkowa - ćwiczenie • Na pewnym wydziale studia zaoczne pracują według następującego schematu:Tydzień nieparzysty: sobota rano, niedziela po południuTydzień parzysty: sobota po południu, niedziela wcale Mając do dyspozycji zmienne: t oznaczającą numer tygodnia i d oznaczającą numer dnia, trzeba napisać ciąg instrukcji, który wypisze na ekranie na jaka porę należy pójść danego dnia, jeśli w ogóle trzeba.

  43. KONIEC

  44. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 8: Instrukcja pętli for • Pętla for umożliwia wielokrotne wykonywanie instrukcji (fragmentu programu). • Ogólna postać pętli for jest następująca:for(wyrazeniePocz; warunekKont; wyrazenieKroku) instrukcja; • Przebieg wykonania petli jest następujący:1. Wykonaj wyrażenie początkowe;2. Jeśli warunek kontynuacji ma wartość false, opuść pętlę;3. Wykonaj instrukcję;4. Wykonaj wyrażenie kroku;5. Przejdź do 2.

  45. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 8: Instrukcja pętli for • Przykład: Jakie liczby ukażą się na ekranie w wyniku wykonania poniższych instrukcji? • int i=13;...for (i=1; i<=5; i++) cout << i; • Programiści często stosują deklaracje zmiennej w wyrażeniu początkowym:for (float x=0.0, step=0.1; x <= 10.0; x += step) cout << (x*x);

  46. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 8: Instrukcja pętli for • Wyrażenie początkowe może być puste:int i=-5;...for ( ; i<=5; i++) cout << i; • Warunek kontynuacji może być pusty i jest wtedy traktowany jak wartość true. Prowadzi to do nieskończonego zapętlenia:for (i=1; ; i++) //petla nieskonczona cout << i;for (i=1; true; i++) //jak wyzej cout << i;

  47. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 8: Instrukcja pętli for • Podobnie jak w przypadku instrukcji if, aby wykonać wielokrotnie więcej niż jedną instrukcję, należy posłużyć się instrukcją blokową:int k;for (k=1; k <= 10; k++){ cout << "k=" << k << endl; cout << "1/k=" << 1/k << endl;} • Częstym błędem jest umieszczenie średnika po instrukcji for:char z;for (z='a'; z<='z'; z++); cout << z;

  48. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 8: Instrukcja pętli for • Wyrażenie kroku może być puste:int i;for (i=1; i<=5; ){ i++; cout << i;}int i;for (i=1; i<=5; ){ cout << i; i++;} • Należy zwrócić uwagę na kolejność operacji!

  49. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 8: Pętla for – typowe błędy • Warunek kontynuacji powinien być niezmienny przez cały czas wykonywania pętli, a zmiany parametrów pętli powinny odbywać się tylko w wyrażeniu kroku. • int i, j=0;for (i=0; i<=5; i++) cout << (i+=i/(i-4*i*0.5));for (i=10; i>j; i--) cout << (j = (i > j ? i - 1 : i + 1));

  50. Podstawy Informatyki – Ćwiczenia – Język CZajęcia 8: Pętla for – ćwiczenie • Niech M i N będa pewnymi wartościami całkowitymi. Napisać fragment programu, który obliczy iloczyn wszystkich liczb całkowitych od M do N włącznie.

More Related