Informatyka 1. Przetwarzanie tekstów

Podobne dokumenty
Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Podstawy programowania

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Wstęp do programowania. Różne różności

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Informatyka 1. Dokumentacja programu, moduły programowe, typy tablicowe

PLIKI TEKSTOWE F C E 30 0D 0A 42 6F 72 6C 61 6E 64 1A T U R B O _ P A S C A L _ 7. 0

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Informatyka 1. Rekordy, przeszukiwanie i sortowanie tablic

Podstawy programowania

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Pascal - wprowadzenie

Programowanie RAD Delphi

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Podstawy programowania w języku C++

Podstawy programowania

Wstęp do programowania

Język programowania PASCAL

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

PASCAL Kompendium. Środowisko TURBO PASCAL Skróty klawiaturowe. Edycja kodu Pomoc spis treści. Skopiowanie zaznaczonego bloku do schowka

Podstawy programowania

2.Sprawdzanie czy podana liczba naturalna jest pierwsza Liczba pierwsza to liczba podzielna tylko przez 1 i przez siebie.

Zasady Programowania Strukturalnego

Informatyka 1. Rekordy, przeszukiwanie i sortowanie tablic

Informatyka 1. Algorytm, podstawowe notacje, typy danych i wyrażenia

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Przykład programu Rozwiązanie równania postaci:

Języki programowania obiektowego Nieobiektowe elementy języka C++

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Programowanie Delphi obliczenia, schematy blokowe

Podstawy programowania

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Wszystkie zmienne typu plikowego, z wyjątkiem Output i Input muszą być zadeklarowane w sekcji deklaracji programu, który z nich korzysta.

Wstęp do programowania. Pliki. Piotr Chrząstowski-Wachtel

Pascal. 1. Pliki tekstowe. Przykład 1.1. Zapis do pliku tekstowego

Informatyka I. Wyk lad I. Wprowadzenie. Robert Muszyński Instytut Cybernetyki Technicznej Politechnika Wroc lawska

Informatyka I. Wyk lad II Algorytm, podstawowe notacje, typy danych i wyrażenia

Programowanie w Turbo Pascal

Tablice. TYPE identyfikator tablicy = ARRAY [Indeksl,..., Indeksn] OF Typ; Dany identyfikator_ tablicy można wykorzystać w deklaracji VAR:

Podstawy Programowania

Podstawy programowania skrót z wykładów:

PLIKI. Składnia deklaracji zmiennej plikowej: file of <typ>

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Informatyka 1. Wprowadzenie

INFORMATYKA. Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki. dr inż. Michał Łanczont

Algorytmy i struktury danych. wykład 1

Algorytmy i struktury danych

Zakres wykładu INFORMATYKA. dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel

Lekcja 6: Pascal. Procedura i funkcja

Pliki. Ze względu na typ zawartych w nich danych rozróżnia się trzy podstawowe rodzaje plików:

Podstawy programowania

Referencje do zmiennych i obiektów

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Instrukcja warunkowa i wyboru

Kiedy i czy konieczne?

Delphi Laboratorium 3

Definicja: Algorytmami sortowania zewnętrznego nazywamy takie algorytmy, które sortują dane umieszczone w pamięci zewnętrznej.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

ŁAŃCUCHY W JĘZYKU C/C++

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

Ada 95 #1/5 - typy. Typy skalarne. Hierarchia typów w Adzie. Typ znakowy. Typy dyskretne. Plan wykładu

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Programowanie obiektowe

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Wprowadzenie do szablonów klas

1. Język Pascal Program

Operacje wejścia/wyjścia (odsłona druga) - pliki

Funkcje systemu Unix

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Właściwości i metody obiektu Comment Właściwości

Środowisko programisty Zestaw 7

Obsługa klawiszy specjalnych

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Materiały do laboratorium MS ACCESS BASIC

Instrukcje iteracyjne (pętle)

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

INSTRUKCJA ITERACYJNA REPEAT. repeat Instrukcja_1; Instrukcja_2; {... } Instrukcja_N; until wyr ; INSTRUKCJA ITERACYJNA WHILE

