PODSTAWY INFORMATYKI 1 PRACOWNIA NR 2 TEMAT: Obsługa pakietu - środowiska do tworzenia, analizy i uruchomienia programów w języku C/C++: Dev-C++. Ogólna struktura programu w języku C, stałe i zmienne, typy danych, operatory matematyczne, wyrażenia arytmetyczne. Środowisko Dev-C++: - produkcja: Bloodshed Software - internet: www.bloodshed.net - licencja: Free Software distributed under the GNU General Public License - wersja: 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw/GCC 3.4.2 - download: http://prdownloads.sourceforge.net/dev-cpp/devcpp- 4.9.9.2_setup.exe Wymagania sprzętowe (minimalne): - Microsoft Windows 95, 98, NT 4, 2000, XP - 8 MB RAM with a big swapfile - 100 MHz Intel compatible CPU, 30 MB free disk space Wymagania sprzętowe (zalecane): - Microsoft Windows 2000, XP - 32 MB RAM - 400 MHz Intel compatible CPU, 200 MB free disk space Domyślna instalacja: - ok. 60 MB Wybrane cechy: - środowisko typu IDE (ang. Integrated Development Environment) dla języka C/C++, - umożliwia stworzenie programów typu: - Windows application - program dla systemu Windows wykorzystujący Win32 API, - Console application - program uruchamiany w konsoli (oknie tekstowym), - Static library - biblioteka statyczna, - DLL - biblioteka dynamiczna (ang. Win32 Dynamic Link Library), - polskojęzyczne menu. - 1 -
Okno główne programu 1 2 3 4 5 6 1 - Menu główne programu 2 - Paski narzędzi (Główny, Edycja, Przeszukiwanie, Projekt, Kompilowanie i uruchamianie, Opcje, Dodatki, Klasy) 3 - Przeglądarka projektu / klas 4 - Edytor 5 - Pasek Zakładek 6 - Pasek stanu - 2 -
Menu główne programu: - zawiera wszystkie polecenia programu, - dostęp do wybranych pozycji w menu możliwy jest także poprzez przyciski na pasku narzędzi, skróty klawiszowe (ang. hot keys) i menu kontekstowe. Paski narzędzi: - zawierają najczęściej wywoływane polecenia programu. Główny: Projekt... - stworzenie nowego projektu, Otwórz projekt lub plik... (Ctrl+O) - otwarcie istniejącego pliku lub projektu, Plik źródłowy (Ctrl+N) - stworzenie nowego pustego pliku i ewentualne dodanie go do projektu - nowy plik otrzymuje domyślnie nazwę BezNazwyx, gdzie x jest kolejnym numerem, Zapisz (Ctrl+S) - zapisanie edytowanego pliku, Zapisz wszystko - zapisanie wszystkich otwartych plików, Zamknij (Alt+F4) - zamknięcie edytowanego pliku, Drukuj (Ctrl+P) - wydrukowanie edytowanego pliku. Edycja: Cofnij (Ctrl+Z) - cofnięcie ostatniej operacji edytorskiej, Powtórz (Shift+Ctrl+Z) - powtórzenie ostatniej operacji edytorskiej. Przeszukiwanie: Znajdź (Ctrl+F) - wyszukanie ciągu znaków, Zamień (Ctrl+R) - wyszukanie i zamiana ciągu znaków, Szukaj ponownie (F3) - ponowne szukanie ciągu znaków, Przejdź do wiersza... (Ctrl+G) - przejście w edytowanym pliku do wiersza o podanym numerze. - 3 -
Projekt: Dodaj do projektu - dodanie istniejącego pliku do projektu, Usuń z projektu - usunięcie pliku z projektu, Opcje projektu (Alt+P) - wyświetlenie opcji projektu. Kompilowanie i uruchamianie: Kompiluj (Ctrl+F9) - kompilacja programu, Uruchom (Ctrl+F10) - uruchomienie wcześniej skompilowanego programu, Kompiluj i uruchom (F9) - kompilacja i uruchomienie programu, Przebuduj wszystko (Ctrl+F11) - ponowna kompilacja wszystkich plików tworzących projekt, Odpluskwiaj (F8) - uruchomienie odpluskwiania programu. Opcje: Indeks pomocy Dev-C++ - uruchomienie systemu pomocy, O Dev-C++... - wyświetlenie informacji o programie. Dodatki: Zawiera cztery opcje: - Plik źródłowy (Ctrl+N), - Projekt, - Plik zasobów, - Szablon... Zawiera dwie opcje: - Data/Czas - wstawia do pliku źródłowego aktualną datę i czas w postaci: dd-mm-yy hh:mm, - Komentarz nagłówkowy - wstawia do pliku źródłowego nagłówek zawierający pola: Name, Copyright, Author, Date, Description, Umożliwia zdefiniowanie w pliku źródłowym do 9 zakładek, Umożliwia przejście do wcześniej zdefiniowanych zakładek. - 4 -
Przeglądarka projektu / klas: - zawiera trzy zakładki: Projekt, Klasy, Odpluskwiacz. Zakładka Projekt Zakładka Klasy Zakładka Odpluskwiacz Zakładka Projekt: - zawiera listę wszystkich plików tworzących projekt (jeśli projekt nie został stworzony, to zakładka ta jest pusta), - kliknięcie nazwy pliku na liście powoduje otwarcie go w edytorze. Zakładka Klasy: - zawiera listę klas, struktur, funkcji i zmiennych globalnych zdefiniowanych w programie, - kliknięcie wybranej nazwy powoduje przeniesienie w edytorze kursora do miejsca deklaracji wybranego elementu. Zakładka Odpluskwiacz: - w zakładce tej wyświetlane są wartości zmiennych obserwowanych podczas odpluskwiania programu. Edytor: - umożliwia jednoczesną edycję kilku plików źródłowych, każdy plik wyświetlany jest na oddzielnej zakładce, - umożliwia wykonywanie typowych operacji edytorskich, np. zaznaczanie, wycinanie, kopiowanie, zastępowanie tekstu, - 5 -
- wyświetla kod źródłowy odpowiednio kolorując go (np. słowa kluczowe języka C są pogrubione, łańcuchy znaków mają kolor czerwony zaś dyrektywy preprocesora - zielony), - jeśli edytowany plik zmienił się, ale nie został zapisany na dysku, to przed nazwą pliku pojawia się symbol [*]. Kompilator: - wyświetla listę błędów, które wystąpiły podczas kompilacji programu. Log kompilacji: - wyświetla przebieg kompilacji programu zawierający wszystkie wywoływane polecenia. Odpluskwiacz: - zawiera polecenia wykorzystywane podczas odpluskwiania programu. - 6 -
Wyniki poszukiwań: - zawiera wyniki poszukiwań wyrażeń, ale tylko wtedy, gdy dotyczy ono kilku plików. Pasek stanu: Liczba wierszy w edytowanym pliku Wstaw / Nadpisz - tryb edycji (Wstawianie / Nadpisywanie) Pojawienie się słowa Modyf. oznacza, że edytowany plik zmienił się, ale nie został zapisany na dysku Pozycja kursora w edytowanym pliku (numer wiersza i numer kolumny) Przykład programu w języku C #include <stdio.h> int main(void) { printf( Witaj swiecie\n ); } return 0; - 7 -
Ogólna struktura programu w języku C/C++ #include <....h> - dołączenie pliku nagłówkowego, int main() - główna funkcja programu, zawsze musi występować { w programie, można nie podawać typu int (jest to... domyślny typ wartości zwracanej przez funkcję),...... - treść programu, return (0); - wartość zwracana przez funkcję main, wartość } można zapisać także bez nawiasów, np. return 0; Komentarze /* komentarz w języku C i C++ */ // komentarz do końca linii tylko w języku C++ Zmienne - służą do reprezentacji danych, mogą przyjmować różne wartości, - zbiór wartości jakie mogą przyjmować zmienne nazywa się typem, - zmienne przechowywane są w pamięci operacyjnej komputera, więc każda z nich posiada swój adres, - aby móc skorzystać z danej zmiennej trzeba ją zadeklarować. Deklarowanie zmiennych int a; średnik nazwa zmiennej nazwa typu int a; float b,c; Elementarne typy arytmetyczne nazwa typu zakres wartości danych rozmiar * uwagi char -128... 127 1 małe liczby całkowite, znaki ASCII int -32768 32768 2 liczby całkowite float -3,4 10-38 3,4 10 38 4 liczby rzeczywiste, 7 cyfr znaczących double -1,7 10-308 1,7 10 308 8 liczby rzeczywiste, 15 cyfr znaczących * Wszystkie rozmiary podane są dla kompilatora Borland C++ 3.1-8 -
Dodatkowe słowa kluczowe: - short, long - dla typu int oznaczają krótką lub długą liczbę całkowitą, - long - dla typu double pozwala zwiększyć precyzję (liczbę miejsc po przecinku), - signed, unsigned - stosowane do typów całkowitych, określają czy zmienna ma być ze znakiem czy bez znaku. nazwa typu zakres wartości danych rozmiar * uwagi signed char = char -128... 127 1 liczby całkowite unsigned char 0 255 1 liczby całkowite signed int = int -32768 32767 2 liczby całkowite unsigned = unsigned int 0 65535 2 liczby całkowite short = signed short int -32768 32767 2 liczby całkowite short unsigned 0 65535 2 liczby całkowite = unsigned short int long = signed long int long unsigned = unsigned long int -2147483648 2147483647 4 liczby całkowite 0 4294967295 4 liczby całkowite float -3,4 10-38 3,4 10 38 4 7 cyfr znaczących double -1,7 10-308 1,7 10 308 8 15 cyfr znaczących long double 3,4 10-4932 1,1 10 4932 10 19 cyfr znaczących * Wszystkie rozmiary podane są dla kompilatora Borland C++ 3.1 Rozmiar zmiennej a kompilator Kompilator int long double Borland C++ 3.1 2 10 Dev-C++ 4 12 Microsoft Visual C++ 6.0 4 8 Borland C++ Builder 6 4 10 Nazwy zmiennych - nazwa zmiennej może składać się z liter i cyfr, pierwszym znakiem nazwy musi być litera, - znak podkreślenia traktowany jest jak litera, - jako nazw zmiennych nie można używać słów kluczowych języka C (np. if, else, int, float, class, private, this, sizeof, try, static, register). - 9 -
Deklaracje zmiennych w programie zmienne globalne #include <stdio.h> int a; double b; int main() {... return 0; } zmienne lokalne #include <stdio.h> int main() { int a; double b;... return 0; } Przypisywanie wartości zmiennej (inicjlizacja) przy deklaracji zmiennej void main() { int a = 10; float b = -10.15;... } w treści programu void main() { int a; float b,c,d;... a = 10; b = c = d = 10.12;... } = - operator przypisania Literały liczbowe Typy literałów liczbowych wynikają z formy ich zapisu i wartości jakie reprezentują. - liczby całkowite (int, long int, unsigned long int) 1 - liczba całkowita, typ int, 25000 - liczba całkowita, typ int, 39000 - liczba całkowita, typ long (bo przekracza maksymalną wartość dla typu int), 4100000000 - liczba całkowita, typ unsigned long int (bo przekracza long), Liczby całkowite można zapisywać także w formie ósemkowej (0 na początku) lub szesnastkowej (0x lub 0X na początku), np. 011-11 w systemie ósemkowym to 9 w systemie dziesiętnym, 0x11-11 w systemie szesnastkowym to 17 w systemie dziesiętnym. - 10 -
- liczby rzeczywiste (double) 1.0 - liczba rzeczywista, typ double, 1.312e2 - liczba rzeczywista 1,312 10 2, typ double, -2.124E-1 - liczba rzeczywista -2,124 10-1, typ double. Zmiana typu literału liczbowego Typy literałów liczbowych mogą być zmieniane przez programistę poprzez użycie przyrostków: - dla typów całkowitych: u lub U - wartość ma być potraktowana jako unsigned (int lub long), l lub L - wartość ma być potraktowana jako long (int lub unsigned int). - dla typów rzeczywistych: l lub L - wartość ma być potraktowana jako long double, f lub F - wartość ma być potraktowana jako float. Przykłady: 5L - liczba całkowita typu long, 4.52f - liczba rzeczywista typu float (a nie long), 2.5L - liczba rzeczywista typu long double. Literały znakowe Literały znakowe (pojedyncze znaki) zapisywane są za pomocą apostrofów, np. char c = a ; c = 1 ; Operatory arytmetyczne - jednoargumentowe: + - plus, znak liczby, - - minus, zmienia wartość wyrażenia na przeciwną, ++ - operator inkrementacji (zwiększa wartość zmiennej o 1), -- - operator dekrementacji (zmniejsza wartość zmiennej o 1). Operatory ++, -- mogą występować jako: - przedrostek (przed nazwą zmiennej): ++i, --i wartość zmiennej modyfikowana jest przed jej wykorzystaniem, - przyrostek (po nazwie zmiennej): i++, i-- wartość zmiennej modyfikowana jest po jej wykorzystaniu. - 11 -
- dwuargumentowe multiplikatywne: * - mnożenie, / - dzielenie (zastosowany do liczb całkowitych obcina część ułamkową), % - dzielenie modulo (reszta z dzielenia), może być stosowany tylko dla typów całkowitych (char, int, unsigned, long), - dwuargumentowe addytywne: + - dodawanie, - - odejmowanie. Priorytet operatorów arytmetycznych Najwyższy ++ -- + - (jednoargumentowe) Najniższy * / % + - (dwuargumentowe) W wyrażeniach arytmetycznych można oczywiście stosować nawiasy, które zmieniają priorytet operatorów. Przykłady: a = b+c; d = a*b + d*c; k = k+1; z = (a+d)*c; Operatory przypisania (złożone) Operatory te zapisywane są jako: += -= *= /= %= Zamiast i = i + 10; i = i - 20; i = i * 40; i = i / 15; i = i % 5; można napisać i += 10; i -= 20; i *= 40; i /= 15; i %= 5; - 12 -
Funkcja printf printf( tekst opcjonalny + sp_for,argumenty); Funkcja printf wyprowadza tekst, gdy w tekście występuje sp_for (specyfikator formatu) zaczynający się od %, to następuje przekształcenie - w miejsce specyfikatora wstawiana jest wartość argumentu. Liczba specyfikatorów formatu musi być zgodna z liczbą argumentów. sp_for = %[znacznik][szerokość][.precyzja][modyfikator]typ [znacznik] - + - przed liczbą stawiany jest znak (plus lub minus), - - wyrównanie wyświetlanych znaków do lewej strony, [szerokość].precyzja typ d,i u x,x o f e,e g s c - określa minimalną liczbę wyprowadzanych znaków, jeśli znaków jest mniej to pole jest z lewej strony uzupełniane spacjami, jeśli więcej - podana szerokość jest ignorowana, - liczba znaków po kropce dziesiętnej, - określa rodzaj i typ argumentu: - liczba całkowita ze znakiem, dziesiętna, - liczba całkowita bez znaku, dziesiętna, - liczba całkowita bez znaku, szesnastkowa, - liczba całkowita bez znaku, ósemkowa, - liczba rzeczywista w postaci [-]ddd.ddd, - liczba rzeczywista w formacie naukowym (z użyciem e lub E), - liczba rzeczywista (format f lub e), - ciąg znaków, - pojedynczy znak. [modyfikator] - służy do zmodyfikowania podstawowego typu podawanego przez znak typu: l - stosowany tylko do liczb całkowitych do wyświetlania wartości typu long (może stać przed d, i, o, u, x, X, o, np. %ld, %li), L - stosowany do wyświetlania wartości rzeczywistych typu long double Przykłady: int a = -10; float b = 10.23; char imie[5] = Jan ; printf( liczba1 = %d, liczba2 = %f \n,a,b); printf( Imie: %s Nazwisko: %s \n,imie, Kowalski ); - 13 -
Funkcja scanf scanf( sp_for,argumenty); Funkcja scanf wczytuje znaki ze standardowego wejścia (klawiatura), interpretuje je zgodnie z zadanym sp_for (specyfikatorem formatu) i przypisuje wyniki argumentom w odpowiedniej kolejności. sp_for = %[szerokość_pola][modyfikator]typ [szerokość_pola] - określa ile znaków zostanie przeczytanych typ - określa rodzaj i typ argumentu: d - liczba całkowita dziesiętna, typ int, D - liczba całkowita dziesiętna, typ long, o - liczba całkowita ósemkowa, typ int, O - liczba całkowita ósemkowa, typ long, x - liczba całkowita szesnastkowa, typ int, X - liczba całkowita szesnastkowa, typ long, i - liczba całkowita dziesiętna, ósemkowa lub szesnastkowa, typ int, I - liczba całkowita dziesiętna, ósemkowa lub szesnastkowa, typ long, u - liczba całkowita dziesiętna bez znaku, typ unsigned, U - liczba całkowita dziesiętna bez znaku, typ unsigned long, f,e,e - liczba rzeczywista, typ float, g,g - liczba rzeczywista, typ float, s - ciąg znaków, c - pojedynczy znak, typ char. [modyfikator] - służy do zmodyfikowania podstawowego typu podawanego przez znak typu: l L h - zmienia wszystkie typy całkowitoliczbowe na ich długie wersje; zastosowany do znaków typu f, e, E, g, G spowoduje interpretację zawartości pól wejściowych jako liczb typ double, - zastosowany do znaków typu f, e, E, g, G spowoduje interpretację zawartości pól wejściowych jako liczb typ long double, - typy całkowitoliczbowe będą traktowane jako short. Argumenty funkcji scanf są adresami obszarów w pamięci, dlatego też muszą być poprzedzone znakiem & (nie dotyczy ciągu znaków). Przykłady: int a; scanf( %d,&a); int a; float b,c; scanf( %d %f %f,&a,&b,&c); char name[20]; scanf( %s,name); - 14 -
Plik nagłówkowy math.h abs() - wartość bezwzględna (liczby całkowitej), acos() - arcus cosinus (zwraca kąt w radianach), asin() - arcus sinus (zwraca kąt w radianach), atan() - arcus tanges (zwraca kąt w radianach), cabs() - moduł liczby zespolonej, ceil() - zaokrąglenie w górę, cos() - cosinus (kąt w radianach), cosh() - cosinus hiperboliczny (kat w radianach), div() - iloraz dwóch liczb całkowitych, exp() - liczba e do potęgi argument, fabs() - wartość bezwzględna argumentu (liczby rzeczywistej), floor() - zaokrąglenie w dół, fmod() - dzielenie modulo, log() - logarytm naturalny, log10() - logarytm dziesiętny, modf() - udostępnia część całkowitą i ułamkową argumentu, pow() - funkcja wykładnicza (oblicza x do potęgi y), pow10() - udostępnia liczbę 10 do wybranej potęgi, rand() - udostępnia liczbę pseudolosową z zakresu (0... 32767), random() - udostępnia liczbę pseudolosową z podanego zakresu, randomize() - inicjacja generatora liczb pseudolosowych, sin() - sinus (kąt w radianach), sinh() - sinus hiperboliczny (kąt w radianach), tan() - tangens (kąt w radianach), tanh() - tangens hiperboliczny (kąt w radianach). M_PI - stała określająca liczbę π (π = 3,1415926...), M_E - stała określająca liczbę e (e = 2,7182818...), - 15 -