Wprowadzenie do informatyki Wykad 4 Programowanie imperatywne i

  • Slides: 36
Download presentation
Wprowadzenie do informatyki Wykład 4 Programowanie imperatywne i język C Jerzy. Nawrocki@put. poznan. pl

Wprowadzenie do informatyki Wykład 4 Programowanie imperatywne i język C Jerzy. Nawrocki@put. poznan. pl http: //www. cs. put. poznan. pl/jnawrocki/wsb-wdi/ J. Nawrocki, Programowanie Copyright, 2004 © Jerzy R. Nawrockiimperatywne i C

Klasy języków programowania Języki programowania Imperatywne Ciąg rozkazów Fortran Algol Pascal C C++ Java

Klasy języków programowania Języki programowania Imperatywne Ciąg rozkazów Fortran Algol Pascal C C++ Java J. Nawrocki, Programowanie imperatywne i C Deklaratywne Opis problemu Prolog ILOG

Historia języka C 1966: Kompilator języka BC 1969: Język B 1972: Język C Ken

Historia języka C 1966: Kompilator języka BC 1969: Język B 1972: Język C Ken Thompson, UNIX B. Kernighan, D. Ritchie, The C Programming Langua Lex, YACC, AWK Stroustrap, C++, 1983 J. Nawrocki, Programowanie imperatywne i C

Plan wykładu • • Programy z jedną instrukcją Dwie instrukcje i n Koncepcja zmiennej

Plan wykładu • • Programy z jedną instrukcją Dwie instrukcje i n Koncepcja zmiennej Drukowanie wartości zmiennej Czytanie liczb Instrukcja warunkowa Instrukcja powtarzania Problem stopu J. Nawrocki, Programowanie imperatywne i C

Program z jedną instrukcją Instrukcja drukowani a void main() { printf("Fly by Lotn"); return;

Program z jedną instrukcją Instrukcja drukowani a void main() { printf("Fly by Lotn"); return; } J. Nawrocki, Programowanie imperatywne i C

Program z jedną instrukcją Drukowany tekst void main() { printf("Fly by Lotn"); return; }

Program z jedną instrukcją Drukowany tekst void main() { printf("Fly by Lotn"); return; } Fly by Lot J. Nawrocki, Programowanie imperatywne i C

Kompilacja programu i wykonanie obliczeń 1. Zapisanie 2. Kompilacja Fly. ex Fly. programu np.

Kompilacja programu i wykonanie obliczeń 1. Zapisanie 2. Kompilacja Fly. ex Fly. programu np. c e w pliku tcc Fly. c Dane wejściowe 3. Wykonanie Wyni obliczeń przezki Fly. exe J. Nawrocki, Programowanie imperatywne i C Fly by Lot

Program z dwiema instrukcjami void main() { printf("Historia Poznanian"); printf("warta jest poznania. n"); return;

Program z dwiema instrukcjami void main() { printf("Historia Poznanian"); printf("warta jest poznania. n"); return; } Historia Poznania warta jest poznania. J. Nawrocki, Programowanie imperatywne i C

Znak nowej linii n void main() { printf("Historia Poznania n"); printf("warta jest poznania. n");

Znak nowej linii n void main() { printf("Historia Poznania n"); printf("warta jest poznania. n"); void main() { return; printf("Historia Poznania nwarta jest } poznania. n"); return; } Historia Poznania warta jest poznania. J. Nawrocki, Programowanie imperatywne i C

Zmienna jako pamięć Cel: Pamiętanie wartości (np. liczby) Dwie operacje do wyboru: • Zapisanie

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

Zmienna jako pamięć W programie można używać wielu zmiennych Dlatego trzeba je nazywać. 18

Zmienna jako pamięć W programie można używać wielu zmiennych Dlatego trzeba je nazywać. 18 Zmienna X 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 Ukryty odczyt

Zmienna jako pamięć 18 Zmienna X 2 Zmienna Y 20 Zmienna SUMA void main()

Zmienna jako pamięć 18 Zmienna X 2 Zmienna Y 20 Zmienna SUMA void main() {. . . Zapisz w X 18 X = 18; Zapisz w Y 2 Y = 2; SUMA = X Zapisz w SUMA sumę X+Y + Y; . . . } J. Nawrocki, Programowanie imperatywne i C

Typy zmiennych Komputer inaczej przetwarza • Liczby całkowite (. . , -2, -1, 0,

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', '+', '-', '*', '$', • 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 Deklarac void main() { je. . . zmienny. . .

Prosty program ze zmiennymi Deklarac void main() { je. . . zmienny. . . ch return; Instrukcj } e Zmienna: typ + nazwa Deklaracje zmiennych: typ nazwy_oddzielone_przecinka J. Nawrocki, Programowanie imperatywne i C

Zmienna jako pamięć void main() {. . . int X, Y, X = 18;

Zmienna jako pamięć void main() {. . . int X, Y, X = 18; SUMA; Y = 2; X = 18; SUMA = X Y = 2; + Y; SUMA = X +. . . Y; } return; Deklaracje zmiennych: } typ nazwy_oddzielone_przecinka J. Nawrocki, Programowanie imperatywne i C

Drukowanie wartości zmiennej Ogólniejsza postać printf: printf(" format ", zmienne); %d oznacza int printf("X

Drukowanie wartości zmiennej Ogólniejsza postać printf: printf(" format ", zmienne); %d oznacza int printf("X = %d n", X ); J. Nawrocki, Programowanie imperatywne i C

Drukowanie wartości zmiennej Ogólniejsza postać printf: printf(" format ", zmienne); %d oznacza int void

Drukowanie wartości zmiennej Ogólniejsza postać printf: printf(" format ", zmienne); %d oznacza int void main() { int X, Y, SUMA; X = 18; Y = 2; SUMA = X + Y; printf("X = %d n", X); printf("%d n", SUM X = 18 return; } printf("Y= %d; X= %d n", Y, X); 20 Y= 2; X= 18 J. Nawrocki, Programowanie imperatywne i C

Zadanie Napisać program wyświetlający sumę dowolnych dwóch liczb całkowitych. 18 2 18 + 2

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

Czytanie liczb Jak wczytać wartości X, Y? void main() { int X, Y, SUMA;

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, S return; } 18 + 2 = 20 J. Nawrocki, Programowanie imperatywne i C

Czytanie liczb Jak wczytać wartości X, Y? scanf(" format ", adresy_zmiennych); scanf(" %d ",

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

Czytanie liczb Jak wczytać wartości X, Y? scanf(" format ", adresy_zmiennych); scanf(" %d ",

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

Czytanie liczb 18 2 void main() { int X, Y, SUMA; scanf("%d %d", &X,

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, S return; } 18 + 2 = 20 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

Zadanie Napisać program wyświetlający minimum z dwóch liczb całkowitych. 18 2 min(18, 2)= 2 0 5 min(0, 5)= 5 -3 1 min(-3, 1)= -3 5 5 min(5, 5)= 5 J. Nawrocki, Programowanie imperatywne i C

Język schematów blokowych Start R 1 S S+1 R 2 > 0 Tak J.

Język schematów blokowych Start R 1 S S+1 R 2 > 0 Tak J. Nawrocki, Programowanie imperatywne i C Nie Stop

Schemat rozwiązania Start Czytaj X, Y X<Y Nie Tak Drukuj(X) Stop J. Nawrocki, Programowanie

Schemat rozwiązania Start Czytaj X, Y X<Y Nie Tak Drukuj(X) Stop J. Nawrocki, Programowanie imperatywne i C Drukuj(Y)

Instrukcja warunkowa if ( warunek ) { instrukcje_1 } else { instrukcje_2 } if

Instrukcja warunkowa if ( warunek ) { instrukcje_1 } else { instrukcje_2 } if ( ładna_pogoda ) { o_19 tej_idziemy_na_sp acer; } else { o_19 tej_idziemy_do_kin a; J. Nawrocki, Programowanie imperatywne i C }

Instrukcja warunkowa Czytaj X, Y X<Y Nie Tak Drukuj(X) Drukuj(Y) void main() { int

Instrukcja warunkowa Czytaj X, Y X<Y Nie Tak Drukuj(X) Drukuj(Y) void main() { int X, Y; scanf("%d %d", &X, &Y); if ( X < Y ) { printf("min(%d, %d)= %d n", X, Y } else { } return; } min(0, 5)= 0 J. Nawrocki, Programowanie imperatywne i C

Instrukcja warunkowa Czytaj X, Y X<Y Nie Tak Drukuj(X) Drukuj(Y) void main() { int

Instrukcja warunkowa Czytaj X, Y X<Y Nie Tak Drukuj(X) Drukuj(Y) void main() { int X, Y; scanf("%d %d", &X, &Y); if ( X < Y ) { printf("min(%d, %d)= %d n", X, Y } else { } return; } min(0, 5)= 0 J. Nawrocki, Programowanie imperatywne i C

Instrukcja warunkowa void main() { int X, Y; scanf("%d %d", &X, &Y); Czytaj X,

Instrukcja warunkowa void main() { int X, Y; scanf("%d %d", &X, &Y); Czytaj X, Y if ( X < Y ) { Nie printf("min(%d, %d)= %d n", X, Y X<Y } Tak else { Drukuj(X) Drukuj(Y) printf("min(%d, %d)= %d n", X, } return; } J. Nawrocki, Programowanie imperatywne i C

Instrukcja warunkowa 0 5 void main() { int X, Y; scanf("%d %d", &X, &Y);

Instrukcja warunkowa 0 5 void main() { int X, Y; scanf("%d %d", &X, &Y); if ( X < Y ) { printf("min(%d, %d)= %d n", X, } else { printf("min(%d, %d)= %d n", X, Y } return; } min(0, 5)= 0 J. Nawrocki, Programowanie imperatywne i C

Liczba automorficzna Jak obliczyć rzad(n) ? rząd(n) = 10 liczba_cyfr(n) rząd(1)=. . = rząd(9)=10

Liczba automorficzna Jak obliczyć rzad(n) ? rząd(n) = 10 liczba_cyfr(n) rząd(1)=. . = rząd(9)=10 rząd(10)=. . = rząd(99)=100 rząd(100)=. . = rząd(999)=1000 rząd(n) = 10, 1000, . . rząd(n) > n J. Nawrocki, Programowanie imperatywne i C

Liczba automorficzna We n 25 Jak to sprawdzi ć? Wyj rz rz 10 rz

Liczba automorficzna We n 25 Jak to sprawdzi ć? Wyj rz rz 10 rz <= n Nie Tak rz * 10 J. Nawrocki, Programowanie imperatywne i C Wynik rz

Problem stopu Dany jest podprogram X. Czy ten podprogram skończy obliczenia w skończonym czasie?

Problem stopu Dany jest podprogram X. Czy ten podprogram skończy obliczenia w skończonym czasie? Zatrzyma. Sie – Podprogram „wyrocznia”. X – Podprogram nieprzewidywalny. J. Nawrocki, Programowanie imperatywne i C

Podprogram nieprzewidywalny Wniosek: Wniosek Problem stopu jest nierozstrzygalny. poczatek X Zatrzyma. Sie(X) Nie Tak

Podprogram nieprzewidywalny Wniosek: Wniosek Problem stopu jest nierozstrzygalny. poczatek X Zatrzyma. Sie(X) Nie Tak koniec X J. Nawrocki, Programowanie imperatywne i C

Podsumowanie Wreszcie! • Drukowanie i czytanie liczb całkowitych. • Instrukcje warunkowe i powtarzania. •

Podsumowanie Wreszcie! • Drukowanie i czytanie liczb całkowitych. • Instrukcje warunkowe i powtarzania. • Język schematów blokowych jest wygodnym narzędziem opisu algorytmów. • Nie wszystko można obliczyć. J. Nawrocki, Programowanie imperatywne i C

Ocena wykładu 1. Wrażenie ogólne? (1 - 6) 2. Zbyt wolno czy zbyt szybko?

Ocena wykładu 1. Wrażenie ogólne? (1 - 6) 2. Zbyt wolno czy zbyt szybko? 3. Czy dowiedziałeś się czegoś ważnego? 4. Co poprawić i jak? J. Nawrocki, Programowanie imperatywne i C