2:8,7 3:9,4 / \ / \ / \ / \ 4:7,3 5:8 6:9,2 7:4

ZMIENNE. Podstawy PHP

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Informatyka 1. Wprowadzenie

Elementy Pascala Konstrukcja programu w Pascalu Typy danych

Tablice, funkcje - wprowadzenie

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Transkrypt:

Informatyka 1 Wykład IX Przetwarzanie tekstów Robert Muszyński ZPCiR ICT PWr Zagadnienia: reprezentacja napisów znakowych, zmienne napisowe w Sun Pascalu, zgodność typów, operowanie na napisach: testowanie elementów, łączenie napisów, operacje we/wy, konwertowanie, Copyright c 2001 2003 Robert Muszyński Niniejszy dokument zawiera materiały do wykładu na temat podstaw programowania w językach wysokiego poziomu. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może być kopiowany wyłącznie w całości, razem ze stroną tytułową. Skład FoilTEX

Przetwarzanie tekstów 1 Reprezentacja napisów znakowych Tablice niepełne CONST MaxString = 20; TYPE String1 = PACKED ARRAY[1..MaxString] OF CHAR; VAR Napis1: String1; Dlug_Napis1: INTEGER;

Przetwarzanie tekstów 1 Reprezentacja napisów znakowych Tablice niepełne CONST MaxString = 20; TYPE String1 = PACKED ARRAY[1..MaxString] OF CHAR; VAR Napis1: String1; Dlug_Napis1: INTEGER; CONST MaxString = 20; TYPE String2 = RECORD Znaki: PACKED ARRAY[1..MaxString] OF CHAR; Dlugosc: INTEGER END;

