Последовательная обработка данных

Содержание

Слайд 2

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка данных

Задача 4.1. Задана непустая числовая последовательность.

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка данных Задача 4.1. Задана непустая числовая
Определить, является ли последовательность знакочередующейся.
Тест1. Вход: -5 3.1 -2 1 -7 Выход: Знаки чередуются.
Тест2. Вход: -5 3.1 2 -1 7 Выход: Знаки не чередуются.
Используем алгоритм 3.3. для обработки последовательности.

Слайд 3

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка данных

Одного текущего элемента последовательности недостаточно, будем

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка данных Одного текущего элемента последовательности недостаточно,
сохранять два соседних элемента:
xpred – предыдущий элемент последовательности, x – текущий элемент последовательности.
При обработке последовательности необходимо искать нарушение знакочередования.
Используем дополнительную переменную flag – признак знакочередования. flag = 1 - знаки чередуются, 0 – нет,
инициализация: flag =1.

Слайд 4

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка данных

/* Программа 4.1. Знакочередование последовательности чисел

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка данных /* Программа 4.1. Знакочередование последовательности
*/ #include void main(void)
{ float xpred, x; /* предыдущее и текущее числа */ int flag = 1; /* flag = 1 - знаки чередуются, 0 - нет */
scanf("%f", &xpred) ;
while( scanf("%f", &x)>0) { if (xpred * x >= 0) flag = 0;
xpred = x; }
if (flag) printf ("\n Знаки чередуются. ");
else printf ("\n Знаки не чередуются. "); }

Слайд 5

КГТУ (КАИ), кафедра АСОИУ

Введение в программирование

ПОСЛЕДОВАТЕЛЬНАЯ ОБРАБОТКА СИМВОЛОВ

КГТУ (КАИ), кафедра АСОИУ Введение в программирование ПОСЛЕДОВАТЕЛЬНАЯ ОБРАБОТКА СИМВОЛОВ

Слайд 6

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка символов

Значением символьного типа является одиночный символ.
В

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка символов Значением символьного типа является одиночный
языке C символьные данные рассматриваются как разновидность целых чисел. Числовым значением символа является его код.
В языке C над символами разрешаются не только операции присваивания и сравнения, но и арифметические операции.
В международном стандарте ASCII код символа обычно занимает один байт, но иногда и два байта (в международном коде UNICODE).

Слайд 7

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка символов

Примеры символьных констант: ‘*’ ‘a’ ‘5’ ‘n’
Специальные (управляющие) символьные константы:
'\n' Новая

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка символов Примеры символьных констант: ‘*’ ‘a’
строка (new line),
'\t' '\v' Табуляция горизонтальная, вертикальная,
'\b' Возврат на шаг (backspace),
'\\' - \ (обратный слэш), '\'' - ‘ (апостроф), '\"' - " (кавычка),
'\0' Нулевой символ (байт с нулевым кодом).
Объявление символьных переменных char <имя> [,<имя>]…; или int <имя> [,<имя>]…; Например: char s, sim = ‘Z’, c;

Слайд 8

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка символов

Кодировка цифровых символов:
'0' = 48 '1'

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка символов Кодировка цифровых символов: '0' =
= '0' + 1 = 49 '2' = '0' + 2 = 50 . . . '9' = '0' + 9 = 57
Отсюда соотношения: Код цифры = '0' + Значение цифры Значение цифры = Код цифры - '0'
Условие "значение символьной переменой s является цифрой" на языке C запишется так:
s >= '0' && s <= '9'

Слайд 9

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка символов

Коды заглавных латинских букв возрастают по алфавиту: 'A'

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка символов Коды заглавных латинских букв возрастают
< 'B' < ... < 'Z' ,
Коды строчных латинских букв возрастают: 'a' < 'b' < ... < 'z'.
Условие "значение символьной переменой s является латинской буквой" можно записать так:
(s>='A' && s<='Z') || (s>='a' && s<='z')

Слайд 10

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка символов

