WYKŁAD 1. PODSTAWY 1_1. Typy zmiennych Proste typy
Transkrypt
WYKŁAD 1. PODSTAWY 1_1. Typy zmiennych Proste typy
WYKŁAD 1. PODSTAWY 1_1. Typy zmiennych Proste typy zmiennych języka C++ Nazwa typu Rozmiar Rodzaj danych (nazwa skrócona) (bajtów) zakres wartości unsigned char signed char (char) unsigned short int (unsigned) signed short int (int) (short) unsigned long int (unsigned long) signed long int (long) float *) Znaki kodu ASCII 0 do 255 Znaki kodu ASCII –128 do +127 Liczby całkowite bez znaku 0 do 65 535 1 1 2 Liczby całkowite ze znakiem – 32 768 do + 32 767 2 4 4 4 double *) 8 long double *) 10 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; ------{ float x; ---------} ------{ double x; ---------} ---------} Zakres zmiennej int x Zakres zmiennej float x Zakres zmiennej double x Tutaj zmienna int x jest przesłonięta przez zmienną float x Zakres zmiennej int x Tutaj zmienna int 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 const const const int MASA=40; double EPS=1e-6; float R=2.0F; unsigned long DISTANCE=3000UL; Przyrostki określające format zapisu stałej liczbowej Przyrostek *) Format liczby całkowitej Format liczby rzeczywistej U, u UL , ul L,l F, f unsigned short int unsigned long int signed long int −−− −−− −−− long double float *) Przyrostki można pisać małymi lub dużymi literami 1_5. Wyprowadzanie danych na ekran – funkcja printf printf(”k1k2. . .kn”, a1,a2,...an); ki – kody formatujące dla danych, zależne od ich typu i żądanej postaci wydruku ai – 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 Postać wydruku a/ liczby całkowite %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> #include <stdio.h> //dla funkcji getch() //dla funkcji printf() //Główna funkcja main()musi być w każdym programie. //Steruje ona wykonaniem programu. int main() { int licz=100; printf(”\nZmienna \”licz\” double x=0.005; printf(”\nZmienna \”x\” to unsigned waga=15000; printf(”\nZmienna \”waga\” printf(”\n%d, %lf, %u to to %d”, licz); %lE”, x); to %u”, waga); kolejne zmienne.”,licz,x,waga); getch(); return 0; } Po wykonaniu programu na ekranie ukaże się następujący wydruk: Zmienna ”licz” Zmienna ”x” to Zmienna ”waga” 100, 0.005000, to 100 5.000000E-03 to 15000 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> int main() { 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."); return 0; } Wydruk na ekranie po wykonaniu programu: (1): (2): (3): (4): (5): (6): (7): (8): (9): (10): 0.666667 0000.7 0.67 0.667 0.6667 0.66666667 -0042580 -42580 -0042580 1813056400 (11): To jest koniec wydruku. Przykład //piszpi.cpp //pisanie liczby typu #include<conio.h> #include<stdio.h> #include<math.h> double //dla getch() //dla printf() //dla M_PI int main() { 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(); return 0; } 1.8. Wprowadzanie (czytanie) danych z klawiatury – funkcja scanf scanf(”k1k2. . .kn”,&z1,&z2,...&zn); ki – kody formatujące dla zmiennych, zależne od ich typu zi – 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 Format wartości wczytywanej a/ liczby całkowite %d %u %o %x dziesiętna ze znakiem dziesiętna bez znaku ósemkowa bez znaku szesnastkowa bez znaku b/ liczby rzeczywiste %e lub %f 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> int main() { 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(); return 0; } Po wprowadzeniu z klawiatury wartości 387.15 oraz 193.25 uzyskamy następującą postać wydruku: Podaj a, b: 387.15 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 193.25