Przetwarzanie tekstów 1 Reprezentacja napisów znakowych Tablice niepełne CONST MaxString = 20; TYPE String1 = PACKED ARRAY[1..MaxString] OF CHAR; VAR Napis1: String1; Dlug_Napis1: INTEGER; CONST MaxString = 20; TYPE String2 = RECORD Znaki: PACKED ARRAY[1..MaxString] OF CHAR; Dlugosc: INTEGER END; Tablice ze znacznikiem (np. chr(0)) CONST MaxString = 20; TYPE String1 = PACKED ARRAY[1..MaxString] OF CHAR;

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 }

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 } napis2: STRING; { Zmienna napisowa o rozmiarze 80 } napis3: ALFA; { Zmienna napisowa o rozmiarze 10 }

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 } napis2: STRING; { Zmienna napisowa o rozmiarze 80 } napis3: ALFA; { Zmienna napisowa o rozmiarze 10 } napis4: VARYING [25] OF CHAR; { Zmienna napisowa o zmiennym rozmiarze } { (maksymalnie 25 znakow) }

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 } napis2: STRING; { Zmienna napisowa o rozmiarze 80 } napis3: ALFA; { Zmienna napisowa o rozmiarze 10 } napis4: VARYING [25] OF CHAR; { Zmienna napisowa o zmiennym rozmiarze } { (maksymalnie 25 znakow) } napis5: ARRAY [76..100] OF CHAR; { Jeszcze jedna zmienna napisowa }

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 } napis2: STRING; { Zmienna napisowa o rozmiarze 80 } napis3: ALFA; { Zmienna napisowa o rozmiarze 10 } napis4: VARYING [25] OF CHAR; { Zmienna napisowa o zmiennym rozmiarze } { (maksymalnie 25 znakow) } napis5: ARRAY [76..100] OF CHAR; { Jeszcze jedna zmienna napisowa } napis1 := wartosc1 ; napis2 := wartosc2 ; napis3 := wartosc3 ; napis4 := wartosc4 ; napis5 := wartosc5 ;

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 } napis2: STRING; { Zmienna napisowa o rozmiarze 80 } napis3: ALFA; { Zmienna napisowa o rozmiarze 10 } napis4: VARYING [25] OF CHAR; { Zmienna napisowa o zmiennym rozmiarze } { (maksymalnie 25 znakow) } napis5: ARRAY [76..100] OF CHAR; { Jeszcze jedna zmienna napisowa } napis1 := wartosc1 ; napis2 := wartosc2 ; napis3 := wartosc3 ; napis4 := wartosc4 ; napis5 := wartosc5 ; writeln( >,napis1, < ); writeln( >,napis2, < ); writeln( >,napis3, < ); writeln( >,napis4, < ); writeln( >,napis5, < ); END.

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 } napis2: STRING; { Zmienna napisowa o rozmiarze 80 } napis3: ALFA; { Zmienna napisowa o rozmiarze 10 } napis4: VARYING [25] OF CHAR; { Zmienna napisowa o zmiennym rozmiarze } { (maksymalnie 25 znakow) } napis5: ARRAY [76..100] OF CHAR; { Jeszcze jedna zmienna napisowa } napis1 := wartosc1 ; napis2 := wartosc2 ; napis3 := wartosc3 ; napis4 := wartosc4 ; napis5 := wartosc5 ; writeln( >,napis1, < ); writeln( >,napis2, < ); writeln( >,napis3, < ); writeln( >,napis4, < ); writeln( >,napis5, < ); END. >wartosc1 <

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 } napis2: STRING; { Zmienna napisowa o rozmiarze 80 } napis3: ALFA; { Zmienna napisowa o rozmiarze 10 } napis4: VARYING [25] OF CHAR; { Zmienna napisowa o zmiennym rozmiarze } { (maksymalnie 25 znakow) } napis5: ARRAY [76..100] OF CHAR; { Jeszcze jedna zmienna napisowa } napis1 := wartosc1 ; napis2 := wartosc2 ; napis3 := wartosc3 ; napis4 := wartosc4 ; napis5 := wartosc5 ; writeln( >,napis1, < ); writeln( >,napis2, < ); writeln( >,napis3, < ); writeln( >,napis4, < ); writeln( >,napis5, < ); END. >wartosc1 < >wartosc2 < >wartosc3 <

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 } napis2: STRING; { Zmienna napisowa o rozmiarze 80 } napis3: ALFA; { Zmienna napisowa o rozmiarze 10 } napis4: VARYING [25] OF CHAR; { Zmienna napisowa o zmiennym rozmiarze } { (maksymalnie 25 znakow) } napis5: ARRAY [76..100] OF CHAR; { Jeszcze jedna zmienna napisowa } napis1 := wartosc1 ; napis2 := wartosc2 ; napis3 := wartosc3 ; napis4 := wartosc4 ; napis5 := wartosc5 ; writeln( >,napis1, < ); writeln( >,napis2, < ); writeln( >,napis3, < ); writeln( >,napis4, < ); writeln( >,napis5, < ); END. >wartosc1 < >wartosc2 < >wartosc3 < >wartosc4<

Przetwarzanie tekstów 2 Reprezentacja napisów w Sun Pascalu VAR napis1: ARRAY [1..25] OF CHAR; { Zmienna napisowa o rozmiarze 25 } napis2: STRING; { Zmienna napisowa o rozmiarze 80 } napis3: ALFA; { Zmienna napisowa o rozmiarze 10 } napis4: VARYING [25] OF CHAR; { Zmienna napisowa o zmiennym rozmiarze } { (maksymalnie 25 znakow) } napis5: ARRAY [76..100] OF CHAR; { Jeszcze jedna zmienna napisowa } napis1 := wartosc1 ; napis2 := wartosc2 ; napis3 := wartosc3 ; napis4 := wartosc4 ; napis5 := wartosc5 ; writeln( >,napis1, < ); writeln( >,napis2, < ); writeln( >,napis3, < ); writeln( >,napis4, < ); writeln( >,napis5, < ); END. >wartosc1 < >wartosc2 < >wartosc3 < >wartosc4< >wartosc5 <

Przetwarzanie tekstów 3 Zgodność typów napisowych w Sun Pascalu Zmienne napisowe są ze sobą zgodne przy następujących zastrzeżeniach: Stała napisowa przypisywana do zmiennej napisowej o stałym rozmiarze nie może być dłuższa od zmiennej;

