Jerzy Nawrocki, Wprowadzenie do informatyki



Podobne dokumenty
Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Wstęp do Programowania, laboratorium 02

Wstęp do programowania

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

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

Język ludzki kod maszynowy

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Podstawy programowania C. dr. Krystyna Łapin

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Podstawy Kompilatorów

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

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

2 Przygotował: mgr inż. Maciej Lasota

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Ilość cyfr liczby naturalnej

Programowanie w Turbo Pascal

1. Wprowadzenie do C/C++

Praktyka Programowania

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Języki i metody programowania. Omówienie języków C, C++ i Java

1. Wprowadzenie do C/C++

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Język programowania PASCAL

Algorytm. a programowanie -

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

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Jerzy Nawrocki, Wprowadzenie do informatyki

Pliki. Informacje ogólne. Obsługa plików w języku C

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Zmienne, stałe i operatory

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

IX. Wskaźniki.(3 godz.)

Podstawy Programowania

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

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

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

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

Programowanie w językach wysokiego poziomu

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Podstawy programowania funkcjonalnego

Funkcja (podprogram) void

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Podstawy programowania w języku C

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Wskaźniki. Programowanie Proceduralne 1

Powtórka algorytmów. Wprowadzenie do języka Java.

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

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

Proces tworzenia programu:

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Definicje. Algorytm to:

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wstęp do programowania

Deklaracje. W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

1. WSTĘP. Dr inż. Robert Wójcik, p. 313, C-3, tel

Algorytmy. Programowanie Proceduralne 1

Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Wstęp do informatyki- wykład 11 Funkcje

Pliki. Operacje na plikach w Pascalu

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Języki programowania zasady ich tworzenia

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Proste algorytmy w języku C

Tablice, funkcje - wprowadzenie

Podstawy programowania

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Technologie informacyjne - wykład 12 -

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Algorytmy od problemu do wyniku

Schematy blokowe. Algorytmy Marek Pudełko

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

PROGRAMOWANIE IMPERATYWNE JĘZYK C

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Pytania sprawdzające wiedzę z programowania C++

Podstawy Programowania Algorytmy i programowanie

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Podstawy programowania skrót z wykładów:

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

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

Transkrypt:

Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Programowanie imperatywne i język C Zaprezentować paradygmat programowania imperatywnego na przykładzie języka C. Programowanie imperatywne (2) Imperatywność Klasy języków programowania Języki programowania łac. imperare rozkazywać Oktawian August 63 p.n.e 14 n.e. Pierwszy Imperator Rzymu Programowanie imperatywne (3) Imperatywne Ciąg rozkazów Fortran Algol Pascal C C++ Java Deklaratywne Opis problemu Prolog ILOG Programowanie imperatywne (4) Historia języka C Pisz Bitwa pod Plan wykładu Akcjum. 1966: Kompilator języka BCPL 1969: Język B 1972: Język C Ken Thompson, UNIX B.Kernighan, D.Ritchie, The C Programming Language. Lex, YACC, AWK Stroustrup, C++, 1983 Programowanie imperatywne (5) Koncepcja Instrukcja Programowanie imperatywne (6) Programowanie imperatywne i język C 1

Jerzy Nawrocki, Program z instrukcją drukowania Kompilacja programu i wykonanie obliczeń Start #include <stdio.h> printf ("Bitwa pod Akcjum\n"); 1. Zapisanie Akc.c programu w pliku 2. Kompilacja np. tcc Akc.c Akc.exe... Stop Bitwa pod Akcjum writeln ('Bitwa pod Akcjum') Programowanie imperatywne (7) Dane wejściowe 3. Wykonanie obliczeń przez Akc.exe Wyniki Bitwa pod Akcjum Programowanie imperatywne (8) Plan wykładu Zapamiętaj sobie 31. Koncepcja Instrukcja Programowanie imperatywne (9) 121 Zapisz 5 Zapisz 121 Odczytaj Jest 121 Zmienna Cel: Pamiętanie wartości (np. liczby) Dwie operacje do wyboru: Zapisanie jakieś wartości. Odczytanie wartości. Programowanie imperatywne (10) W programie można używać wielu zmiennych. Dlatego trzeba je nazywać. 11 22 33 Zmienna X Zmienna Y Zmienna SUMA W programie można używać wielu zmiennych. Dlatego trzeba je nazywać. 18 2 20 Zmienna X Zmienna Y Zmienna SUMA Zapisz w X 18 Zapisz w Y 2 Zapisz w SUMA sumę X+Y Ukryty odczyt Programowanie imperatywne (11) Programowanie imperatywne (12) Programowanie imperatywne i język C 2

