ANSI C 9

ANSI C 9



4 FUNKCJE I STRUKTURA PROGRAMU

4 FUNKCJE I STRUKTURA PROGRAMU


Wprowadzenie

Na początku opracujemy i napiszemy program wypisujący każdy wiersz wejściowy, w którym występuje określony „wzorzec”, czyli pewien ciąg znaków. (Jest to szczególny przypadek usługowego programu grep z systemu Unix.) Na przykład wyszukanie wzorca liter „nie” w zbiorze wierszy:

W co się bawić - w co się bawić? gdy komis każdy sprzeda ci niewidkę czapkę i nawet ślepa babka grać przestanie w klasy, a klasy dawno już nie grają w ślepą babkę.’

spowoduje wypisanie następujących wierszy:

gdy komis każdy sprzeda ci niewidkę czapkę i nawet ślepa babka grać przestanie w klasy, a klasy dawno już nie grają w ślepą babkę.

Zasadniczą strukturę zadania da się podzielić zręcznie na trzy części:

while (istnieje następny wiersz) if (wiersz zawiera wzorzec) wypisz ten wiersz

Można oczywiście wszystkie te części umieścić w main, lepiej jest jednak skorzystać z naturalnej struktury zadania i z każdej z nich utworzyć osobną funkcję. Trzema małymi kawałkami łatwiej się posługiwać niż jednym dużym: w funkcjach można ukryć nieistotne szczegóły; także prawdopodobieństwo niezamierzonych wzajemnych oddziaływań jest minimalne. Poza tym utworzone funkcje mogą być przydatne do innych celów.

„Dopóki (while) istnieje następny wiersz” to po prostu getline - funkcja, którą napisaliśmy w rozdz. 1. „Wypisz ten wiersz” to funkcja printf, którą ktoś kiedyś dla nas przygotował. Musimy więc napisać jedynie tę funkcję, która zadecyduje, czy wier$zawiera wzorzec. 1

4.1 WPROWADZENIE

Aby rozwiązać ten problem, napiszemy funkcję strindex(s,t) zwrftagącsr pozyćjf (numer) znaku tekstu zawartego w s, od której rozpoczyna się ciąg znaków t. Ze względu na to, że początkową pozycją w tablicach języka C jest zero, poprawny numer może być równy zero albo dodatni, a zatem wartość ujemna, np. -1, jest wygodnym sygnałem sytuacji awaryjnej. Kiedy w przyszłości będziemy potrzebować bardziej wyrafinowanej metody dopasowywania wzorca, będziemy musieli wymienić jedynie funkcję strindex; reszta programu pozostanie ta sama. (W bibliotece standardowej występuje funkcja strstr, która jest podobna do naszej strindex z tym, że zamiast numeru zwraca wskaźnik.)

Mając do dyspozycji tak opisany projekt, wypełnienie programu szczegółami jest już proste. Podajemy go w całości, możesz więc zobaczyć, jak jego części ze sobą współpracują. Na razie wyszukiwany wzorzec jest dosłownym napisem, co nie jest zbyt ogólnym mechanizmem. Wrócimy wkrótce do dyskusji o inicjowaniu tablic znakowych, a w rozdz. 5 pokażemy, co należy zrobić, aby wzorzec stał się parametrem, to znaczy aby mógł być ustalany przy uruchamianiu programu. Prezentujemy tu także nieznacznie zmienioną wersję funkcji getline; porównanie jej z pierwszą wersją (z rozdz. 1) może być pouczające.

#include <stdio.h>

#define MAXLINE 1000 /1 maksymalna długość wiersza 1/

int getline(char line[], int max);

int strindex(char sourcef], char searchfor[]);

char patternf ] = "nie”; /1 szukany wzorzec 1/

/1 wypisz wszystkie wiersze zawierające wzorzec 1/

main()

{

char line[MAXLINEJ;

int found = 0;

while (getline(line, MAXLINE) > 0) if (strindex(line, pattern) >= 0) {

printf(”%s”, linę); found-H-;

}

return found; /1 podaj liczbę znalezionych wierszy 1/

}


Mi sio!

powered by


101

1

Jest to fragment piosenki Wojciecha Młynarskiego. - Przyp. tłum.


Wyszukiwarka

Podobne podstrony:
ANSI C 9 4 FUNKCJE I STRUKTURA PROGRAMU gdyż słowo register w deklaracjach nadliczbowych czy też n
ANSI C 0 4 FUNKCJE I STRUKTURA PROGRAMU /* getline: wczytaj wiersz do tablicy s; podaj jego długoś
ANSI C 1 4 FUNKCJE I STRUKTURA PROGRAMU wykonywalnego pliku zwanego a.out. Jeśli wystąpi błąd, np.
ANSI C 2 4 FUNKCJE I STRUKTURA PROGRAMU Deklaracja double sum, atof(char[ ]); mówi, że zmienna sum
ANSI C 3 4 FUNKCJE I STRUKTURA PROGRAMU rozwagą, ponieważ mogą niekorzystnie wpływać na strukturę
ANSI C 4 4 FUNKCJE I STRUKTURA PROGRAMU Funkcja main jest pętlą zawierającą ogromną instrukcję swi
ANSI C 5 4 FUNKCJE I STRUKTURA PROGRAMU_________^ Zmienna jest zewnętrzna, jeśli zdefiniowano ją n
ANSI C 6 4 FUNKCJE I STRUKTURA PROGRAMU_________._—---- W bibliotece standardowej występuje funkcj
ANSI C 7 4 FUNKCJE I STRUKTURA PROGRAMU _________ Rozróżnienie deklaracji zmiennej zewnętrznej i j
ANSI C 8 4 FUNKCJE I STRUKTURA PROGRAMU Jest jeszcze jedna rzecz, o którą należy się zatroszczyć -
ANSI C 0 4 FUNKCJE I STRUKTURA PROGRAMU-------------- zamiast int Iow, high, mid; Iow = 0; high =
ANSI C 1 4 FUNKCJE I STRUKTURA PROGRAMU I* qsort: uporządkuj v[left]...v[right] rosnąco */ void qs
ANSI C 2 4 FUNKCJE I STRUKTURA PROGRAMU Jeśli wstawiany plik zostanie zmieniony, to naturalnie wsz
ANSI C 3 4 FUNKCJE I STRUKTURA PROGRAMU zostanie rozwinięte w wiersz printf(Mx/yM ” = %g

ANSI C 9 6 STRUKTURY 6 STRUKTURYTablice struktur Napiszmy program zliczający wystąpienia każdego s
Scan9 Do analizy programu wykonującego funkcje logiczne zapisanego w formie STL przydatne mogą być
ANSI C 4 SKOROWIDZ cat, program 214, 216 CC, kompilator C 24, 103 ceil, funkcja standardowa 3
Jako zadanie „rozgrzewkowe”, napiszemy prostą funkcję wypisującą strukturę grafu na standardowe
Poznaj C++ w$ godziny0035 Program w C++ 19Funkcje ■ain() jest funkcją specjalną. Jest automatycznie

więcej podobnych podstron