Przetwarzanie tekstów 3 Zgodność typów napisowych w Sun Pascalu Zmienne napisowe są ze sobą zgodne przy następujących zastrzeżeniach: Stała napisowa przypisywana do zmiennej napisowej o stałym rozmiarze nie może być dłuższa od zmiennej; Przypisywanie wartości zmiennych napisowych o stałym rozmiarze jest możliwe, jeśli zmienne te są równych długości;

Przetwarzanie tekstów 3 Zgodność typów napisowych w Sun Pascalu Zmienne napisowe są ze sobą zgodne przy następujących zastrzeżeniach: Stała napisowa przypisywana do zmiennej napisowej o stałym rozmiarze nie może być dłuższa od zmiennej; Przypisywanie wartości zmiennych napisowych o stałym rozmiarze jest możliwe, jeśli zmienne te są równych długości; Jeśli napis przypisywany do zmiennej napisowej jest dłuższy od tej zmiennej, to zostaje on skrócony do długości zmiennej;

Przetwarzanie tekstów 3 Zgodność typów napisowych w Sun Pascalu Zmienne napisowe są ze sobą zgodne przy następujących zastrzeżeniach: Stała napisowa przypisywana do zmiennej napisowej o stałym rozmiarze nie może być dłuższa od zmiennej; Przypisywanie wartości zmiennych napisowych o stałym rozmiarze jest możliwe, jeśli zmienne te są równych długości; Jeśli napis przypisywany do zmiennej napisowej jest dłuższy od tej zmiennej, to zostaje on skrócony do długości zmiennej; Jeśli napis przypisywany do zmiennej napisowej o stałym rozmiarze jest krótszy do tej zmiennej, to zostaje on uzupełniony znakami spacji;

Przetwarzanie tekstów 4 Operowanie napisami w Sun Pascalu kopiowanie napisów (:=) zgodnie z regułami przedstawionymi na poprzednim slajdzie;

Przetwarzanie tekstów 4 Operowanie napisami w Sun Pascalu kopiowanie napisów (:=) zgodnie z regułami przedstawionymi na poprzednim slajdzie; określanie długości napisu (funkcja Length) zwraca aktualna długość napisu;

Przetwarzanie tekstów 4 Operowanie napisami w Sun Pascalu kopiowanie napisów (:=) zgodnie z regułami przedstawionymi na poprzednim slajdzie; określanie długości napisu (funkcja Length) zwraca aktualna długość napisu; porównywanie napisów (=, <>, <, <=, >, >=,) operatory =, <> tylko napisy równej długości;

Przetwarzanie tekstów 4 Operowanie napisami w Sun Pascalu kopiowanie napisów (:=) zgodnie z regułami przedstawionymi na poprzednim slajdzie; określanie długości napisu (funkcja Length) zwraca aktualna długość napisu; porównywanie napisów (=, <>, <, <=, >, >=,) operatory =, <> tylko napisy równej długości; dopasowywanie wzorców (funkcja Index) zwraca indeks wskazujący na pierwsze wystąpienie wzorca w napisie;

Przetwarzanie tekstów 4 Operowanie napisami w Sun Pascalu kopiowanie napisów (:=) zgodnie z regułami przedstawionymi na poprzednim slajdzie; określanie długości napisu (funkcja Length) zwraca aktualna długość napisu; porównywanie napisów (=, <>, <, <=, >, >=,) operatory =, <> tylko napisy równej długości; dopasowywanie wzorców (funkcja Index) zwraca indeks wskazujący na pierwsze wystąpienie wzorca w napisie; łączenie napisów (funkcja Concat (vel +) oraz procedura Stradd) pozwalają na kombinowanie ze sobą napisów;

