Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne) OPERACJE NA TEKSTACH W JĘZYKU C++ Spis treści 1. Opis stanowiska... 3 1.1. Stosowana aparatura... 3 1.2. Oprogramowanie... 3 2. Wiadomości teoretyczne... 3 2.1. Klasa string... 3 2.2. Konstruktor, destruktor i operator przypisania w klasie string... 4 2.3. Funkcje dotyczące pamięci przeznaczonej na dane... 7 2.4. Funkcje umożliwiające dostęp do pojedynczych znaków... 10 2.5. Funkcje modyfikujące teksty przechowywane w obiekcie... 11 2.6. Funkcje wykonujące operacje na tekstach w obiektach... 16 2.7. Funkcje globalne... 19 3. Przebieg ćwiczenia... 22 4. Literatura... 23 5. Zagadnienia na zaliczenie... 23 Numer ćwiczenia 6. Wymagania BHP... 23 INF31 Materiały dydaktyczne przeznaczone dla studentów Wydziału Elektrycznego PB. Autor: dr inż. Jarosław Forenc Białystok 2014 Wydział Elektryczny, Politechnika Białostocka, 2014 (wersja 1.0) Wszelkie prawa zastrzeżone. Żadna część tej publikacji nie może być kopiowana i odtwarzana w jakiejkolwiek formie i przy użyciu jakichkolwiek środków bez zgody posiadacza praw autorskich. Informatyka 2 2 z 24 Instrukcja INF31
Member constants Member functions Member functions 1. Opis stanowiska npos String operation Modifiers 1.1. Stosowana aparatura Member functions c_str data operator+= append Podczas zajęć wykorzystywany jest komputer klasy PC z systemem operacyjnym Microsoft Windows (XP/Vista/7). (constructor) (destructor) get_allocator copy push_back assign 1.2. Oprogramowanie Na komputerach zainstalowane jest środowisko programistyczne Microsoft Visual Studio 2008 Standard Edition lub Microsoft Visual Studio 2008 Express Edition zawierające kompilator Microsoft Visual C++ 2008. operator= Capacity size length max_size find rfind find_first_of find_last_of find_first_not_of insert erase replace swap 2. Wiadomości teoretyczne resize capacity find_last_not_of substr Global functions getline 2.1. Klasa string Klasa string przeznaczona jest do wykonywania operacji na tekstach. Jej zastosowanie w programie wymaga dołączenia pliku nagłówkowego string (bez.h na końcu). reserve clear empty Element access operator[] compare Iterators begin end rbegin operator+ operator<< operator>> comparison operators swap #include <string> at rend Klasa string jest częścią biblioteki standardowej. Wszystkie identyfikatory w niej występujące są zadeklarowane w przestrzeni nazw std. Dodając using namespace std; nie trzeba poprzedzać identyfikatorów kwalifikatorem zakresu std::. Rys. 1. Struktura klasy string 2.2. Konstruktor, destruktor i operator przypisania w klasie string W klasie string stosuje się standardowy sposób definiowania obiektów. #include <iostream> #include <string> using namespace std; Na Rys. 1 przedstawiono strukturę klasy string. nazwa_klasy nazwa_obiektu(argumenty konstruktora); Konstruktor tworzy obiekt klasy oraz inicjalizuje jego dane. Sposób inicjalizacji jest zależny od zastosowanej wersji konstruktora. Informatyka 2 3 z 24 Instrukcja INF31 Informatyka 2 4 z 24 Instrukcja INF31
(constructor) string(); - konstruktor domyślny (bezargumentowy), tworzy pusty ciąg znaków; cout << s1 << " " << s2 << " " << s3 << " "; cout << s4 << " " << s5 << endl; Tekst Tekst kst eks Tekst (constructor) string(const string & str); string(const char * s); (destructor) ~string(); - konstruktor inicjalizujący obiekt całym tekstem zawartym w innym obiekcie (str) lub w tablicy znaków (s); - destruktor usuwa obiekt zwalniając pamięć, która została przydzielona do przechowywania jego danych; (constructor) string(const string & str, size_t pos, size_t n = npos); - konstruktor inicjalizujący obiekt fragmentem tekstu z obiektu str, który rozpoczyna się od pozycji pos i zawiera n znaków (domyślna wartość n = npos oznacza wszystkie znaki do końca tekstu); (constructor) string(const char * s, size_t n); - konstruktor inicjalizujący obiekt fragmentem tekstu z tablicy znaków s zawierającym n znaków; (constructor) string(size_t n, char c); - konstruktor inicjalizujący obiekt poprzez wpisanie n takich samych znaków c; char tab[10] = "Tekst"; string s1(tab); // inicjalizacja tablicą znaków string s2(s1); // inicjalizacja innym obiektem klasy string string s3(s1,2,4); // inicjalizacja fragmentem tekstu z obiektu s1 string s4(tab,1,3); // inicjalizacja fragmentem tablicy tab string s5 = "Tekst"; // inicjalizacja C-stringiem operator= string & operator = (const string & str); string & operator = (const char * s); string & operator = (char c); - operator = przypisuje nową wartość ciągowi znaków, który jest przechowywany w obiekcie; - po prawej stronie operatora może znajdować się inny obiekt klasy string (str), tablica znaków (s) lub jeden znak (c); string s("abcdef"); string s1, s2, s3; s1 = s; // przypisanie innego obiektu klasy string s2 = "123456"; // przypisanie tablicy znaków s3 = 'a'; // przypisanie jednego znaku cout << "s: " << s << endl; cout << "s1: " << s1 << endl; cout << "s2: " << s2 << endl; cout << "s3: " << s3 << endl; s: ABCDEF s1: ABCDEF s2: 123456 s3: a Informatyka 2 5 z 24 Instrukcja INF31 Informatyka 2 6 z 24 Instrukcja INF31
2.3. Funkcje dotyczące pamięci przeznaczonej na przechowywane dane size() size_t size(); - funkcja size() zwraca liczbę znaków w obiekcie (długość łańcucha znaków); string str("12345678"); size_t d = str.size(); cout << "Dlugosc = " << d << endl; Dlugosc = 8 length() size_t length(); - funkcja length() działa tak samo jak funkcja size() - zwraca liczbę znaków w obiekcie (długość łańcucha znaków); string str("12345678"); size_t d = str.length(); cout << "Dlugosc = " << d << endl; string str; cout << str.max_size() << endl; 4294967294 resize() void resize(size_t n); void resize(size_t n, char c); - funkcja resize() zmienia długość tekstu przechowywanego w obiekcie na n znaków; - jeśli n jest mniejsze niż aktualna długość tekstu, to skraca tekst pozostawiając tylko n pierwszych znaków; - jeśli n jest większe niż aktualna długość tekstu, to dodaje na końcu miejsce na nowe znaki; miejsce to wypełniane jest znakiem c lub (jeśli nie został on podany) bajtem zerowym (znakiem null - \0 ); string s("123456789"); cout << s << endl; s.resize(5); cout << s << endl; s.resize(15,'*'); cout << s << endl; Dlugosc = 8 max_size() size_t max_size(); 123456789 12345 12345********** - funkcja max_size() zwraca maksymalną liczbę znaków, które mogą być przechowywane w obiekcie; - liczba ta wynika z ograniczeń implementacyjnych klasy string lub ograniczeń systemowych; capacity() size_t capacity(); - funkcja capacity() zwraca bieżący rozmiar zarezerwowanej pamięci do przechowywania tekstu w obiekcie; - zarezerwowana pamięć może być równa lub większa od liczby znaków aktualnie przechowywanych w obiekcie; większa liczba znaków umożliwia optymalizację operacji podczas dodawania nowych znaków; Informatyka 2 7 z 24 Instrukcja INF31 Informatyka 2 8 z 24 Instrukcja INF31
string str("12345678"); cout << str.capacity() << endl; 0-><- 15 reserve() void reserve(size_t n=0); - funkcja reserve() żąda zarezerwowania określonego rozmiaru pamięci do przechowywania tekstu w obiekcie; - argument n określa minimalny rozmiar, który będzie zarezerwowany (w rzeczywistości może on być większy); string str; str.reserve(100); cout << str.capacity() << endl; 2.4. Funkcje umożliwiające dostęp do pojedynczych znaków tekstu at() char & at(size_t pos); - funkcja at() umożliwia odwołanie do znaku o indeksie pos przechowywanym w obiekcie (znaki numerowane są od 0); - błędnie podany indeks powoduje wystąpienie wyjątku out_of_range; string str("napis testowy"); for (int i=0; i<str.size(); i++) cout << str.at(i); Napis testowy 111 operator[] char & operator [ ] (size_t pos); empty() bool empty(); - funkcja empty() zwraca wartość true jeśli obiekt jest pusty (liczba znaków tekstu wynosi 0); clear() void clear(); - funkcja clear() usuwa tekst przechowywany w obiekcie; - operator [ ] umożliwia odwołanie do znaku o indeksie pos przechowywanym w obiekcie (znaki numerowane są od 0); - nie przeprowadza kontroli poprawności indeksu pos; string str("napis testowy"); for (int i=0; i<str.size(); i++) cout << str[i]; Napis testowy string str("12345678"); if (!str.empty()) str.clear(); cout << str.size() << "->" << str << "<-" << endl; Informatyka 2 9 z 24 Instrukcja INF31 Informatyka 2 10 z 24 Instrukcja INF31
2.5. Funkcje modyfikujące tekst przechowywany w obiekcie append() string & append(size_t n, char c); operator += string & operator += (const string & str); string & operator += (const char * s); string & operator += (char c); - w tej wersji funkcja append() rozszerza istniejący tekst dodając na jego końcu n takich samych znaków c; - operator += rozszerza istniejący tekst dodając na jego końcu tekst z obiektu str, tekst z tablicy s (do znaku \0 ) lub znak c; string str("dane: "); string imie("jan "); str += imie; str += "Kowalski"; str += '\n'; cout << str; string s1("abc"), s2("123"); char s[10]="abcdef"; cout << s1 << endl; s1.append(s2); cout << s1 << endl; s1.append(s,4); cout << s1 << endl; s1.append(3,'@'); cout << s1 << endl; abc abc123 abc123abcd abc123abcd@@@ Dane: Jan Kowalski append() string & append(const string & str); string & append(const char * s); - funkcja append() rozszerza istniejący tekst dodając na jego końcu tekst z obiektu str lub tekst znajdujący się w tablicy s (do znaku \0 ); append() string & append(const string & str, size_t pos, size_t n); - w tej wersji funkcja append() rozszerza istniejący tekst dodając na jego końcu n znaków z obiektu str począwszy od pozycji pos; append() string & append(const char * s, size_t n); - w tej wersji funkcja append() rozszerza istniejący tekst dodając na jego końcu n pierwszych znaków znajdujących się w tablicy znaków s; push_back() void push_back(char c); - funkcja push_back() wstawia znak c na końcu tekstu, który jest przechowywany w obiekcie; string str("abc"); str.push_back('@'); cout << str << endl; abc@ assign() string & assign(const string & str); string & assign(const char * s); string & assign(const string & str, size_t pos, size_t n); string & assign(const char * s, size_t n); string & assign(size_t n, char c); Informatyka 2 11 z 24 Instrukcja INF31 Informatyka 2 12 z 24 Instrukcja INF31
- funkcja assign() zastępuje istniejący tekst nowym tekstem; - znaczenie wszystkich parametrów jest takie samo jak w funkcji append(); insert() string & insert(size_t pos, const string & str, size_t subpos, size_t subn); string s1("abc"), s2("123"); char s[10]="abcdef"; cout << s1 << endl; s1.assign(s2); cout << s1 << endl; s1.assign(s,4); cout << s1 << endl; s1.assign(3,'@'); cout << s1 << endl; abc 123 ABCD @@@ - w tej wersji funkcja insert() z obiektu str kopiuje subn znaków począwszy od pozycji subpos i wstawia do obiektu począwszy od miejsca określonego przez pos; erase() string & erase(size_t pos = 0, size_t n = npos); - funkcja erase() kasuje n znaków począwszy od pozycji pos; - npos oznacza wszystkie znaki do końca; insert() string & insert(size_t pos, const string & str); string & insert(size_t pos, const char *s); string str("123456789"); str.erase(3,2); cout << str << endl; str.erase(4); cout << str << endl; str.erase(); cout << str << endl; - funkcja insert() kopiuje wszystkie znaki z obiektu str lub z tablicy s i wstawia do obiektu począwszy od miejsca określonego przez pos; 1236789 1236 insert() string & insert(size_t pos, const char *s, size_t n); - w tej wersji funkcja insert() z tablicy znaków s kopiuje n pierwszych znaków i wstawia do obiektu począwszy od miejsca określonego przez pos; insert() string & insert(size_t pos, size_t n, char c); - w tej wersji funkcja insert() wstawia do obiektu n znaków c począwszy od miejsca określonego przez pos; replace() string & replace(size_t pos, size_t n, const string & str); string & replace(size_t pos, size_t n, const char * s); - funkcja replace() z tekstu przechowywanego w obiekcie usuwa n znaków znajdujących się od pozycji pos i wstawia w ich miejsce cały tekst z obiektu str lub z tablicy s; string str1("abcdefghijk"), str2("12345"); str1.replace(3,2,str2); cout << str1 << endl; abc12345fghijk Informatyka 2 13 z 24 Instrukcja INF31 Informatyka 2 14 z 24 Instrukcja INF31
replace() string & replace(size_t pos, size_t n, const string & str, size_t subpos, size_t subn); - w tej wersji funkcja replace() z tekstu przechowywanego w obiekcie usuwa n znaków znajdujących się od pozycji pos i wstawia w ich miejsce subn znaków z obiektu str znajdujących się od pozycji subpos; string str1("abcdefghijk"), str2("12345"); str1.replace(3,2,str2,2,3); cout << str1 << endl; abc345fghijk replace() string & replace(size_t pos, size_t n, const char * s, size_t subn); - w tej wersji funkcja replace() z tekstu przechowywanego w obiekcie usuwa n znaków znajdujących się od pozycji pos i wstawia w ich miejsce subn znaków z tablicy s; string str("abcdefghijk"); char s[] = "12345"; str.replace(3,2,s,3); cout << str << endl; abc123fghijk replace() string & replace(size_t pos, size_t n, size_t nc, char c); - w tej wersji funkcja replace() z tekstu przechowywanego w obiekcie usuwa n znaków znajdujących się od pozycji pos i wstawia w ich miejsce nc znaków c; string str("abcdefghijk"); str.replace(3,2,4,'@'); cout << str << endl; abc@@@@fghijk swap() void swap(string & str); - funkcja swap() wymienia tekst z obiektem str; string s1("12345"), s2("abc"); cout << "s1: " << s1 << " s2: " << s2 << endl; s1.swap(s2); cout << "s1: " << s1 << " s2: " << s2 << endl; s1: 12345 s2: ABC s1: ABC s2: 12345 2.6. Funkcje wykonujące operacje na tekstach w obiektach c_str() const char * c_str(); - funkcja c_str() zwraca wskaźnik do tablicy znaków (C-string) zakończonej znakiem \0 zawierającej tekst przechowywany w obiekcie; string str("abc 123"); char *s; s = new char[str.size()+1]; strcpy(s,str.c_str()); printf("%s\n",s); delete [] s; ABC 123 Informatyka 2 15 z 24 Instrukcja INF31 Informatyka 2 16 z 24 Instrukcja INF31
data() const char * data(); - funkcja data() zwraca wskaźnik do tablicy znaków zawierającej tekst przechowywany w obiekcie (nie dodaje \0 na końcu); copy() size_t copy(char * s, size_t n, size_t pos = 0); - funkcja copy() z tekstu przechowywanego w obiekcie kopiuje n znaków począwszy od pozycji pos, a następnie zapisuje te znaki w tablicy s; - na końcu tablicy s nie jest dodawany znak \0 ; - funkcja zwraca liczbę faktycznie przekopiowanych znaków; - funkcja rfind() działa tak samo jak find(), ale szuka ostatniego wystąpienia zawartości innego obiektu (str), tablicy znaków (s) lub pojedynczego znaku (c); substr() string substr (size_t pos = 0, size_t n = npos); - funkcja substr() zwraca obiekt klasy string zawierający n znaków tekstu począwszy od pozycji pos; string s1("123456789"), s2; s2 = s1.substr(5,3); cout << "s2: " << s2 << endl; find() size_t find(const string & str, size_t pos = 0); size_t find(const char * s, size_t pos, size_t n); size_t find(const char * s, size_t pos = 0); size_t find(char c, size_t pos = 0); 678 compare() int compare(const string & str); int compare(const char * s) - funkcja find() szuka w tekście przechowywanym w obiekcie zawartości innego obiektu (str), tablicy znaków (s) lub pojedynczego znaku (c); - zwraca pozycję pierwszego znaku zawierającego poszukiwaną zawartość; - pos określa pozycję, od której rozpoczyna się poszukiwanie, zaś n - liczbę poszukiwanych znaków; - jeśli zawartość nie została znaleziona, to funkcja find() zwraca wartość npos; rfind() size_t rfind(const string & str, size_t pos = npos); size_t rfind(const char * s, size_t pos, size_t n); size_t rfind(const char * s, size_t pos = npos); size_t rfind(char c, size_t pos = npos); - funkcja compare() porównuje tekst przechowywany w obiekcie z zawartością innego obiektu (str) lub tablicy znaków (s); - teksty są porównywane według porządku alfabetycznego z rozróżnianiem wielkich i małych liter; - wynikiem porównania jest wartość: o 0 - jeśli teksty są takie same; o -1 - jeśli tekst występuje wcześniej (według porządku alfabetycznego) niż tekst w obiekcie (str) lub tablicy znaków (s); o 1 - jeśli tekst występuje później (według porządku alfabetycznego) niż tekst w obiekcie (str) lub tablicy znaków (s); Informatyka 2 17 z 24 Instrukcja INF31 Informatyka 2 18 z 24 Instrukcja INF31
string s1("kowalski"); string s2("nowak"); string s3("kowal"); cout << "Kowalski - Nowak: " << s1.compare(s2) << endl; cout << "Nowak - Kowalski: " << s2.compare(s1) << endl; cout << "Nowak - Nowak: " << s2.compare(s2) << endl; cout << "Kowalski - Kowal: " << s1.compare(s3) << endl; Kowalski - Nowak: -1 Nowak - Kowalski: 1 Nowak - Nowak: 0 Kowalski - Kowal: 1 operator + string operator + (const string & lhs, const string & rhs); string operator + (const string & lhs, const char * rhs); string operator + (const char * lhs, const string & rhs); string operator + (const string & lhs, char rhs); string operator + (char lhs, const string & rhs); - przeładowany operator + tworzy i zwraca nowy obiekt zawierający znaki lewego (lhs), a następnie prawego (rhs) argumentu operatora; - jako argument operatora może występować inny obiekt klasy string, tablica znaków lub jeden znak; compare() int compare(size_t pos, size_t n, const string & str); int compare(size_t pos, size_t n, const string & str, size_t subpos, size_t subn); - w tej wersji funkcja compare() porównuje fragment tekstu rozpoczynający się od pozycji pos i zajmujący n znaków z zawartością całego innego obiektu (str) lub jego fragmentu, rozpoczynającego się od pozycji subpos i zajmującego subn znaków; compare() int compare(size_t pos, size_t n, const char * s); int compare(size_t pos, size_t n, const char * s, size_t m); - w tej wersji funkcja compare() porównuje fragment tekstu rozpoczynającego się od pozycji pos i zajmującego n znaków z zawartością całej innej tablicy znaków (s) lub jej pierwszych m znaków; 2.7. Funkcje globalne string file("data.txt"); string dir("doc"); string drive("c:"); string path; path = drive + '\\' + dir + '\\' + file; cout << path << endl; C:\DOC\data.txt operator == < <=!= > >= bool operator == (const string & lhs, const string & rhs); bool operator == (const char * lhs, const string & rhs); bool operator == (const string & lhs, const char * rhs); - przeładowane operatory relacyjne umożliwiają porównywanie tekstu znajdującego się w obiekcie klasy string z innym obiektem tej klasy lub z tablicą znaków; - jeśli warunek jest prawdziwy operator zwraca wartość true, w przeciwnym przypadku - wartość false; swap() void swap(string & x, string & y); - funkcja swap() zamienia miejscami teksty przechowywane w obiektach x i y; Informatyka 2 19 z 24 Instrukcja INF31 Informatyka 2 20 z 24 Instrukcja INF31
operator<< ostream & operator << (ostream & os, const string & str); 3. Przebieg ćwiczenia - przeładowanie operatora << umożliwia wstawienie do strumienia (wyświetlenie) tekstu przechowywanego w obiekcie str; operator>> istream & operator >> (istream & is, string & str); - przeładowanie operatora >> umożliwia pobranie danych ze strumienia i wstawienie ich do obiektu str; - stosując operator >> nie można wczytać tekstu zawierającego spacje, gdyż są one stosowane jako separatory wczytywanych danych (podobnie jak tabulacja i enter); getline() istream & getline(istream & is, string & str, char delim); istream & getline(istream & is, string & str); - funkcja getline() pobiera znaki ze strumienia is i zapisuje je w obiekcie str; - znaki są pobierane do wystąpienia znaku delim (pierwszy wariant) lub znaku nowej linii \n (drugi wariant); - funkcja getline() umożliwia zatem wczytanie tekstu zawierającego spacje; string name; cout << "Podaj swoje imie: "; getline(cin,name); cout << "Witaj " << name << endl; Podaj swoje imie: Jan Witaj Jan Na pracowni specjalistycznej należy wykonać wybrane zadania wskazane przez prowadzącego zajęcia. W różnych grupach mogą być wykonywane różne zadania. 1. Napisz program zawierający funkcję, do której przekazywany jest obiekt klasy string. Funkcja powinna usunąć wszystkie spacje zawarte w tekście przechowywanym w tym obiekcie. 2. Napisz program zawierający funkcję, do której przekazywany jest obiekt klasy string. Funkcja powinna sprawdzić, czy tekst przechowywany w tym obiekcie jest palindromem. Przykładowe palindromy: - A to idiota - Na morele Roman - Ada jodu dojada - Tu armata tam raut - Nago pogna twa baba w tango pogan 3. Napisz program zawierający funkcję, do której przekazywany jest obiekt klasy string. Funkcja powinna wyświetlić tekst przechowywany w stringu w taki sposób, aby każdy wyraz znalazł się w oddzielnym wierszu. Uwaga: pomiędzy wyrazami może znajdować się więcej niż jedna spacja. Przykład: Tekst: Wydruk: Ala ma kota Ala ma Kota Informatyka 2 21 z 24 Instrukcja INF31 Informatyka 2 22 z 24 Instrukcja INF31
4. Literatura [1] Grębosz J.: Symfonia C++ standard: programowanie w języku C++ orientowane obiektowo. Tom 1 i 2. Wydawnictwo Edition 2000, Kraków, 2008. [2] Stroustrup B.: Programowanie. Teoria i praktyka z wykorzystaniem C++. Wydanie II poprawione. Helion, Gliwice, 2013. [3] Eckel B.: Thinking in C++. Edycja polska. Helion, Gliwice, 2002. [4] Prata S.: Język C++. Szkoła programowania. Wydanie VI. Helion, Gliwice, 2012. [5] http://www.cplusplus.com/reference/string/string - C++ Reference - class string 5. Zagadnienia na zaliczenie 1. Wyjaśnij, czym różni się sposób przechowywania ciągu znaków w obiekcie klasy string i w tablicy znaków (C-stringu). 2. Opisz sposoby inicjalizacji obiektów klasy string. 3. Wyjaśnij, w jaki sposób można porównywać ze sobą zawartość dwóch obiektów klasy string. 6. Wymagania BHP Warunkiem przystąpienia do praktycznej realizacji ćwiczenia jest zapoznanie się z instrukcją BHP i instrukcją przeciw pożarową oraz przestrzeganie zasad w nich zawartych. W trakcie zajęć laboratoryjnych należy przestrzegać następujących zasad. - Sprawdzić, czy urządzenia dostępne na stanowisku laboratoryjnym są w stanie kompletnym, nie wskazującym na fizyczne uszkodzenie. - Jeżeli istnieje taka możliwość, należy dostosować warunki stanowiska do własnych potrzeb, ze względu na ergonomię. Monitor komputera ustawić w sposób zapewniający stałą i wygodną obserwację dla wszystkich członków zespołu. - Sprawdzić prawidłowość połączeń urządzeń. - Załączenie komputera może nastąpić po wyrażeniu zgody przez prowadzącego. - W trakcie pracy z komputerem zabronione jest spożywanie posiłków i picie napojów. - W przypadku zakończenia pracy należy zakończyć sesję przez wydanie polecenia wylogowania. Zamknięcie systemu operacyjnego może się odbywać tylko na wyraźne polecenie prowadzącego. - Zabronione jest dokonywanie jakichkolwiek przełączeń oraz wymiana elementów składowych stanowiska. - Zabroniona jest zmiana konfiguracji komputera, w tym systemu operacyjnego i programów użytkowych, która nie wynika z programu zajęć i nie jest wykonywana w porozumieniu z prowadzącym zajęcia. - W przypadku zaniku napięcia zasilającego należy niezwłocznie wyłączyć wszystkie urządzenia. - Stwierdzone wszelkie braki w wyposażeniu stanowiska oraz nieprawidłowości w funkcjonowaniu sprzętu należy przekazywać prowadzącemu zajęcia. - Zabrania się samodzielnego włączania, manipulowania i korzystania z urządzeń nie należących do danego ćwiczenia. - W przypadku wystąpienia porażenia prądem elektrycznym należy niezwłocznie wyłączyć zasilanie stanowiska. Przed odłączeniem napięcia nie dotykać porażonego. Informatyka 2 23 z 24 Instrukcja INF31 Informatyka 2 24 z 24 Instrukcja INF31