Jerzy Nawrocki, 18 2 20 Zmienna X Zmienna Y Zmienna SUMA Zapisz w X 18 Zapisz w Y 2 Zapisz w SUMA sumę X+Y Programowanie imperatywne (13) X := 18; Y := 2; SUMA := X + Y; 18 2 20 Zmienna X Zmienna Y Zmienna SUMA Zapisz w X 18 Zapisz w Y 2 Zapisz w SUMA sumę X+Y Programowanie imperatywne (14) 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) integer real char Deklaracje zmiennych Instrukcje Zmienna: typ + nazwa Prosty program ze zmiennymi Deklaracje zmiennych: typ nazwy_oddzielone_przecinkami ; Programowanie imperatywne (15) Programowanie imperatywne (16) int X, Y, SUMA; int X, Y, SUMA; var X, Y, SUMA: integer; X := 18; Y := 2; SUMA := X + Y; Deklaracje zmiennych: typ nazwy_oddzielone_przecinkami ; Programowanie imperatywne (17) Deklaracje zmiennych: nazwy_oddzielone_przecinkami : typ; Programowanie imperatywne (18) Programowanie imperatywne i język C 3

Jerzy Nawrocki, Plan wykładu Pisz co zapamiętałeś. Koncepcja Instrukcja Programowanie imperatywne (19) widać wyników! Drukowanie wartości int X, Y, SUMA; Programowanie imperatywne (20) Ogólniejsza postać printf: printf(" format ", zmienne); %d oznacza int printf("x = %d \n", X); X = 18 Drukowanie wartości Drukowanie wartości var X, Y, SUMA: integer; X := 18; Y := 2; SUMA := X + Y; writeln(suma); 20 Programowanie imperatywne (21) Programowanie imperatywne (22) Czytaj, co pisze Plan wykładu Livia Drusilla Koncepcja Instrukcja Programowanie imperatywne (23) Zadanie Napisać program wyświetlający sumę dowolnych dwóch liczb całkowitych. 18 2 0 5-3 1 18 + 2 = 20 0 + 5 = 5-3 + 1 = -2 Programowanie imperatywne (24) Programowanie imperatywne i język C 4

Jerzy Nawrocki, Jak wczytać wartości X,Y? Czytanie liczb int X, Y, SUMA; printf("%d + %d = %d \n", X, Y, SUMA); 18 + 2 = 20 Jak wczytać wartości X,Y? Czytanie liczb scanf(" format ", adresy_zmiennych); scanf(" %d ", &X ); int X; printf("%d \n", X ); Programowanie imperatywne (25) Programowanie imperatywne (26) Czytanie liczb Czytanie liczb 0 5 int X, Y, SUMA; printf("%d + %d = %d \n", X, Y, SUMA); int X, Y, SUMA; scanf("%d %d", &X, &Y); printf("%d + %d = %d \n", X, Y, SUMA); 0 + 5 = 5 Programowanie imperatywne (27) Programowanie imperatywne (28) 0 5 Czytanie liczb Jeśli idzie > 1 legion, to Plan wystaw wykładu 2; w przeciwnym razie wystaw 1. var X, Y, SUMA: integer; read(x, Y); SUMA := X + Y; writeln(x, ' + ', Y, ' = ', SUMA); 0 + 5 = 5 Koncepcja Instrukcja Programowanie imperatywne (29) Programowanie imperatywne (30) Programowanie imperatywne i język C 5