Przetwarzanie tekstów 4 Operowanie napisami w Sun Pascalu kopiowanie napisów (:=) zgodnie z regułami przedstawionymi na poprzednim slajdzie; określanie długości napisu (funkcja Length) zwraca aktualna długość napisu; porównywanie napisów (=, <>, <, <=, >, >=,) operatory =, <> tylko napisy równej długości; dopasowywanie wzorców (funkcja Index) zwraca indeks wskazujący na pierwsze wystąpienie wzorca w napisie; łączenie napisów (funkcja Concat (vel +) oraz procedura Stradd) pozwalają na kombinowanie ze sobą napisów; wybieranie fragmentów napisu (funkcja Substr) zwraca wskazany fragment napisu;

Przetwarzanie tekstów 4 Operowanie napisami w Sun Pascalu kopiowanie napisów (:=) zgodnie z regułami przedstawionymi na poprzednim slajdzie; określanie długości napisu (funkcja Length) zwraca aktualna długość napisu; porównywanie napisów (=, <>, <, <=, >, >=,) operatory =, <> tylko napisy równej długości; dopasowywanie wzorców (funkcja Index) zwraca indeks wskazujący na pierwsze wystąpienie wzorca w napisie; łączenie napisów (funkcja Concat (vel +) oraz procedura Stradd) pozwalają na kombinowanie ze sobą napisów; wybieranie fragmentów napisu (funkcja Substr) zwraca wskazany fragment napisu; pomijanie wiodących znaków białych (funkcja Trim);

Przetwarzanie tekstów 5 Operowanie napisami przykłady Testowanie elementów FUNCTION MalaLitera(c: CHAR): BOOLEAN; MalaLitera := ( a <= c) AND (c <= z ) END; {MalaLitera}

Przetwarzanie tekstów 5 Operowanie napisami przykłady Testowanie elementów FUNCTION MalaLitera(c: CHAR): BOOLEAN; MalaLitera := ( a <= c) AND (c <= z ) END; {MalaLitera} FUNCTION DuzaLitera(c: CHAR): BOOLEAN; DuzaLitera := ( A <= c) AND (c <= Z ) END; {DuzaLitera}

Przetwarzanie tekstów 5 Operowanie napisami przykłady Testowanie elementów FUNCTION MalaLitera(c: CHAR): BOOLEAN; MalaLitera := ( a <= c) AND (c <= z ) END; {MalaLitera} FUNCTION DuzaLitera(c: CHAR): BOOLEAN; DuzaLitera := ( A <= c) AND (c <= Z ) END; {DuzaLitera} FUNCTION JestLitera(c: CHAR): BOOLEAN; JestLitera := MalaLitera(c) OR DuzaLitera(c) END; {JestLitera}

Przetwarzanie tekstów 5 Operowanie napisami przykłady Testowanie elementów FUNCTION MalaLitera(c: CHAR): BOOLEAN; MalaLitera := ( a <= c) AND (c <= z ) END; {MalaLitera} FUNCTION DuzaLitera(c: CHAR): BOOLEAN; DuzaLitera := ( A <= c) AND (c <= Z ) END; {DuzaLitera} FUNCTION JestLitera(c: CHAR): BOOLEAN; JestLitera := MalaLitera(c) OR DuzaLitera(c) END; {JestLitera} {...} tylko_male := TRUE; FOR i := 1 TO Length(napis) DO IF NOT MalaLitera(napis[i]) THEN tylko_male := FALSE;

Przetwarzanie tekstów 5 Operowanie napisami przykłady Testowanie elementów FUNCTION MalaLitera(c: CHAR): BOOLEAN; MalaLitera := ( a <= c) AND (c <= z ) END; {MalaLitera} FUNCTION DuzaLitera(c: CHAR): BOOLEAN; DuzaLitera := ( A <= c) AND (c <= Z ) END; {DuzaLitera} FUNCTION JestLitera(c: CHAR): BOOLEAN; JestLitera := MalaLitera(c) OR DuzaLitera(c) END; {JestLitera} Łączenie napisów VAR napis: varying [12] of char; napis := To + jest + napis. ; {...} tylko_male := TRUE; FOR i := 1 TO Length(napis) DO IF NOT MalaLitera(napis[i]) THEN tylko_male := FALSE;

Przetwarzanie tekstów 5 Operowanie napisami przykłady Testowanie elementów FUNCTION MalaLitera(c: CHAR): BOOLEAN; MalaLitera := ( a <= c) AND (c <= z ) END; {MalaLitera} FUNCTION DuzaLitera(c: CHAR): BOOLEAN; DuzaLitera := ( A <= c) AND (c <= Z ) END; {DuzaLitera} FUNCTION JestLitera(c: CHAR): BOOLEAN; JestLitera := MalaLitera(c) OR DuzaLitera(c) END; {JestLitera} Łączenie napisów VAR napis: varying [12] of char; napis := To + jest + napis. ; napis := Concat( Jezeli,napis); {...} tylko_male := TRUE; FOR i := 1 TO Length(napis) DO IF NOT MalaLitera(napis[i]) THEN tylko_male := FALSE;

Przetwarzanie tekstów 5 Operowanie napisami przykłady Testowanie elementów FUNCTION MalaLitera(c: CHAR): BOOLEAN; MalaLitera := ( a <= c) AND (c <= z ) END; {MalaLitera} FUNCTION DuzaLitera(c: CHAR): BOOLEAN; DuzaLitera := ( A <= c) AND (c <= Z ) END; {DuzaLitera} FUNCTION JestLitera(c: CHAR): BOOLEAN; JestLitera := MalaLitera(c) OR DuzaLitera(c) END; {JestLitera} Łączenie napisów VAR napis: varying [12] of char; napis := To + jest + napis. ; napis := Concat( Jezeli,napis); napis := Poczatek ; Stradd(napis, i koniec. ); {...} tylko_male := TRUE; FOR i := 1 TO Length(napis) DO IF NOT MalaLitera(napis[i]) THEN tylko_male := FALSE;

Przetwarzanie tekstów 5 Operowanie napisami przykłady Testowanie elementów FUNCTION MalaLitera(c: CHAR): BOOLEAN; MalaLitera := ( a <= c) AND (c <= z ) END; {MalaLitera} FUNCTION DuzaLitera(c: CHAR): BOOLEAN; DuzaLitera := ( A <= c) AND (c <= Z ) END; {DuzaLitera} FUNCTION JestLitera(c: CHAR): BOOLEAN; JestLitera := MalaLitera(c) OR DuzaLitera(c) END; {JestLitera} Łączenie napisów VAR napis: varying [12] of char; napis := To + jest + napis. ; napis := Concat( Jezeli,napis); napis := Poczatek ; Stradd(napis, i koniec. ); {...} tylko_male := TRUE; FOR i := 1 TO Length(napis) DO IF NOT MalaLitera(napis[i]) THEN tylko_male := FALSE; Operacje we/wy VAR napis: varying [12] of char; plik : text; {...} READLN/WRITELN(napis); READLN/WRITELN(plik,napis);

Przetwarzanie tekstów 6 FUNCTION WczytajWyraz( plik: TEXT; VAR s: String ): INTEGER; VAR c : CHAR; i : INTEGER; {wpierw pomijamy nielitery uwazajac na EOF/EOLN} c := ; {spacja nie jest litera} REPEAT WHILE ((NOT EOF(plik)) AND EOL(plik)) DO READLN(plik); IF (NOT EOF(plik)) THEN READ(plik,c) UNTIL (EOF(plik) OR JestLitera(c)); {byc moze byla to litera, wtedy zapamietujemy} IF NOT JestLitera(c) THEN i := 0 ELSE i := 1; s[1] := c; END; {czytamy tylko litery az do: EOF, EOL, lub nie-litery} WHILE (JestLitera(c) AND ((NOT EOL(plik)) AND (NOT EOF(plik)))) DO READ(plik,c); IF JestLitera(c) THEN IF i < Length[s] THEN i := i + 1; s[i] := c; END ELSE WRITELN( **Blad: przekroczona dlugosc napisu ) END; WczytajWyraz := i; END; {WczytajWyraz}

