to get the file
Transkrypt
to get the file
Laboratorium nr 2 Instrukcja laboratoryjna 2 1) 1/7 Język C Temat: Wprowadzenie do języka C Przygotował: mgr inż. Maciej Lasota Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania (przeznaczenia) i należy do najpopularniejszych języków programowania na świecie. Był i jest nadal ściśle związany z systemem operacyjnym Unix, dla którego został opracowany i stworzony (większość kodu źródłowego Unix'a zostało napisane w języku C). Język C wyposażony jest w podstawowe typy danych, instrukcje sterujące, instrukcje grupowe, instrukcje pętli i podprogramy (funkcje). Nie zapewnia natomiast wieloprogramowości, współbieżności czy też metod synchronizacji, nie ma w nim też instrukcji do manipulowania na ciągach znaków, zbiorach, listach czy też całych tablicach (dodatkowe biblioteki umożliwiają taką funkcjonalność np. pthread-lib, IPC itp.). Przykładowy program w języku C: #include <stdio.h> #include <stdlib.h> #define PI 3.14 //zdefiniowana stała float global=213.234; //zmienna globalna int main(void) { int a; int b; int wynik; printf("Podaj liczbe a: "); scanf("%d",&a); //podajemy liczbe a printf("Podaj liczbe b: "); scanf("%d",&b); //podajemy liczbe b wynik = (a+b); //dodawanie dwoch liczb a i b printf("Wynik dodawania: %d\n",wynik); printf("Wynik dodawania: %d\n",(a+b)); /* Tu wyswietlam liczbe PI zadeklarowana jako "stala" oraz zmienna globalna "global"*/ printf("Zmienna globalna: %4.1f\n",global); printf("Stala: %4.4f\n",PI); return (0); } Laboratorium nr 2 2) 2/7 Typy danych, deklaracja stałych, zmiennych. Podstawowe typy danych: Nazwa typu Rodzaj Liczba bitów Wartość min Wartość max int całkowity 32 -2147483648 2147483647 short int całkowity krótki 16 -32768 32767 long int całkowity długi 32 -2147483648 2147483647 unsigned int całkowity bez znaku 32 0 4294967295 unsigned short int całkowity krótki bez znaku 16 0 65535 unsigned long int całkowity długi bez znaku 32 0 4294967295 char znakowy 8 - - unsigned char znakowy bez znaku rzeczywisty pojedynczej precyzji rzeczywisty podwójnej precyzji rzeczywisty długi 8 0 255 32 -3,4E+38 3,4E+38 64 -1,7E+308 -1,7E+308 64 -1,7E+308 -1,7E+308 float double long double void typ pusty (bez wartości) Deklaracja stałej: const [typ danych] [nazwa stałej]; Przykład: const int liczba = 2; // stała całkowita Deklaracja zmiennej: [typ danych] [nazwa zmiennej]; Przykład: int liczba; // zmienna float liczba2 = 2.0; // zmienna char znak; // zmienna char test='A'; // zmienna całkowita rzeczywista + inicjalizacja znakowa znakowa + inicjalizacja Wartości do zmiennych możemy przypisywać za pomocą operatora przypisania „=”, każda zmienna oraz instrukcja w języku C zakończona jest znakiem średnika „;”. Laboratorium nr 2 3) 3/7 Operatory arytmetyczne, relacji, logiczne oraz bitowe. Operatory arytmetyczne: • • • • • * / + % mnożenie, dzielenie, dodawanie, odejmowanie, modulo (zwraca resztę z dzielenia). Operatory specjalne: • • • • • +=, -=, *=, /=, %=, przykład przykład przykład przykład przykład x x x x x += -= *= /= %= 2; 2; 2; 2; 2; --> --> --> --> --> x x x x x = = = = = Operatory inkrementacji i dekrementacji: • • • • ++prefiks, postfiks++, --prefiks, postfiks--. Operatory relacji: • • • • • • == <= >= < > != równy, mniejszy lub równy, większy lub równy, mniejszy niż, większy niż, negacja. Operatory logiczne: • • • && || ! iloczyn logiczny (AND), suma logiczna (OR), negacja logiczna (NOT). Operatory bitowe: • • • • & | ^ ~ koniunkcja bitowy (AND), alternatywa bitowa (OR), suma modulo (EXOR), negacja. x x x x x + – * / % 2; 2; 2; 2; 2; Laboratorium nr 2 4) 4/7 Wyświetlanie danych. Podstawową funkcją do wyświetlania danych w języku C jest funkcja printf(). Funkcja ta zadeklarowana jest w pliku nagłówkowym <stdio.h>. Ogólna postać tej funkcji wygląda następująco: int printf(const char *format, ...); lub int printf(”format”, arg1, arg2, ...); Funkcja printf() posiada co najmniej jeden argument tzw. format, będący stałą łańcuchową (const char). Może ona przyjmować ciąg argumentów, każdy argument zostaje wstawiony w odpowiednie miejsce formatu rozpoczynające się od znaku %. Tak stworzony napis zostaje wyprowadzony na standardowe wyjście (stdout -> ekran monitora). Istotną rzeczą jest to, aby liczba argumentów odpowiadała specyfikatorom formatu w tekście formatującym. Pierwszym argumentem funkcji printf() jest tekst formatujący czyli stała znakowa. Znak procenta oznacza rozpoczęcie tzw. specyfikatora formatu. Specyfikator formatu pozwala na wprowadzenie w jego miejsce wartości kolejnych argumentów funkcji printf() (wyjątek stanowi %%, który umożliwia wprowadzenie znaku „%”). Znak „\” w tekście formatującym umożliwia wprowadzenie tzw. znaków specjalnych. Specyfikator formatu ma postać: % [flaga] [szerokość] [.precyzja] [modyfikator] typ Typ: Laboratorium nr 2 5/7 Modyfikator: Precyzja: Określa dokładność liczby zmiennoprzecinkowej, czyli liczbę miejsc po przecinku. Szerokość: Określa minimalną szerokość pola w znakach dla argumentów znakowych, oraz ilość liczb przed przecinkiem dla argumentów liczbowych. Flaga: Laboratorium nr 2 Znaki specjalne: 6/7 Laboratorium nr 2 5) 7/7 Wprowadzanie danych. Podstawową funkcją do wczytywania danych w języku C jest funkcja scanf(). Funkcja ta zadeklarowana jest w pliku nagłówkowym <stdio.h>. Ogólna postać tej funkcji wygląda następująco: int scanf(const char *format, ...); lub int scanf(”format”, &arg1, &arg2, ...); Funkcja scanf() wczytuje dane ze standardowego wejścia (stdin -> klawiatura) i przekształca je na odpowiednie wartości w zależności od specyfikatora formatu. Pierwszym argumentem funkcji scanf() jest stała znakowa tzw. format. Specyfikatory formatu rozpoczynają się identycznie jak funkcji printf() od znaku %. Argumenty do funkcji scanf() przekazujemy w postaci wskaźników dlatego też używamy przed nazwami argumentów znaku „&”. Specyfikatory formatu używane w funkcji scnaf() są identyczne jak w funkcji printf(). Dodatkowo też można używać modyfikatorów z funkcji printf(). Używanie modyfikatora dla liczb całkowitych (%ld, %li, %lx, %lo, %lu) powoduje, że wczytana wartość traktowana jest jak long int lub jak unsigned long int. Używanie modyfikatora dla liczba zmiennopozycyjnych (%lf, %le, %lE) powoduje, że wartość traktowana jest jak double. Specyfikatory formatu: