WYKŁAD 1. PODSTAWY 1_1. Typy zmiennych Proste typy zmiennych języka C++ Nazwa typu (nazwa skrócona) Rozmiar (bajtów) unsigned char 1 signed char (char) unsigned short int (unsigned) signed short int (int) (short) unsigned long int (unsigned long) signed long int (long) float *) 4 double *) 8 long double *) 10 1 2 2 4 4 Rodzaj danych zakres wartości Znaki kodu ASCII 0 do 255 Znaki kodu ASCII 128 do +127 Liczby całkowite bez znaku 0 do 65 535 Liczby całkowite ze znakiem 32 768 do + 32 767 Długie liczby całkowite bez znaku 0 do 4 294 967 295 Długie liczby całkowite ze znakiem 2 147 483 648 do + 2 147 483 647 Liczby rzeczywiste ± ( 3.4 e 38 do 3.4 e+38 ) Liczby rzeczywiste podwójnej precyzji ± ( 1.7 e 308 do 1.7 e+308 ) Długie liczby rzeczywiste podwójnej precyzji ± ( 3.4 e 4932 do 1.1 e+4932 ) *) Zapis 3.4 e-38 jest równoważny zapisowi 3,4 10-38. 1_2. Deklarowanie zmiennych: int x; double suma; char znak; long s,wyraz_1,wyraz_2; //deklaracja z przypisaniem wartości double suma=0.0; int licznik1=0, licznik2=1;
1_3. Blok programu. Zakres deklaracji { int x; Zakres zmiennej int x { float x; Zakres zmiennej Tutaj zmienna int x float x jest przesłonięta przez zmienną float x Zakres zmiennej int x { double x; Zakres zmiennej Tutaj zmienna int x double x jest przesłonięta przez zmienną double x Zakres zmiennej int x Ilustracja zasięgu zmiennych lokalnych w blokach zagnieżdżonych 1_4. Definiowanie stałych: const int MASA=40; const double EPS=1e-6; const float R=2.0F; const unsigned long DISTANCE=3000UL; Przyrostki określające format zapisu stałej liczbowej Przyrostek *) U, u UL, ul L, l F, f Format liczby całkowitej unsigned short int unsigned long int signed long int Format liczby rzeczywistej long double float *) Przyrostki można pisać małymi lub dużymi literami
1_5. Wyprowadzanie danych na ekran funkcja printf printf( k 1 k 2... k n, a 1,a 2,...a n ); k i kody formatujące dla danych, zależne od ich typu i żądanej postaci wydruku a i dane(zmienne, stałe, wyrażenia, wywołania funkcji) Uwaga: W łańcuchu formatującym może się znajdować tekst, który chcemy wyprowadzić na ekran. Kody formatujące dla argumentów funkcji printf Rodzaj argumentu i kod formatujący a/ liczby całkowite Postać wydruku %d %i %o %u %x %X dziesiętna ze znakiem dziesiętna ze znakiem ósemkowa bez znaku dziesiętna bez znaku szesnastkowa bez znaku, małe a..f szesnastkowa bez znaku, duże A..F b/ liczby rzeczywiste %e %E %f %g %G [-]d. ddd e [+/-] dd [-]d. ddd E [+/-] dd... [-]ddd. ddd... postać e lub f, zależnie od wartości postać E lub f, zależnie od wartości c/ znaki i łańcuchy %c %s %% pojedynczy znak łańcuch znaków drukuje znak % Modyfikator rozmiaru l lub L Kody dla długich typów całkowitych long, unsigned long po znaku % zawierają modyfikator l. dla typu long: % ld, dla typu unsigned long: % lu Podobnie, dla długich typów rzeczywistych double, long double, napiszemy: dla typu double: % luf dla typu long double: % Lf
1_6. Pierwszy program. Funkcja główna main Przykład Program piszący na ekranie wartości swoich zmiennych //Dyrektywy włączające zbiory nagłówkowe #nicuje <conio.h> //dla funkcji getch() #include <stdio.h> //dla funkcji printf() //Główna funkcja main()musi być w każdym programie. //Steruje ona wykonaniem programu. { int licz=100; printf( \nzmienna \ licz\ to %d, licz); double x=0.005; printf( \nzmienna \ x\ to %le, x); unsigned waga=15000; printf( \nzmienna \ waga\ to %u, waga); printf( \n%d, %lf, %u to kolejne zmienne.,licz,x,waga); getch(); Po wykonaniu programu na ekranie ukaże się następujący wydruk: Zmienna licz to 100 Zmienna x to 5.000000E-03 Zmienna waga to 15000 100, 0.005000, 15000 to kolejne zmienne.
1_7. Modyfikatory szerokości i precyzji Przykłady modyfikatorów kodów formatujących Np. %.3lf trzy miejsca po kropce dziesiętnej %8.2lf liczba rzeczywista na polu długości 8 znaków, 2 miejsca po kropce %8d liczba całkowita na polu długości 8 znaków %08d liczba całkowita na polu długości 8 znaków, wolne miejsca przed liczbą wypełnione zerami Przykład //program z modyfikatorami kodów formatujących #include<conio.h> #include<stdio.h> { double r=2.0/3.0; long x=-42580; printf("\n(1): %lf",r); printf("\n(2): %06.1lf",r); printf("\n(3): %6.2lf",r); printf("\n(4): %6.3lf",r); printf("\n(5): %6.4lf",r); printf("\n(6): %6.8lf",r); printf("\n(7): %08ld",x); printf("\n(8): %8ld",x); printf("\n(9): %.7ld",x); printf("\n(10): %8ld",x*x); printf("\n\n(11): To jest koniec wydruku."); Wydruk na ekranie po wykonaniu programu: (1): 0.666667 (2): 0000.7 (3): 0.67 (4): 0.667 (5): 0.6667 (6): 0.66666667 (7): -0042580 (8): -42580 (9): -0042580 (10): 1813056400 (11): To jest koniec wydruku.
Przykład //piszpi.cpp //pisanie liczby typu double #include<conio.h> //dla getch() #include<stdio.h> //dla printf() #include<math.h> //dla M_PI { printf("\noto rozne postacie wydruku liczby pi:\n"); printf("\n%le",m_pi); printf("\n%le",m_pi); printf("\n%.2le",m_pi); printf("\n%lf",m_pi); printf("\n%.8lf",m_pi); printf("\n%12.8lf",m_pi); printf("\n%14.8lf",m_pi); printf("\n%16.8lf",m_pi); getch(); 1.8. Wprowadzanie (czytanie) danych z klawiatury funkcja scanf scanf( k 1 k 2... k n,&z 1,&z 2,...&z n ); k i kody formatujące dla zmiennych, zależne od ich typu z i zmienne, których wartości kolejno wprowadzamy & - operator adresu zmiennej (nie wolno go pominąć!) Kody formatujące dla argumentów funkcji scanf Rodzaj argumentu i kod formatujący a/ liczby całkowite %d %u %o %x b/ liczby rzeczywiste %e lub %f Format wartości wczytywanej dziesiętna ze znakiem dziesiętna bez znaku ósemkowa bez znaku szesnastkowa bez znaku rzeczywista w dowolnej notacji c/ znaki i łańcuchy %c %s pojedynczy znak łańcuch znaków
Przykład Dialog z użytkownikiem, wykorzystujący funkcje printf oraz scanf. Wyniki działań na operandach a, b są tutaj argumentami kolejnych funkcji printf. #include <conio.h> #include <stdio.h> { double a,b; printf("\npodaj a, b: "); scanf("%lf%lf",&a,&b); printf("\nwyniki obliczen:"); printf("\n================"); printf("\n a+b=%10.3le",a+b); printf("\n a-b=%10.3le",a-b); printf("\n b-a=%10.3le",b-a); printf("\n a*b=%10.3le",a*b); printf("\n a/b=%10.3le",a/b); getch(); Po wprowadzeniu z klawiatury wartości 387.15 oraz 193.25 uzyskamy następującą postać wydruku: Podaj a, b: 387.15 193.25 Wyniki obliczen: ================ a+b= 5.804E+02 a-b= 1.939E+02 b-a=-1.939e+02 a*b= 7.482E+04 a/b= 2.003E+00