Przetwarzanie tekstów 6 FUNCTION WczytajWyraz( plik: TEXT; VAR s: String ): INTEGER; VAR c : CHAR; i : INTEGER; {wpierw pomijamy nielitery uwazajac na EOF/EOLN} c := ; {spacja nie jest litera} REPEAT WHILE ((NOT EOF(plik)) AND EOL(plik)) DO READLN(plik); IF (NOT EOF(plik)) THEN READ(plik,c) UNTIL (EOF(plik) OR JestLitera(c)); {byc moze byla to litera, wtedy zapamietujemy} IF NOT JestLitera(c) THEN i := 0 ELSE i := 1; s[1] := c; END; {czytamy tylko litery az do: EOF, EOL, lub nie-litery} WHILE (JestLitera(c) AND ((NOT EOL(plik)) AND (NOT EOF(plik)))) DO READ(plik,c); IF JestLitera(c) THEN IF i < Length[s] THEN i := i + 1; s[i] := c; END ELSE WRITELN( **Blad: przekroczona dlugosc napisu ) END; WczytajWyraz := i; END; {WczytajWyraz}

Przetwarzanie tekstów 6 FUNCTION WczytajWyraz( plik: TEXT; VAR s: String ): INTEGER; VAR c : CHAR; i : INTEGER; {wpierw pomijamy nielitery uwazajac na EOF/EOLN} c := ; {spacja nie jest litera} REPEAT WHILE ((NOT EOF(plik)) AND EOL(plik)) DO READLN(plik); IF (NOT EOF(plik)) THEN READ(plik,c) UNTIL (EOF(plik) OR JestLitera(c)); {byc moze byla to litera, wtedy zapamietujemy} IF NOT JestLitera(c) THEN i := 0 ELSE i := 1; s[1] := c; END; {czytamy tylko litery az do: EOF, EOL, lub nie-litery} WHILE (JestLitera(c) AND ((NOT EOL(plik)) AND (NOT EOF(plik)))) DO READ(plik,c); IF JestLitera(c) THEN IF i < Length[s] THEN i := i + 1; s[i] := c; END ELSE WRITELN( **Blad: przekroczona dlugosc napisu ) END; WczytajWyraz := i; END; {WczytajWyraz}

Przetwarzanie tekstów 7 Konwertowanie FUNCTION MalaNaDuza(c: CHAR): CHAR; IF ( a <= c) AND (c <= z ) THEN MalaNaDuza := CHR(ORD(c) - ORD( a ) + ORD( A )) ELSE MalaNaDuza := c END; {MalaNaDuza}

Przetwarzanie tekstów 7 Konwertowanie FUNCTION MalaNaDuza(c: CHAR): CHAR; IF ( a <= c) AND (c <= z ) THEN MalaNaDuza := CHR(ORD(c) - ORD( a ) + ORD( A )) ELSE MalaNaDuza := c END; {MalaNaDuza} PROCEDURE ZamienZnaki( VAR z1, z2: CHAR ); VAR z: CHAR; z := z1; z1 := z2; z2 := z END; {ZamienZnaki}

Przetwarzanie tekstów 7 Konwertowanie FUNCTION MalaNaDuza(c: CHAR): CHAR; IF ( a <= c) AND (c <= z ) THEN MalaNaDuza := CHR(ORD(c) - ORD( a ) + ORD( A )) ELSE MalaNaDuza := c END; {MalaNaDuza} PROCEDURE ZamienZnaki( VAR z1, z2: CHAR ); VAR z: CHAR; z := z1; z1 := z2; z2 := z END; {ZamienZnaki} PROCEDURE OdwrocNapis( VAR s: String ); VAR i: INTEGER; FOR i := 1 TO Length(s) DIV 2 DO ZamienZnaki( s[i], s[length(s) + 1 - i]); END; {OdwrocNapis}

Przetwarzanie tekstów 8 Reprezentacja napisów znakowych Reprezentacja napisów w Sun Pascalu Indeks Zgodność typów napisowych w Sun Pascalu Operowanie napisami w Sun Pascalu Operowanie napisami przykłady: testowanie elementów łączenie napisów operacje we/wy konwertowanie