русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Короткі теоретичні відомості


Дата додавання: 2014-11-28; переглядів: 873.


1. Поняття символу. Під символом ми розуміємо букву, цифру та інші знаки. Рядок - це послідовність символів. В рядках зберігається текстова інформація.

Задачі вводу, обробки, аналізу та виводу символьної інформації належать до найбільш поширених задач комп’ютерних інформаційних технологій. Текстові дані є важливою складовою практично кожної програми. Від коректно організованих задач обробки текстової інформації в значній мірі залежить якість і практична цінність програми.

Практичне значення має задача аналізу символів в текстовій інформації, в залежності від деяких умов. З її допомогою можна виявити чи є символ буквою, цифрою чи розділовим знаком. Такого роду перевірки можуть виявитися корисними при вводі цифрової (наприклад, банківської) або текстової інформації, а також при розробці власних функцій введення даних. Розглянуто також задачу пошуку і виділення слів (лексем) у фразах.

В мові С для зберігання окремих символів використовується тип даних char.Раніше було сказано, що тип char це цілочисельний тип. Як же він може описувати змінні символьного типу. На це питання можна відповісти, розглянувши представлення символьної інформації в комп’ютері. В пам’яті комп’ютера всі дані зберігаються в числовій формі, тобто кожному символу відповідає числовий код.

Сукупність кодів окремих символів утворює код ASCII (American Standard Code for Information interchange - американський стандартний код обміну інформацією). В цьому наборі буквам верхнього і нижнього регістрів, цифрам та іншим символам ставиться у відповідність число від 0 до 255.

Наприклад маленька латинськабукваaпредставлена числом 97. Поміщуючи символ a в змінну типу char, мифактично поміщаємо число 97. Оскільки діапазон допустимих значень змінної даного типу від 0 до 255, то цей тип найбільше підходить до зберігання символів. Оскільки змінна типу charзберігає як цілі числа так і символи, то їх розрізняють по контексту.

- кщо змінна типу char використовується в програмі, де очікується символьна інформація, то її значення інтерпретується як символ.

- Якщо змінна типу charвикористовується в програмі, де очікується числова інформація, то її значення інтерпретується як число.

2. Опис символів. Змінні символьного типу повинні бути описані до їх використання. Вони описуються за допомогою службового слова char. Синтаксис опису:

char a, b, c;

При описі змінні символьного типу можна задавати. Змінні символьного типу задаються в одиничних лапках.

char d=’x’; /* при описі */

d=’x’; /* оператор присвоєння */

Можна створювати іменовані символічні константи

const char a=’z’;

Для задання констант також використовуються одиничні лапки.

Приклад програми для виводу змінної c1 в виді числа і в виді символу

printf(«%с», с1); /* вивід змінної с1 як символу */

printf(«%d», с1); /* вивід змінної с1 як числа */

3. Масиви символів.Рядки, які є послідовністю символів, задаються масивами символів. Синтаксис опису масиву символів::

char string[10];

В цьому масиві можна зберігати дев’ять символів можна зберігати і менше символів. Чому в масиві, який містить 10 елементів, можна зберігати 9 символів.? В мові С рядки визначаються як послідовність символів, що закінчується нульовим символом. Нульовий символ - це спеціальний символ, який позначається \0. Хоч він записується в виді двох знаків (оберненої риски і 0) компілятор сприймає його як один символ, що відповідає коду ASCII ‘0’. Це є спеціальний символ мови С. В чому ж різниця між рядками і масивами символів? По означенню рядок –це послідовність символів з завершуючим символом \0Масив по означенню являє собою послідовність символів. Тому рядок –це масив символів з завершуючим нульовим символом.

Наприклад в рядку

fghhjkg є 7 символів і ще нульовий символ \0 всього вісім.

4. Задання символьних масивів.Масиви можуть задаватися при описі.

сhar r[10]={‘a’,’b’,’c’,’d’,‘\0’}; але вигідніше використовувати рядкові літерали, тобто послідовності символів в подвійних лапках.

char r[10]=’’abcd’’;