char s; ( или int s; )
Ввод

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка символов char s; ( или int
символа из стандартного входного файла (клавиатуры) в переменную s: scanf ("%с", &s);
можно заменить присваиванием s = getchar ();
Функция getchar() вводит очередной символ из стандартного входного файла и возвращает в виде значения код этого символа.

Слайд 11

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка символов

Ввод символа часто пишется внутри условия в

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка символов Ввод символа часто пишется внутри
операторах if, while, do-while и for.
Например, цикл ввода символов до конца файла Ввод s; while(s!= конец файла) { Обработка s; Ввод s; }
может иметь вид
while ((s=getchar()) != EOF) Обработка s;

Слайд 12

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка символов

Символическая константа EOF - код конца

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка символов Символическая константа EOF - код
файла (после нажатия клавиш Ctrl-Z или Ctrl-z, затем Enter).
Вывод символа s в стандартный выходной файл (на экран) printf ("%c", s);
эквивалентен оператору putchar (s);
Стандартный входной и выходной файлы, вместо клавиатуры и экрана, можно переадресовать на любой файл магнитного диска.

Слайд 13

КГТУ (КАИ), кафедра АСОИУ

Коды символов

Задача 4.2. Вывести коды введенных с клавиатуры символов.

КГТУ (КАИ), кафедра АСОИУ Коды символов Задача 4.2. Вывести коды введенных с
Последовательность завершается нажатием клавиши Esc.
Тест. Вход: Kazan 2007 Выход: K=82, a=97, z=122, a=97, n= 110, =32, 2=50, 0=48, 0=48, 7=55, ⭠ = 27

Слайд 14

КГТУ (КАИ), кафедра АСОИУ

Коды символов

/* Программа 4.2. Коды символов */ #include #include
main() {

КГТУ (КАИ), кафедра АСОИУ Коды символов /* Программа 4.2. Коды символов */
int sim; printf("\n Введи текст, завершив клавишей Esc\n");
do { sim=getch(); putchar(sim);
printf("=%d, ",sim); } while( sim!=27);
puts(" Нажми любую клавишу"); getch(); return 0; }

Слайд 15

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка символов

Подсчет строк, слов и символов
Задача 4.3.

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка символов Подсчет строк, слов и символов
Составить программу подсчета во входном тексте количества строк, слов и символов.
Словом считается любая последовательность символов, не содержащая пробелов, символов табуляции и новой строки. Строка заканчивается символом новой строки.
Тест. Вход: Если друг оказался вдруг И не друг, и не враг, а так.
Выход: Строк: 2, слов: 12, символов: 53.
Количество символов считаем сразу после ввода, количество строк – по количеству символов ‘\n’, а количество слов – при вводе символа не разделителя, перед которым был разделитель. Используем для этого флаг разделителя.

Слайд 16

КГТУ (КАИ), кафедра АСОИУ

Пояснения к программе

switch (переключить) - оператор переключателя для организации

КГТУ (КАИ), кафедра АСОИУ Пояснения к программе switch (переключить) - оператор переключателя
многовариантного ветвления.
switch (выражение) { [ case цел-конст-выраж: [оператор...]]... [ default: оператор...] [ case цел-конст-выраж: [оператор...]]... }
case (случай) - вариант ветвления, можно пометить целой или символьной константой (или константным выражением).
Вычисляется значение выражения. Переключатель осуществляет переход к одному из вариантов case, константное выражение которого совпадает с вычисленным значением, или к метке default (умолчание), если не совпадает ни с одной из констант вариантов ветвления.
Каждый вариант обычно заканчивается оператором break.

Слайд 17

КГТУ (КАИ), кафедра АСОИУ

Последовательная обработка символов

/* Программа 4.3. Подсчет строк, слов и

КГТУ (КАИ), кафедра АСОИУ Последовательная обработка символов /* Программа 4.3. Подсчет строк,
символов */
/* текст ::= символ… */ /* символ ::= разделитель | символ-слова */ /* разделитель ::= пробел | новая-строка | табуляция */ /* | конец-файла */ /* символ-слова - любой символ, кроме разделителей */
#include
#define DA 1 #define NET 0
void main () { int sim; /* Текущий символ (int для EOF) */ int kstr, ksl, ksim; /* Кол-во строк, слов и символов */ int razdel; /* Флаг символа - разделитель */
razdel = DA; /* 1-й символ текста - начальный */
Имя файла: Последовательная-обработка-данных-.pptx
Количество просмотров: 144
Количество скачиваний: 0