Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja! Krzysztof Grudzień kgrudzi@kis.p.lodz.pl! Zbigniew Chaniecki zch@kis.p.lodz.pl 1
program zajęć - wykład Podstawowe pojęcia informatyki: komputer, algorytm, program. Systemy liczbowe, podstawy arytmetyki binarnej, formaty numeryczne zapisu danych. Przetwarzanie danych w komputerze, uruchamianie programów, interpretacja i kompilacja. Podstawowe konstrukcje programistyczne, schematy i pseudokody algorytmów. Podstawy programowania w języku C Wprowadzenie do teorii algorytmów Oprogramowanie komputerów osobistych 2
zaliczenie Laboratorium 50% Wykład 50% 3
Literatura: R. Małecki, D. Arendt, A. Bryszewski, R. Krasiukianis: Wstęp do Informatyki. Skrypt P.Ł. Łódź, 1997. B. Kernighan, D. Ritchie: Język ANSI C. Programowanie. Wydanie II, Helion 2010 P. Metzger, Anatomia PC. Wydanie XI, Helion, 2007 Stephen Prata, Szkoła programowania. Język C, Helion A. Sapek, W głąb języka C, Helion, 1993 www: kgrudzi.kis.p.lodz.pl/pp 4
program komputerowy sekwencja symboli opisująca obliczenia na danych zgodnie z pewnymi regułami zwanymi językiem programowania. program jest zazwyczaj wykonywany przez komputer (np. wyświetlenie strony internetowej), czasami bezpośrednio jeśli wyrażony jest w języku zrozumiałym dla danej maszyny lub pośrednio gdy jest interpretowany przez inny program (interpreter). 5
interfejs: klawiatura, monitor 6
kod źródłowy wyrażenie metody obliczeniowej w postaci języka zrozumiałego dla człowieka nazywane jest kodem źródłowym, podczas gdy program wyrażony w postaci zrozumiałej dla maszyny (to jest za pomocą ciągu liczb, a bardziej precyzyjnie zer i jedynek) nazywany jest kodem maszynowym bądź postacią binarną (wykonywalną). 7
Jaki ma być ten program? 8
Programowanie cel programu projektowanie programu Stephen Prata, Szkoła programowania. Język C, Helion 9
Język programowania - C kto będzie użytkownikiem? jaki interfejs? o co pytamy? organizacja programu reprezentacja danych ile mamy czasu na ukończenie:)? 10
Pisanie kodu #include <stdio.h> int main(void) { printf( HELLO:)! ); return 0; } 11
co dalej z kodem kompilacja > kod maszynowy linkowanie > połączenie z procedurami OS/hardware Stephen Prata, Szkoła programowania. Język C, Helion 12
Wstęp main biblioteki - include printf zmienne scanf operacje matematyczne instrukcja warunkowa pętle 13
int main (void) mian - nazwa funkcji głównej () - lista parametrów/ danych do przetworzenia void - typ pusty int - jaki typ funkcja zwraca #include <stdio.h>! int main(void) { // insert code here... printf("hello, World!\n"); return 0; } 14
include dołączanie bibliotek: #include <stdio.h> printf/scanf rand/srand/atoi/abs/ sin/cos/log/exp #include <stdlib.h> #include <math.h> 15
printf - wyświetlanie danych wyprowadzanie danych na standardowe wyjście > konsola jeden obowiązkowy parametr const char* format int printf(const char *format,... ); printf( witaj swiecie ); 16
deklaracja zmiennych Zmienne: int a; float b; char c; stałe: const int a; 17
instrukcja przypisania #include <stdio.h>! int main(void) { int a; float b; char c; a = 2; b = 3.53; printf("hello, World!\n"); a=1; b=3.53; c='k'; c= k ; return 0; } 18
wypisywanie zawartości zmiennych %d > liczba całkowita, typ całkowity %f > liczba ułamkowa, typ zmiennoprzecinkowy %c > pojedynczy znak int main(void) { int a; float b; char c; //printf( Hello, World!\n"); a=1; b=3.53; c='k'; printf("liczba a = %d\n",a); %s > łańcuch znaków } return 0; 19
typy danych int > printf( %d,a); float > printf( %f,b); double > printf( %lf,c); char > printf( %c,d); 20
typy danych Stephen Prata, Szkoła programowania. Język C, Helion 21
typy danych > printf( %, x); 22 A. Sapek, W głąb języka C, Helion, 1993
rozmiar pola wyjściowego b=3.53; printf("liczba a = %.2f\n",b); printf("liczba a = %f\n",b); Stephen Prata, Szkoła programowania. Język C, Helion 23
printf("liczba a = %10.2f\n",b); printf("liczba a = %-10.2f",b); printf("liczba a = %-10.2f\n",b); dosunięcie argumentu do lewej strony pola 24
25 A. Sapek, W głąb języka C, Helion, 1993
wartość zwracana przez funkcję printf Fu n k c j a p r i n t f z w r a c a wartość całkowitą równą liczbie wyprowadzonych znaków. Jeżeli w czasie wyprowadzania wystąpił jakiś błąd, funkcja ta zwraca wartość EOF. 26
pobieramy dane - scanf Funkcja scanf ma jeden obowiązkowy parametr: const char *format > ciąg znaków formatujących informacja jak należy interpretować wchodzące do komputera dane - dane wejściowe scanf( %d, ) int a; scanf( %d, &a); 27
28 A. Sapek, W głąb języka C, Helion, 1993
ciąg formatujący o wczytanie liczby w reprezentacji ósemkowej (zawierającej cyfry od 0 do 7 w sposób opisany powyżej). x wczytanie w analogiczny sposób liczby w reprezentacji szesnastkowej (zawierającej cyfry od 0 do f). A. Sapek, W głąb języka C, Helion, 1993 29
ciąg formatujący c zmiennej wskazywanej przez odpowiedni argument jest przypisywany następny znak w strumieniu wejściowym. Dotyczy to także białych znaków, które dla specyfikatora c nie są pomijane 30 A. Sapek, W głąb języka C, Helion, 1993
podsumowanie cz. I deklarować zmienne pobrać dane wyświetlić dane 31
operacje matematyczne operatory: przypisania arytmetyczne relacyjne inkrementacyjne/dekrementacyjne inne > kolejne wykłady 32
Operatory arytmetyczne + ( dodawanie ) a + b - ( odejmowanie ) a b * ( mnożenie ) a * b / ( dzielenie ) a / b > dzielenie int/int => int % a % b > int! 33
Operatory relacyjne porównanie a < b a <= b a >= b a!= b a == b > odróżniać od przypisania =! Wynik operacji to 0/fałsz lub 1/prawda 34
Operatory logiczne && AND, np: (a>5 && a<10) > a (5, 10) OR, np: (a>5 a<10) > a (-, 5) i a (10, + )??! true/1 and false/0 > false/0 false/0 and true/1 > false/0 true/1 and true/1 > true/1 false/0 and false/0 > false/0 true/1 or false/0 > true/1 false/0 or true/1 > true/1 true/1 or true/1 > true/1 false/0 or false/0 > false/0 35
Operatory inkrementacji ++ prefiksowy ++a; ++ postfiksowy b++; -- prefiksowy --a; -- postfiksowy b--; 36
operator przypisania a=b+c; a+=b; > a=a+b; a-=b; > a=a-b; a*=b; > a=a*b; a/=b; > a=a/b; 37
operator warunkowy warunek? war1 : war2 jeśli warunek == true/1 > war1 jeśli warunek!= true/1 > war2! a = b>10? 10 : b 38
podsumowanie cz. II deklarować zmienne pobrać dane przetworzyć dane wyświetlić dane 39
instrukcja sterująca programem instrukcja warunkowa if else 40
if instrukcja1; If (wyrazenie) instrukcja2; Instrukcja3; 41
if else instrukcja1; If (wyrazenie) instrukcja2; else Instrukcja3; Instrukcja4; 42
if else if instrukcja1; If (wyrazenie1) instrukcja2; else if (wyrazenie2) Instrukcja3; else if (wyrazenie3) Instrukcja4; else Instrukcja5; 43
czynności wykonywane wielokrotnie - pętle for do while while! jeśli warunek pętli prawdziwy > wykonuj pętle 44
pętla for for (część I; część II; część III) incjalizacja licznika warunek aktualizacja Stephen Prata, Szkoła programowania. Język C, Helion 45
pętla for?? Stephen Prata, Szkoła programowania. Język C, Helion 46
pętla while, do while do { scanf( %d, &i); printf( %d\n,i); }while(i!=102); i=0; while(i!=102) { scanf( %d, &i); printf( %d\n,i); } 47
? pobieraj liczby od użytkownika aż liczba te będzie równa 102 maksymalna liczba strzałów : 5 48
wyznaczanie średniej z liczb 49
Tablice Ciąg wartości tego samego typu: float tab[10] tab[0].tab[9] tab[4]=3.45; int tab[10]={1,2,3,4,5,6,7,8,9,11};
inicjalizacja zmiennych Stephen Prata, Szkoła programowania. Język C, Helion
Stephen Prata, Szkoła programowania. Język C, Helion
Stephen Prata, Szkoła programowania. Język C, Helion
Tablice int tab_int[25]; char tab_char[20]; long tab_long[35];
tablica - pętla for Stephen Prata, Szkoła programowania. Język C, Helion
tablica znaków a łańcuch znaków char tab_chara[19]; char tab_charb[20]; Stephen Prata, Szkoła programowania. Język C, Helion
pobieranie znaku char ch_a; char_a=getchar(); > odczytuje każdy znak: tabulator, znak nowej linii, scanf( %c, &char_a);
pobieranie ciągu znaków char tab_char[20]; for > tab_char[i]= k ; scanf( %s, &tab_char[0]);
granica tablicy zawartość int tab[10]; tab[0]=5; tab[9]=55; tab[10]=11;????? 5 55 11 0 1 2 3 4 5 6 7 8 9 10
Przykłady wyznaczanie wartości min, max w tabeli zliczanie liczb parzystych sumowanie tablicy zliczanie wystąpień zadanej litery w łańcuchu
tablice pamiec wielowymiarowe int taba[5][10]; > 5 tablic 10-cio elementowych int tabb[50]; taba[0][0] - tabb[0] taba[1][3] - tabb[14] program