Кожний раз, коли в програмі використовується рядковий літерал, компілятор автоматично додає нульовий символ в кінець рядка. Якщо при описі і заданні масиву символів опустити його довжину, то компілятор сам порахує довжину масиву по довжині літералу

char r[]=’’abcd’’; Цей рядок – це+ масив з 5-ти елементів.

5. Вивід символів за допомогою функції putchar(). Функція призначена для виводу символів на екран. Прототип функції знаходиться в бібліотечному файлі stdio.h і має вид

int putchar(int c);

Вона записує символ св потік stdout. Хоч в прототипі аргумент має цілий тип, в функцію треба посипати аргумент символьного типу. Можна передавати і значення цілого типу, якщо воно не виходить за діапазон 0-255. Функція повертає записаний символ або EOF у випадку помилки.

6. Функція puts().Бібліотечна функція виводить рядок тексту на екран. Єдиним її аргументом є вказівник на рядок, який треба вивести. Оскільки літеральні рядки інтерпретуютьсякомпілятором як вказівники на рядки, функція puts()може виводити як змінні рядкового типу char r[10]={‘a’,’b’,’c’,’d’, ‘\0’};, так і літерали char r[10]=’’abcd’’; Синтаксис

int puts(char *r).Аргументом є вказівник на перший символ рядка. Вона виводить весь рядок, крім завершуючого символу, додаючи в кінці символ кінця рядка. Функція повертає додатне значення при успішному виводі, або EOF в випадку помилки EOF – це це символічна константа, яка визначена в файлі stdio.hі рівна -1.

Після кожного виведеного рядка функція переходить на новий

7. Функція printf() для виводу символьної інформації.Рядки можна виводити за допомогою функції printf(). Для виводу рядка використовується специфікація формату %s. Аргументом є вказівника на рядок типу char. Рядок виводиться на екран, до тих пір поки не зустрінеться завершуючий нульовий символ. Наприклад

char *str=²fghjkl²;

printf(²%s², str);

Рядки можна виводити разом з числовими змінними.

char *str=²begin²;

char *name=²end²;

int var=100;

printf(²%s var=%d %s², str, var, name);

Результат

begin var=100 end

8. Ввід символів за допомогою функції getchar().Функція getchar() одержує символ з потоку stdin, буферизує ввід і дублює символ на екрані.

Прототип функції має вигляд:

int getchar(void) void - порожній символ

Функція ch= getchar() чекає одержання символу з потоку stdin, символ в потоці появляється після натискання ENTER . Після натискання клавіші всі введені символи попадають в потік. За кожний виклик функція бере з потоку один символ, присвоюючи його по черзі ch.

Функція getсh(), одержує символ з потоку stdin, ,без буферизації і дублювання символ на екрані. Вона не визначена в стандарті ANSI, її нема в багатьох компіляторах, вона міститься в файлі conio.h і прототип має вигляд

Для вводу рядка з клавіатури є функція gets().При вводі рядка з клавіатури треба виділити для нього пам’ять. Це робиться з допомогою функції malloc()або опису масиву. Функція вводить рядок тексту. При виклику вона зчитує всі символи, набрані на клавіатурі до першого символу кінця рядка (який генерується при натисканні клавіші ENTER).

Функція скидає символ кінця рядка, додає нульовий завершаючий символ і передає одержаний рядок в викликаючу програму. Рядок поміщається по адресі, яку передано в функцію gets(). через аргумент вказівник на char.

Для виконання функції gets(). Необхідно включити в програму файл stdio.h з допомогою директиви #include. Прототип

сhar *gets(char *str)Функція має аргументом вказівник на рядок і повертає вказівник того ж типу. Функція зчитує символи з потоку до тих пір, поки не зустріне кінець рядка (\n) або кінець файлу. У випадку помилки функція повертає NULL. Перед викликом функції треба виділити достатньо пам’яті для зберігання рядків.

 


<== попередня лекція | наступна лекція ==>
Приклад виконання лабораторної роботи | Варіанти індивідуальних завдань


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн