Document

advertisement
Wstęp do informatyki
Wykład 2
Programowanie
imperatywne i język C
[email protected]
http://www.cs.put.poznan.pl/jnawrocki/wsb-wdi/
Copyright, 2005 © Jerzy R. Nawrocki
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
Ciąg rozkazów
Fortran
Algol
Pascal
C
C++
Java
J.Nawrocki, Programowanie imperatywne i C
Deklaratywne
Opis problemu
Prolog
ILOG
Plan wykładu
•
•
•
•
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
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
Akc.c 2. Kompilacja Akc.exe
programu
np.
w pliku
tcc Akc.c
Dane wejściowe 3. Wykonanie Wyniki Bitwa pod Akcjum
obliczeń przez
Akc.exe
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
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
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
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 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
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 + Y; Zapisz w SUMA sumę X+Y
...
}
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
Zmienna jako pamięć
void main() {
...
X = 18;
Y = 2;
SUMA = X + Y;
...
}
void main() {
int X, Y, SUMA;
X = 18;
Y = 2;
SUMA = X + Y;
return;
}
Deklaracje zmiennych:
typ nazwy_oddzielone_przecinkami ;
J.Nawrocki, Programowanie imperatywne i C
Drukowanie wartości zmiennej
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
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
void main() {
int X, Y, SUMA;
X = 18;
Y = 2;
SUMA = X + Y;
printf("%d \n", SUMA);
return;
}
20
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
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
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 ", &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, &Y);
SUMA = X + Y;
printf("%d + %d = %d \n", X, Y, SUMA);
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
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
Start
R1
SS+1
R2 > 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 imperatywne i C
Drukuj(Y)
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
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);
X<Y
}else {
Tak
printf("min(%d, %d)= %d \n", X, Y, Y);
Drukuj(X) Drukuj(Y)
}
return;
}
J.Nawrocki, Programowanie imperatywne i C
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
Zadanie
Napisać program wyświetlający wartość bezwzględną
podanej liczby całkowitej.
3
3
0
0
-3
3
J.Nawrocki, Programowanie imperatywne i C
Schemat rozwiązania
Czytaj X
X<0
Tak
X –X
Drukuj X
J.Nawrocki, Programowanie imperatywne i C
Nie
Uproszczona instrukcja warunkowa
if ( warunek ) {
instrukcje
}
if ( pożar ) {
dzwonPoStrazPozarna;
}
J.Nawrocki, Programowanie imperatywne i C
Uproszczona instrukcja warunkowa
Czytaj X
X<0
Tak
X –X
Drukuj X
Nie
void main() {
int X;
scanf("%d", &X);
if ( X < 0 ) {
X = -X;
}
printf("%d \n", X);
return;
}
J.Nawrocki, Programowanie imperatywne i C
Uproszczona instrukcja warunkowa
-3
X
-3
void main() {
int X;
scanf("%d", &X);
if ( X < 0 ) {
X = -X;
}
printf("%d \n", X);
return;
}
J.Nawrocki, Programowanie imperatywne i C
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
Zadanie
Napisać program obliczający liczbę cyfr dziesiętnych
podanej liczby naturalnej (0, 1, 2, ..).
0
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
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
Analiza zadania
0, .. 9,
10, .. 99,
100, .. 999,
1 cyf.
X<10
C=1
G=10
2 cyf.
X<100
3 cyfry
X<1000
X >= G
Tak
C= C + 1
G= G * 10
C= Cyfr
G= Granica
X >= G
Tak
C= C + 1
G= G * 10
J.Nawrocki, Programowanie imperatywne i C
1 000, .. 9 999, 10 000, ..
4 cyfry
X<10000
X >= G
Tak
C= C + 1
G= G * 10
X >= G
Przykładowe obliczenie
Jak to
sprawdzić
?
9
Czytaj X
C1
G  10
X >= G
Tak
C C+1
G  G * 10
Drukuj C
J.Nawrocki, Programowanie imperatywne i C
X
Nie
C
G
Instrukcja powtarzania
Czytaj X
C1
G  10
while ( warunek ) {
instrukcje;
}
X >= G
Tak
C C+1
G  G * 10
Nie
while ( X >= G ) {
C= C + 1;
G= G * 10;
}
Drukuj C
J.Nawrocki, Programowanie imperatywne i C
Program w C
Czytaj X
C1
G  10
X >= G
Tak
C C+1
G  G * 10
Drukuj C
Nie
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;
}
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
Download