Programowanie imperatywne i język C (c) Jerzy Nawrocki Wykł. 2 Wstęp do informatyki Wykład 2 Programowanie imperatywne i język C Jerzy.Nawrocki@put.poznan.pl http://www.cs.put.poznan.pl/jnawrocki/wsb-wdi/ Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki
Pierwszy Imperator Rzymu Imperatywność łac. imperare rozkazywać Oktawian August 63 p.n.e – 14 n.e. Pierwszy Imperator Rzymu J.Nawrocki, Programowanie imperatywne i C
Klasy języków programowania Języki programowania Imperatywne Deklaratywne Ciąg rozkazów Jak ? Opis problemu Co ? Fortran Algol Pascal C C++ Java Prolog ILOG J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C (c) Jerzy Nawrocki Plan wykładu Wykł. 2 Programy z jedną instrukcją Dwie instrukcje i \n Koncepcja zmiennej Drukowanie wartości zmiennej Czytanie liczb Instrukcja warunkowa Uproszczona instrukcja warunkowa Instrukcja powtarzania ‘while’. J.Nawrocki, Programowanie imperatywne i C Wstęp do informatyki
Pisz „Bitwa pod Akcjum”. Plan wykładu Pisz „Bitwa pod Akcjum”. Programy z jedną instrukcją Dwie instrukcje i \n Koncepcja zmiennej Drukowanie wartości zmiennej Czytanie liczb Instrukcja warunkowa Uproszczona instrukcja warunkowa Instrukcja powtarzania ‘while’ J.Nawrocki, Programowanie imperatywne i C
Program z jedną instrukcją Drukowany tekst void main() { printf("Bitwa pod Akcjum\n"); return; } Bitwa pod Akcjum J.Nawrocki, Programowanie imperatywne i C
Kompilacja programu i wykonanie obliczeń 1. Zapisanie programu w pliku 2. Kompilacja np. tcc Akc.c Akc.c Akc.exe 3. Wykonanie obliczeń przez Akc.exe Dane wejściowe Bitwa pod Akcjum Wyniki J.Nawrocki, Programowanie imperatywne i C
Program z dwiema instrukcjami void main() { printf("Bitwa pod Akcjum.\n"); printf("Zwyciestwo.\n"); return; } Bitwa pod Akcjum. Zwyciestwo. J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Znak nowej linii \n void main() { printf(„Bitwa pod \n Akcjum."); printf(„Zwyciestwo.\n"); return; } Bitwa pod Akcjum. Zwyciestwo. J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Znak nowej linii \n void main() { printf("Bitwa pod Akcjum \n"); printf("Zwyciestwo.\n"); return; } void main() { printf("Bitwa pod Akcjum. \nZwyciestwo.\n"); return; } Bitwa pod Akcjum. Zwyciestwo. J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Zmienna jako pamięć Cel: Pamiętanie wartości (np. liczby) Dwie operacje do wyboru: Zapisanie jakieś wartości. Odczytanie wartości. 121 Zmienna Zapisz 5 Zapisz 121 Odczytaj Jest 121 J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Zmienna jako pamięć W programie można używać wielu zmiennych. Dlatego trzeba je nazywać. 18 Zmienna X 2 Zmienna Y 33 Zmienna SUMA Zapisz w X 18 Zapisz w Y 2 Zapisz w SUMA sumę X+Y J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Zmienna jako pamięć 18 Zmienna X void main() { ... X = 18; Y = 2; SUMA = X + Y; } Język C 2 Zmienna Y 20 Zmienna SUMA Zapisz w X 18 Zapisz w Y 2 Zapisz w SUMA sumę X+Y J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Typy zmiennych Komputer inaczej przetwarza Liczby całkowite (.., -2, -1, 0, 1, 2, ..) Liczby rzeczywiste (-1.5, 0.5, 2.3, ..) Pojedyncze znaki ('a', 'b', 'z', 'A', 'Z', '+', '-', '*', '$', '0', '9', ..) Ciągi znaków ("on", "rok 1956", ..) Zmienna: typ + nazwa Przykładowe typy zmiennych w języku C: int – liczby całkowite (ang. integer) float – liczby rzeczywiste (ang. floating point) char – znaki (ang. character) J.Nawrocki, Programowanie imperatywne i C
Prosty program ze zmiennymi Deklaracje zmiennych void main() { ... return; } Instrukcje Zmienna: typ + nazwa Deklaracje zmiennych: typ nazwy_oddzielone_przecinkami ; J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Zmienna jako pamięć Kompletny program void main() { int X, Y, SUMA; X = 18; Y = 2; SUMA = X + Y; return; } void main() { ... X = 18; Y = 2; SUMA = X + Y; } Deklaracje zmiennych: typ nazwy_oddzielone_przecinkami ; J.Nawrocki, Programowanie imperatywne i C
Drukowanie wartości zmiennej Kompletny program Nie widać wyników! void main() { int X, Y, SUMA; X = 18; Y = 2; SUMA = X + Y; return; } J.Nawrocki, Programowanie imperatywne i C
Drukowanie wartości zmiennej void main() { int X, Y, SUMA; X = 18; Y = 2; SUMA = X + Y; printf("%d \n", SUMA); return; } Kompletny program Ogólniejsza postać printf: printf(" format ", zmienne); %d oznacza int printf("X = %d \n", X); X = 18 printf("Y= %d; X= %d \n", Y, X); Y= 2; X= 18 20 J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Zadanie Napisać program wyświetlający sumę dowolnych dwóch liczb całkowitych. 18 2 18 + 2 = 20 0 5 0 + 5 = 5 -3 1 -3 + 1 = -2 J.Nawrocki, Programowanie imperatywne i C
Jak wczytać wartości X,Y? Czytanie liczb Jak wczytać wartości X,Y? void main() { int X, Y, SUMA; X = 18; Y = 2; SUMA = X + Y; printf("%d + %d = %d \n", X, Y, SUMA); return; } 18 + 2 = 20 J.Nawrocki, Programowanie imperatywne i C
scanf(" format ", adresy_zmiennych); Czytanie liczb Jak wczytać wartości X,Y? scanf(" format ", adresy_zmiennych); scanf(" %d ", &X ); void main() { int X; scanf("%d", &X); printf("%d \n", X ); return; } J.Nawrocki, Programowanie imperatywne i C
scanf(" format ", adresy_zmiennych); Czytanie liczb Jak wczytać wartości X,Y? scanf(" format ", adresy_zmiennych); scanf(" %d ", &X ); scanf(" %d %d ", &X, &Y ); & - bardzo ważny! J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Czytanie liczb 18 2 void main() { int X, Y, SUMA; scanf("%d %d", &X, &Y); SUMA = X + Y; printf("%d + %d = %d \n", X, Y, SUMA); return; } 18 + 2 = 20 J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Zadanie Napisać program wyświetlający minimum z dwóch liczb całkowitych. 18 2 min(18, 2)= 2 0 5 min(0, 5)= 0 -3 1 min(-3, 1)= -3 5 5 min(5, 5)= 5 J.Nawrocki, Programowanie imperatywne i C
Język schematów blokowych (c) Jerzy Nawrocki Język schematów blokowych Wykł. 2 Start R2 > 0 Tak Nie R 1 S S + 1 Stop J.Nawrocki, Programowanie imperatywne i C Wstęp do informatyki
J.Nawrocki, Programowanie imperatywne i C Schemat rozwiązania Start Czytaj X,Y X < Y Nie Drukuj(Y) Tak Drukuj(X) Stop J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Instrukcja warunkowa if ( warunek ) { instrukcje_1 } else { instrukcje_2 if ( ładna_pogoda ) { o_19tej_idziemy_na_spacer; } else { o_19tej_idziemy_do_kina; J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Instrukcja warunkowa void main() { int X, Y; scanf("%d %d", &X, &Y); if ( X < Y ) { printf("min(%d, %d)= %d \n", X, Y, X); }else { printf("min(%d, %d)= %d \n", X, Y, Y); } return; Czytaj X,Y Nie X < Y Tak Drukuj(X) Drukuj(Y) J.Nawrocki, Programowanie imperatywne i C
Jeśli Marek Antoniusz nie ustąpi, to wypowiemy wojnę Egiptowi. Plan wykładu Jeśli Marek Antoniusz nie ustąpi, to wypowiemy wojnę Egiptowi. Programy z jedną instrukcją Dwie instrukcje i \n Koncepcja zmiennej Drukowanie wartości zmiennej Czytanie liczb Instrukcja warunkowa Uproszczona instrukcja warunkowa Instrukcja powtarzania ‘while’ J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Zadanie Napisać program wyświetlający wartość bezwzględną podanej liczby całkowitej. 3 3 -3 3 J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Schemat rozwiązania Czytaj X Nie X < 0 Tak X – X Drukuj X J.Nawrocki, Programowanie imperatywne i C
Uproszczona instrukcja warunkowa if ( warunek ) { instrukcje } if ( pożar ) { dzwonPoStrazPozarna; } J.Nawrocki, Programowanie imperatywne i C
Uproszczona instrukcja warunkowa void main() { int X; scanf("%d", &X); if ( X < 0 ) { X = -X; } printf("%d \n", X); return; Czytaj X Nie X < 0 Tak X – X Drukuj X J.Nawrocki, Programowanie imperatywne i C
Uproszczona instrukcja warunkowa -3 void main() { int X; scanf("%d", &X); if ( X < 0 ) { X = -X; } printf("%d \n", X); return; X -3 J.Nawrocki, Programowanie imperatywne i C
Jak długo Marek Antoniusz jest z Kleopatrą, Plan wykładu Jak długo Marek Antoniusz jest z Kleopatrą, będziemy walczyć. Programy z jedną instrukcją Dwie instrukcje i \n Koncepcja zmiennej Drukowanie wartości zmiennej Czytanie liczb Instrukcja warunkowa Uproszczona instrukcja warunkowa Instrukcja powtarzania ‘while’ J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Zadanie Napisać program obliczający liczbę cyfr dziesiętnych podanej liczby naturalnej (0, 1, 2, ..). 0 ma cyfr: 1 9 9 ma cyfr: 1 10 10 ma cyfr: 2 99 99 ma cyfr: 2 100 100 ma cyfr: 3 J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Analiza zadania Napisać program obliczający liczbę cyfr dziesiętnych podanej liczby naturalnej (0, 1, 2, ..). 0, .. 9, 10, .. 99, 100, .. 999, 1 000, .. 9 999, 10 000, .. J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Analiza zadania 0, .. 9, 10, .. 99, 100, .. 999, 1 000, .. 9 999, 10 000, .. 1 cyf. X<10 2 cyf. X<100 3 cyfry X<1000 4 cyfry X<10000 C=1 G=10 X >= G C= C + 1 G= G * 10 Tak X >= G C= C + 1 G= G * 10 Tak X >= G C= Cyfr G= Granica C= C + 1 G= G * 10 Tak X >= G J.Nawrocki, Programowanie imperatywne i C
Przykładowe obliczenie 9 Czytaj X C 1 G 10 Jak to sprawdzić? X C G Nie X >= G Tak C C + 1 G G * 10 Drukuj C J.Nawrocki, Programowanie imperatywne i C
Instrukcja powtarzania Czytaj X C 1 G 10 while ( warunek ) { instrukcje; } Nie X >= G while ( X >= G ) { C= C + 1; G= G * 10; } Tak C C + 1 G G * 10 Drukuj C J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Program w C Czytaj X C 1 G 10 void main() { int X, C, G; scanf("%d", X); C= 1; G= 10; while (X >= G) { C= C + 1; G= G * 10; } printf("%d ma cyfr: %d \n", X, C); return; Nie X >= G Tak C C + 1 G G * 10 Drukuj C J.Nawrocki, Programowanie imperatywne i C
J.Nawrocki, Programowanie imperatywne i C Podsumowanie Podsumujmy. Drukowanie i czytanie liczb w C. Instrukcje warunkowe ‘if’. Instrukcja powtarzania ‘while’. Język schematów blokowych jest wygodnym narzędziem opisu algorytmów. J.Nawrocki, Programowanie imperatywne i C