Jerzy Nawrocki, Napisać program wyświetlający minimum z dwóch liczb całkowitych. 18 2-3 1 min(18, 2)= 2 min(-3, 1)= -3 5 5 min(5, 5)= 5 Zadanie Schemat rozwiązania Start Czytaj X,Y X < Y Drukuj(X) Drukuj(Y) Programowanie imperatywne (31) Stop Programowanie imperatywne (32) Instrukcja 18 2 Instrukcja if ( warunek ) { instrukcje_1 else { instrukcje_2 if ( ładna_pogoda ) { o_19tej_idziemy_na_spacer; else { o_19tej_idziemy_do_kina; Programowanie imperatywne (33) 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); min(18, 2)= 2 Programowanie imperatywne (34) 18 2 Instrukcja var X, Y: integer; read(x, Y); if ( X < Y ) then writeln('min(', X, ', ', Y, ')= ', X); end else writeln('min(', X, ', ', Y, ')= ', Y); end min(18, 2)= 2 Programowanie imperatywne (35) Jeśli Marek Antoniusz Plan nie wykładu ustąpi, to wypowiemy wojnę Egiptowi. Koncepcja Instrukcja Programowanie imperatywne (36) Programowanie imperatywne i język C 6

Jerzy Nawrocki, Zadanie Napisać program wyświetlający wartość bezwzględną podanej liczby całkowitej. 3-3 3 3 Czytaj X X < 0 X X Schemat rozwiązania Drukuj X Programowanie imperatywne (37) Programowanie imperatywne (38) Uproszczona instrukcja if ( warunek ) { instrukcje if ( pożar ) { dzwonpostrazpozarna; X Uproszczona instrukcja 3 int X; if ( X < 0 ) { X = -X; printf("%d \n", X); Programowanie imperatywne (39) Programowanie imperatywne (40) 1 5 Relacje w języku C int a, b; scanf("%d %d", &a, &b); if (a < b) {printf("%d mniejsze niz %d\n", a, b); if (a <= b) {printf("%d mniejsze lub rowne %d\n",a, b); if (a == b) {printf("%d rowne %d\n", a, b); if (a!= b) {printf("%d rozne od %d\n", a, b); if (a >= b) {printf("%d wieksze lub rowne %d\n", a, b); if (a > b) {printf("%d wieksze niz %d\n", a, b); Programowanie imperatywne (41) Jak długo Marek Antoniusz Plan wykładu jest z Kleopatrą, będziemy walczyć. Koncepcja Instrukcja Programowanie imperatywne (42) Programowanie imperatywne i język C 7

Jerzy Nawrocki, Zadanie Napisać program obliczający liczbę cyfr dziesiętnych podanej liczby naturalnej (0, 1, 2,..). 0 9 10 0 ma cyfr: 1 9 ma cyfr: 1 10 ma cyfr: 2 99 99 ma cyfr: 2 100 100 ma cyfr: 3 Programowanie imperatywne (43) 0,.. 9, 10,.. 99, 100,.. 999, 1 000,.. 9 999, 10 000,.. 1 cyf. X<10 C=1 G=10 C= Cyfr G= Granica 2 cyf. X<100 C= C + 1 G= G * 10 3 cyfry X<1000 C= C + 1 G= G * 10 4 cyfry X<10000 C= C + 1 G= G * 10 Programowanie imperatywne (44) Jak to sprawdzić? Czytaj X C 1 G 10 C C + 1 G G * 10 Przykładowe obliczenie 9 X C G Czytaj X C 1 G 10 C C + 1 G G * 10 while ( warunek ) { instrukcje; while ( ) { Instrukcja powtarzania Drukuj C Drukuj C Programowanie imperatywne (45) Programowanie imperatywne (46) Program w C Program w C Czytaj X C 1 G 10 C C + 1 G G * 10 Czytaj X C 1 G 10 C C + 1 G G * 10 while () { Drukuj C Drukuj C Programowanie imperatywne (47) Programowanie imperatywne (48) Programowanie imperatywne i język C 8

Jerzy Nawrocki, 87 Program w Pascalu Plan wykładu var X, C, G: integer; read(x); C:= 1; G:= 10; while () do end; writeln(x, ' ma cyfr: ', C); 87 ma cyfr: 2 Programowanie imperatywne (49) Koncepcja Instrukcja Programowanie imperatywne (50) Koncepcja modularyzacji Koncepcja modularyzacji System wahadłowca tg(x) Rakieta ET Discovery sin(x) cos(x) tg(x) = sin(x) / cos(x) Monitor Start wahadłowca Discovery (26.VII.2005) Programowanie imperatywne (51) Programowanie imperatywne (52) Nazwa funkcji cos ( /2 ) = 0 Argument (parametr aktualny) Wynik Napisać program wyświetlający liczbę o 1 większą od podanej. 3 Y= X + 1; printf("%d \n", Y); 4 nast ( 3 ) == 4 int nast(int n) { return n+1; Y= nast(x); printf("%d \n", Y); Programowanie imperatywne (53) Programowanie imperatywne (54) Programowanie imperatywne i język C 9

Jerzy Nawrocki, int nast(int n) { return n+1; Y= nast(x); printf("%d \n", Y); int nast(int n) { return n+1; Y= nast(x); printf("%d \n", Y); Programowanie imperatywne (55) Programowanie imperatywne (56) int nast(int n) { return n+1; Y= nast(x); printf("%d \n", Y); TypWyniku NazwaFun ( Param ){ Deklaracje Instrukcje return Wynik; int nast( int n ){ return n+1 ; Programowanie imperatywne (57) Programowanie imperatywne (58) Program = zbiór funkcji Wykonanie zaczyna się od funkcji main int nast( int n ){ return n+1 ; Y= nast(x); printf("%d \n", Y); Program = zbiór funkcji Wykonanie zaczyna się od funkcji main Brak parametrów printf("fly by Lot\n"); Programowanie imperatywne (59) Programowanie imperatywne (60) Programowanie imperatywne i język C 10

Jerzy Nawrocki, while () { void Ile main() cyfr { ma podana liczba X? int X, C; C= LiczbaCyfr(X); int LiczbaCyfr(int n) { int C, G; while (n >= G) { return C; int LiczbaCyfr(int n) { int C, G;... return C; int X, C; C= LiczbaCyfr(X); Wszystkie funkcje w jednym pliku Programowanie imperatywne (61) Programowanie imperatywne (62) function LiczbaCyfr(n: integer): integer; var C, G: integer;... LiczbaCyfr:= C; end; var X, C: integer; being read(x); C:= LiczbaCyfr(X); writeln(x, ' ma cyfr: ', C); w Pascalu Podsumowanie Plan wykładu Programowanie imperatywne (63) Programowanie imperatywne (64) Podsumowanie Operacje wejścia-wyjścia scanf / printf read / writeln Instrukcje złożone if ( ) { else { if then else while ( ) { while do Wyrażenia logiczne a == b a = b a!= b a <> b Instrukcja przypisania (zapamiętania) a = b; a := b Programowanie imperatywne (65) int F ( int x) { int LokalnyWynik; // instrukcje return LokalnyWynik; Podsumowanie Podprogramy (funkcje) Definicja function F (x: integer): integer; var LokalnyWynik: integer; (* instrukcje *) F:= LokalnyWynik; end; Podprogramy (funkcje) Wywołanie Zmienna = 1 + F(2*a); Zmienna := 1 + F(2*a); Programowanie imperatywne (66) Programowanie imperatywne i język C 11

Jerzy Nawrocki, Programowanie sterowane testami 5 Programowanie sterowane testami 87 5 ma cyfr: 1 87 ma cyfr: 1 Programowanie imperatywne (67) Programowanie imperatywne (68) Programowanie sterowane testami 87 while () { Jak to sprawdzić? Symboliczne wykonanie schematu Czytaj X C 1 G 10 C C + 1 G G * 10 Drukuj C 9 X C G 9 87 ma cyfr: 2 Programowanie imperatywne (69) Programowanie imperatywne (70) 9 Symboliczne wykonanie programu Dziękuję za uwagę! while () { X C G 9 Programowanie imperatywne (71) Rzym, Lungo Tevere (foto: Giampaolo Macorig; dostępne Programowanie na www.flickr.com) imperatywne (72) Programowanie imperatywne i język C 12