ZAJ CIA 8. Ła cuchy znakowe
Transkrypt
ZAJ CIA 8. Ła cuchy znakowe
Metodyki i techniki programowania 1 2008/2009 ZAJ CIA 8. Ła cuchy znakowe 1. ZNAK, WYRA ENIE STAŁE, NAPIS Stała znakowa – jest to liczba całkowita. Tak stał tworzy jeden znak ujty w apostrofy np.: ‘A’. Wartoci stałej znakowej jest warto kodu ASCII. Mamy znaki graficzne i niegraficzne, którym przypisane s wartoci od 0 do 255. Sposób deklaracji: char znak; znak = ’A’; Przykładowe znaki i odpowiadajce im kody ASCII: Kod 48 49 50 Znak 0 1 2 Kod 65 66 67 Znak A B C Kod 97 98 99 Znak a b c Znaki niegraficzne mog by reprezentowane w stałych znakowych jako sekwencje specjalne, które wygldaj jak dwa znaki ale reprezentuj jeden znak: ‘\n’ – znak nowego wiersza ‘\t’ - znak tabulacji ‘\a’ - znak alarmu W funkcjach printf i scanf do wywietlania/wczytania stałej znakowej słuy format %c. Wyraenia stałe – jest to wyraenie, w którym wystpuj wyłcznie stałe. Wyraenia stałe s obliczanie na etapie kompilacji programu, a nie podczas jego działania. Przykłady deklaracji stałych: #define KURS_EURO 4.05 #define ZNAK ’a’ #define NAPIS “ania1980” Napis – ( łacuch znaków) jest to cig złoony z zera lub wicej znaków zawartych midzy znakami cudzysłowu. ”ania1980” – znaki cudzysłowu nie s czci napisu, słu jedynie do okrelenia jego granic. Napis jest tablic, której elementami s znaki. - ostatnim elementem w tablicy jest znak ‘\0’ (znak o kodzie 0), oznaczajcy koniec napisu, mgr in . Adam Id kowski 1 Metodyki i techniki programowania 1 2008/2009 - rozmiar fizycznej pamici przeznaczonej na napis jest o jeden wikszy ni liczba znaków zawartych mi dzy znakami cudzysłowu, - wikszo funkcji standardowych w j zyku C i kompilator dodaj automatycznie na kocu znak ‘\0’. ” ania1980” a n i a 1 9 8 0 \0 Uwaga: ‘A’ to jeden znak, ale ”A” to ju dwa znaki. 2. DEKLARACJA NAPISU (ŁA CUCHA ZNAKÓW) Jeli napis ma w programie by zmienn mona go zadeklarowa na 4 sposoby: a) char tab[10] = ”komputer”; Deklaracja 10-cio elementowej tablicy ze znakami. Takiej tablicy zostaje przydzielonych 10 bajtów pami ci. Je li zadeklarujemy wi kszy rozmiar tablicy ni liczba znaków napisu + 1, pozostałe komórki automatycznie zapełni si zerami. b) char tab[10] = { ’k’, ’o’, ’m’, ’p’, ’u’, ’t’, ’e’, ’r’ }; Inny, rzadko u ywany, ale poprawny sposób deklaracji. c) char * tab = ”komputer”; Deklaracja tablicy znaków za pomoc wska nika. W tym wypadku zmienna wska nikowa jak jest tab wskazuje na pocz tek ła cucha znaków. Kompilator automatycznie przydziela odpowiedni rozmiar pami ci. d) char tab[ ] = ”komputer”; W tym wypadku kompilator równie automatycznie przydziela odpowiedni rozmiar pami ci. 3. WPROWADZANIE I WYPROWADZANIE NAPISÓW printf Przykład1. Wyprowadzenie łacucha znaków na ekran char tab[20] = ”to jest tekst”; printf(”%s\n”, tab); //tekst jest wypisywany do napotkania znaku ‘\0’ printf(tab); //inny sposób mgr in . Adam Id kowski 2 Metodyki i techniki programowania 1 2008/2009 scanf Przykład 2. Wprowadzenie łacucha znaków z klawiatury char tab[20]; //scanf czyta tylko slowa a nie cale wiersze scanf(”%s”, tab); // nie musimy podawac znaku &, bo bufor jest wskaznikiem gets Funkcja gets umoliwia wprowadzenie wiersza (cigu znaków zakoczonego ‘\n’) z klawiatury i umieszcza w obszarze pamici wskazywanym przez tab zastpujc ‘\n’ znakiem ‘\0’. Przykład 3. Wprowadzenie łacucha znaków z klawiatury char tab[20]; gets(tab); printf(“Wprowadzono tekst: %s \n”, tab); puts Funkcja puts wypisuje na ekran zawarto łacucha znakowego (cig znaków zakoczony znakiem ‘\0’) zastpujc znak ‘\0’ znakiem ‘\n’. Przykład 4. Wyprowadzenie łacucha znaków na ekran char tab[20] = “to jest tekst”; puts(tab); 4. OPERACJE NA ŁA CUCHACH ZNAKÓW i ZNAKACH - FUNKCJE Przykładowe funkcje z biblioteki string.h: strlen( ) – podaje długo łacucha znaków (nie bierze pod uwag znaku ‘\0’), strcpy( ) – kopiuje jeden łacuch do drugiego, strcat( ) – łczy dwa łacuchy, strcmp( ) – porównanie dwóch łacuchów z rozrónieniem liter małych i duych, strlwr( ) – zamienia w danym łacuchu due litery na małe, strupr( ) – zamienia w danym małe litery na due, strrev( ) – odwraca kolejno liter w łacuchu. mgr in . Adam Id kowski 3 Metodyki i techniki programowania 1 2008/2009 Konwersja danych, funkcje z biblioteki stdlib.h: atof() - konwertuje łacuch znaków na liczb typu float include<stdlib.h> char tekst[50]="12.34"; float liczba; liczba=atof(tekst); atoi() - konwertuje łacuch znaków na liczb typu int include<stdlib.h> char tekst[50]="1234"; int liczba; liczba=atoi(tekst); atol() - konwertuje łacuch znaków na liczb typu long integer itoa() - konwertuje liczb integer na łacuch znaków include<stdlib.h> int liczba=123; char tekst[50]; itoa(liczba, tekst, 10); //10 oznacza dziesitny system liczenia Sprawdzanie znaku, konwersja, funkcje z biblioteki ctype.h: isalnum() – sprawdza czy to znak alfanumeryczny isalpha() – sprawdza czy to znak alfabetyczny isascii() - sprawdza czy to znak ascii isdigit() - sprawdza czy to cyfra isgraph() - sprawdza czy jest graficzny islower() – sprawdza czy to mała litera ispunct() – sprawdza czy to znak interpunkcyjny isspace() - sprawdza czy to spacja isupper() – sprawdza czy to dua litera toascii() –konwertuje znak na kod ascii tolower() – konwertuje liter na mał toupper() – konwertuje liter na du mgr in . Adam Id kowski 4 Metodyki i techniki programowania 1 2008/2009 Przykład 5. Zastosowanie powyszych funkcji #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> int main(void) { char tab1[20] = “tekst w buforze”; char tab2[20]; int dlugosc; int rozmiar; system(“cls”); // czysci ekran printf(”napis1: %s \n”, tab1); dlugosc = strlen(tab1); printf(“liczba znakow w napisie1: %d \n“, dlugosc); strupr(tab1); printf(”napis1 duzymi literami: %s \n”, tab1); strlwr(tab1); printf(”napis1 malymi literami: %s \n”,tab1); strcpy(tab2,tab1); printf(”napis2: %s \n”, tab2); strrev(tab2); printf(“napis2 odwrocony: %s \n”, tab2); getch(); } PYTANIA KONTROLNE 1. Wyjanij pojcia: stała znakowa, wyraenie stałe, stała napisowa. 2. Jak deklarujemy łacuch znaków? 3. W jaki sposób moemy wyprowadzi łacuch znaków na ekran? 4. W jaki sposób moemy wprowadzi łacuch znaków z klawiatury? 5. Do czego słu funkcje: strlen(), strcpy(), strcmp()? mgr in . Adam Id kowski 5 Metodyki i techniki programowania 1 2008/2009 ZADANIA 1. Napisz program sprawdzaj cy poprawno podawanego przez uytkownika hasła według poniszego algorytmu. Zadeklaruj tre hasła jako wyraenie stałe. Zadeklaruj tablic na podawane hasło. Porównuj podawane hasło z zadeklarowanym. Program ma sprawdza hasło a do poprawnego wpisania. W ptli skorzystaj z funkcji strcmp( ). 2. Zmodyfikuj program z zadania 1. tak aby w przypadku błdnego podania hasła za trzecim razem, program wywietlał napis ”KONTO ZABLOKOWANE” i program koczył działanie. 3. Napisz program, który wykona cztery podstawowe działania arytmetyczne na ułamkach zwykłych. Dane wejciowe moesz podawa w postaci: 13/43 itp. mgr in . Adam Id kowski 6