
- •1. Основные этапы разработки программных продуктов
- •1.1 Постановка задачи
- •Словесная формулировка
- •Формульная постановка задачи
- •1.2 Создание программного продукта
- •1.2.1.Формирование математической модели
- •Формирование исходных данных
- •Составление расчётных зависимостей
- •Правила формирования математической модели.
- •1.2.2.Алгоритмизация задачи
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •1.2.3. Реализация программного продукта
- •1.2.4. Работа с результатами
- •1.2.5.Анализ результатов решения
- •1.2.6.Принятие решения
- •1.2.7.Составление технической документации
- •1.3.Полная обработки задачи пользователя
- •1.4.Обеспечение эффективности разработки программных продуктов
- •2.5 Идентификаторы
- •2.6 Описание операций
- •2.6.1 Унарные операции
- •2.6.2 Бинарные операции
- •2.6.3 Пунктуаторы
- •Программирование простых ветвлений
- •4.1.5. Программирование задачи
- •Правила составления и использования
- •4.1.5.2. Операторы условной передачи управления
- •Укороченный оператор условного перехода
- •Правила записи и выполнения
- •Условная операция
- •Технология программирования арифметических циклов
- •Циклы с аналитическим заданием аргумента
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма
- •Оператор цикла с предусловием
- •Правила записи и выполнения
- •Оператор цикла с постусловием
- •Правила записи и выполнения
- •Оператор пошагового цикла for
- •Правила записи и выполнения
- •Программа по алгоритму цикла с предусловием
- •Программа по алгоритму цикла с постусловием
- •Программа по алгоритму цикла с параметром
- •Циклы с табличным заданием аргумента
- •Описание массивов
- •Описатель имя[размер];
- •Обозначение элементов массива
- •Имя[индекс]
- •Описатель имя[разм_1] …[разм_i]… [разм_n];
- •Постановка задачи
- •Математическая формулировка
- •Выбор метода решения
- •Составление алгоритма решения
- •Алгоритмизация структурой цикла с предусловием
- •Алгоритмизация структурой цикла с постусловием
- •Алгоритмизация структурой цикла с параметром
- •Программирование задачи
- •Описание массивов
- •Обозначение элементов массива
- •Составление программ решения задачи
- •Улучшение качества программных продуктов
- •Организация ввода-вывода Использование укороченных спецификаторов
- •Ввод переменных
- •Вывод переменных
- •Организация ввода в диалоге
- •Варианты ввода массивов
- •Оформление выводимых величин
- •Управление выполнением программ Использование составных присваиваний
- •Выбор устройства вывода
- •Повторение расчётов
- •Приостановка вывода
- •Очистка экрана
- •Позиционирование курсора
- •Пример улучшения качества
- •Программирование с использованием подпрограмм
- •Имя (фактические параметры)
- •Подпрограмма с одним результатом
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Составление алгоритма решения
- •Программирование задачи
- •Составление алгоритма решения
- •Программирование задачи
- •Подпрограмма с результатом – массивом
- •Постановка задачи
- •Математическая формулировка
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Обработка текстовой информации в Си Символьные строки
- •Определение значения символьной строки
- •Массивы строк
- •Ввод строки
- •Выделение памяти
- •Функции ввода символьной строки
- •Функция ввода символьной строки gets( )
- •Функция ввода символьной строки scanf( )
- •Преобразование символьных строк
- •Функция atoi( )
- •Функция atol( )
- •Функции atof( ) и atold( )
- •Методика ввода числовых данных с использованием функции gets( )
- •Вывод строки
- •Вывод строки функциями printf( ) и fprintf( )
- •Вывод строки функциями puts( ) и fputs( )
- •Перевод чисел в формат символьной строки
- •Обработка символьных строк
- •Определение длины строки
- •Объединение строк
- •Копирование строк
- •Сравнение строк
- •Функции по работе с датой и временем.
- •Структуры.
- •Работа с дисками.
- •Ввод-вывод потока.
- •Открытие потока.
- •Объектно−ориентированное программирование
- •Классы ObjectWindows
- •Приложение коды клавиш
- •Краткий справочник по Си
- •Оператор вывода на принтер
- •Структура оператора
- •Структура оператора
- •Структура оператора
- •Библиографический список
Преобразование символьных строк
Существуют функции преобразования строки в целое число (функция atoi( )), длинное целое (функция atol( )), в число с плавающей точкой двойной точности (функция atof( )) или длинное число с плавающей точкой (функция atold( )). Рассмотрим подробней каждую из функций преобразования.
Функция atoi( )
Функция преобразует символьную строку в целочисленный формат. Прототип функция описан в заголовочном файле stdlib.h и имеет следующую структуру:
int atoi(char *s);
где s – указатель на преобразуемую символьную строку.
Функция atoi( ) преобразует строку, на которую указывает указатель s, в целое число типа int.
Функция распознает символы в строке в следующем порядке:
-
необязательная строка символов табуляции и пробелов;
-
необязательный знак;
-
строка цифр.
Число цифр, составляющих число, не должно превышать пяти, т.к. максимальное значение типа int – 32767.
Функция atoi( ) возвращает преобразованное значение входной строки. Если строка не может быть преобразована в число соответствующего типа (int), то возвращаемое значение равно 0. Например, результат преобразования строки «abcd» – 0.
Фрагмент программы
…
char *s1 = “1345”,
*s2 = “ -31”,
*s3 = “+97aBc”;
int i1, i2, i3;
i1 = atoi(s1);
i2 = atoi(s2);
i3 = atoi(s3);
printf(“i1 = %d i2 = %d i3 = %d”, i1, i2, i3);
…
позволит вывести численные значения переменных в следующем виде:
i1 = 1345 i2 = -31 i3 = 97
При обнаружении первого нераспознанного символа функция прекращает преобразование.
Функция atol( )
Функция atol( ) преобразует символьную строку в целое число типа long. Прототип функции описан в заголовочном файле stdlib.h и имеет следующую структуру:
long atol(char *s);
Функция atol( ) преобразует строку, на которую указывает указатель s, в число типа long.
Функция atol( ) полностью аналогична функции atoi( ) за исключением того, что количество цифр в формате строки значительно больше (до 10).
Если строка задает число вне диапазона –2147483648 – 2147483647, то наступает переполнение и результат преобразования непредсказуем.
Например,
…
long m;
char *pstr = “98765432”;
m = atol(pstr);
printf(“строка = %s; число типа long = %ld\n”, pstr, m);
…
Результат работы программы:
строка = 98765432; число типа long = 98765432
Отметим некоторые особенности данной программы. Переменная m имеет тип long, потому что принимает возвращаемое функцией atol( ) значение типа long. Функция printf( ) имеет для второго аргумента спецификатор ld, т. к. выводимое значение длинного типа.
Функции atof( ) и atold( )
Функция atof( ) преобразует строку в число типа double.
Прототип функции описан в заголовочном файле stdlib.h и имеет следующую структуру:
double atof (char *s);
Функция преобразует строку, на которую указывает указатель s, в число типа double.
Функция распознает символьное представление числа с плавающей точкой, составленной из следующих компонентов:
-
необязательная строка знаков табуляции и пробелов;
-
необязательный знак;
-
строка цифр и необязательная десятичная точка, расположенная в любом месте этой строки;
-
необязательный символ e (Е)юбдлщш98, за которым следует необязательное целое со знаком или без него.
Символьная строка должна иметь следующий общий формат:
[пробелы][знак][dd…d][.][dd…d][e или E][знак][dd…d]
-
Внимание ! Обязательно наличие целой составляющей числа или точки с десятичной частью.
Например,
“28”, “.589”, “12.5”, “ -.06”, “62.E2”, “-0.2e-2”, “.1e+5”.
При обнаружении первого нераспознаваемого символа функция atof( ) прекращает преобразование.
Например, строка “12.5R-02” преобразуется в число 12.5.
Иначе говоря, любой непреобразуемый символ выступает как символ окончания строки ‘\0’.
При переполнении функция atof( ) возвращает отрицательное или положительное значение HUGE_VAL (огромное значение), что позволяет идентифицировать строку переполнения.
Переполнение
наступает, когда преобразованное
значение по модулю выходит из диапазона
1.7E-308
1.7E308.
Функция
atold( ) аналогична функции
atof( ) за исключением того,
что она возвращает значение типа long
double, для хранения которого
отводится 10 байт, а диапазон возможного
представления по модулю 3.4E-4932
1.1E4932.
Например,
…
double x;
float y;
char *pstr1= “123.45”;
char *pstr2= “1.7E20”;
x=atof(pstr1);
y=atof(pstr2;
printf(“Строка1 = %s число = %f. \n Строка2 = %s число = %lf. \n”, x, y);
…