Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Неисполняемые – операторы-описатели не вызывающие действий в программе.

Поиск

Исполняемые – операторы, предписывающие конкретные действия обработки информации в программе.

Неисполняемые операторы – вспомогательные конструкции алгоритмических языков.

Большинство из них – описатели типов операндов-переменных, участвующих в задаче.

Классификация операторов описателей представлена на рис. 3.8.

Рис. 3.8. Классификация операторов описателей

Назначение, структура, правила использования описателей изложены выше (разд. 3.5.2.3).

Исполняемые операторы – основные конструкции, формирующие программу.

Каждый из них при выполнении программы предписывает полную (частичную) реализацию указаний, соответствующего блока схемы алгоритма. Такими блоками являются ввод исходных данных, вывод результатов, вычисления по формулам, проверка условий, формирование циклов и т.п.

Укрупненно по критерию назначение исполняемые операторы классифицируются схемой (рис. 3.9).

Операторы присваивания – программные аналоги формульных вычислений алгоритма.

Операторы ввода-вывода – программные аналоги предписаний соответствующих блоков схем алгоритма. Их разнообразие обусловлено значительным диапазоном внешних устройств, используемых для обмена данными между пользователем и

Рис. 3.9. Классификация исполняемых операторов

ЭВМ (ручной ввод с клавиатуры, вывод на экран дисплея, в поток и т.п.).

Операторы управления – программные аналоги предписаний соответствующих блоков схем алгоритмов (решение, начало и конец цикла, модификация, предопределенный процесс и т.п.).

Операторы присваивания, ввода-вывода информации – обязательный элемент конструкции практически любого вычислительного процесса, начиная с простейшего – линейного. Операторы управления – специфические конструкции, организующие основные операции ветвящихся, циклических, смешанных процессов. Значительное разнообразие операторов управления обусловлено конкретными особенностями этих процессов. Назначение, структуры, правила записи и использования различных операторов управления рассматриваются в соответствующих разделах (гл. 4, 5).

Рассмотрим операторы, используемые в программировании линейных вычислительных процессов.

Оператор присваивания

Оператор присваивания предназначен для реализации в программе требований блока «процесс» (расчета численного значения переменной по формуле).

Структура оператора:

П=А; (П=L;)

 где П – имя переменной;

  А (L) – арифметическое (логическое) выражение;

  =   – символ операции присваивания;

 ;    – символ оператора.

Оператор выполняется следующим образом:

· вычисляется арифметическое (логическое) выражение А(L) для получения результата – константы конкретного типа;

· полученный результат присваивается переменной с именем П с автоматическим преобразованием типа константы к типу переменной.

Так, фрагмент с операторами:

предписывает вычислить записанное справа выражение – сложить содержимое ячейки v (вещественной константы) с целой константой 2, а затем полученный результат (вещественный) записать в ту же ячейку v.

Фрагмент с операторами:

предписывает вычислить записанное справа выражение – сложить содержимое ячейки v (вещественной константы) с целой константой 2, а затем полученный результат (вещественную константу) записать в ячейку i (целочисленную). Тип результата не соответствует типу переменной, поэтому он должен быть преобразован из вещественного в целый (отбрасыванием дробной части вместе с разделителем). Так, если значение v было равно 1.5, то результат вычисления арифметического выражения (v + 2) есть 3.5, а переменная i получит значение целой части (3) от полученного справа результата.

Правила составления и использования

1. В одном операторе может использоваться несколько операций присваивания

П1=П2=…=ПN=A;

При этом первым выполняется правое присваивание (ПN=A), а затем в обратном порядке все остальные с учётом типов переменных. Например, если переменная t вещественная, а i – целая, оператор t = i = a + b/c; предписывает вычислить выражение (a + b/c) и полученный результат присвоить переменной i (целой константой), а затем значение i присвоить переменной t (вещественной константой).

2. Операция присваивания может использоваться в операторах описания для инициализации некоторых переменных.

Так, описатели

предписывают выделение ячеек соответствующей длины для всех переменных списков. При этом, переменные c, d, k и tip становятся определёнными, т.е. в их ячейки будут внесены указанные в описателях значения (константы).

3. Возможны укороченные формы записи операции присваивания. Например, префиксная операция и постфиксная операции увеличения (++) и уменьшения (– –) (разд. 6.1.1).

Операторы присваивания со структурой П = L; в представленном разделе не рассматриваются.

Операторы ввода-вывода

В языке Cи/Си++ операторы ввода-вывода в явном виде отсутствуют. Каждый из них получается оформлением соответствующей функции, хранящейся в одной из библиотек языка.

Операторы ввода-вывода используются в программе для организации действий, предписанных в алгоритме соответствующими блоками. Каждый из операторов содержит информацию о том, сколько переменных вводится (выводится), в каком порядке, какого типа и какой структуры.

Рассмотрим основные операторы ввода-вывода.

Оператор ввода

Оператор используется для организации ввода численных значений переменных с клавиатуры.

Структура оператора:

scanf(“управляющая строка”, АП1 [, АП2,., АПn]);

, где            scanf                    – имя функции (считать);

    “управляющая строка” –   список спецификаторов вводимых переменных, оформленный в виде символьной строки;

    АП1 АП2 АПn –                                                    список адресов вводимых переменных;

      ,,         – разделители списка;

       ()        – ограничители аргументов функции scanf;

       [ ]        – признак необязательности содержимого;

      ;           – символ оператора.

Рассмотрим основные элементы оператора ввода.

Спецификатор – совокупность символов, обозначающих формат (тип и структуру) вводимой (выводимой) переменной.

Структура (необязательный элемент) определяет длину поля, занимаемого численным значением переменной и точность (количество разрядов дробной части), если она имеется.

Простейший спецификатор ввода точность не учитывает и имеет вид:

% [длина] тип

, где %   – признак спецификатора;

  длина – целая константа без знака, задающая количество считываемых символов численного значения;

  тип – буквенное обозначение типа переменной;

  [ ]    – признак необязательности содержимого.

Наиболее часто при вводе используют обозначения типа, представленные в табл. 3.7.

Таблица 3.7

Тип переменной Обозначение типа Формат ввода
int d Целое десятичное
long ld Длинное целое десятичное
float f (e) Вещественное десятичное с обычной точностью
double lf Вещественное десятичное с двойной точностью

Спецификатор определяет формат численного значения вводимой (выводимой) переменной.

Например, спецификатор %4d задаёт один конкретный вариант формата (целочисленная, четырехразрядная), спецификатор %8f – другой (вещественная, восьмиразрядная, без экспоненты), а спецификатор %12e – третий (вещественная, двенадцатиразрядная, с экспонентой).

Адрес переменнойобозначение номера ячейки, предназначенной для хранения численного (символьного) значения переменной в оперативной памяти.

Структура адреса переменной:

&имя

, где  &      – операция формирования адреса;

  имя – идентификатор переменной, для которой формируется адрес.

Так, для переменных a, x2, summa адресами будут &a, &x2, &summa.

Оператор ввода предписывает последовательное считывание вводимых с клавиатуры символов и запись их в ячейки оперативной памяти, задаваемые адресами переменных.

Количество символов для каждой переменной определяется размером «длина» соответствующего спецификатора.

Например, оператор

scanf(“%8d%5f”, &g, &h);

предписывает из последовательно вводимых с пульта символов первые восемь считать и записать целочисленным значением в ячейку ОП, зарезервированную для переменной g типа int, а следующие пять символов считать как вещественное (без экспоненты) значение и записать в ячейку переменной h типа float.

Правила составления и выполнения оператора ввода

1. Количество, типы и порядок расположения спецификаторов в управляющей строке должны совпадать с аналогичными характеристиками переменных в списке адресов.

2. Если адресов переменных больше, чем спецификаторов, лишние (последние) – игнорируются. Если их меньше – ошибка (результат непредсказуем).

3. Поле «длина» задает максимальное количество цифр (символов), которые могут быть прочитаны с клавиатуры дисплея (входного потока), если раньше не встретился пробел или символ, который нельзя использовать в указанном спецификатором формате.

4. В управляющей строке не рекомендуется использование символов, кроме составляющих спецификаторы.

5. Если управляющая строка по размеру превышает стандартную ширину страницы, она должна быть оформлена с переносом.

ü Внимание! При переносе управляющей (символьной) строки требуется оформление каждой её части в виде отдельной символьной строки.

6. Ввод текстовых констант функцией scanf не рекомендуется. Рекомендации по их вводу изложены в разд. 6.2.2.

Оператор вывода на дисплей

Оператор используется для организации форматного вывода численных значений переменных на экран дисплея.

Структура оператора:

printf(“управляющая строка” [, П1, …, Пi,..., Пn]);

, где         printf        – имя функции («напечатать»);

  “управляющая строка” – список спецификаторов выводимых переменных, оформленный в виде символьной строки;

  П1 Пi Пn – список идентификаторов выводимых переменных;

    ,,      – разделители аргументов в списке функции printf;

     ()     – ограничители аргументов функции printf;

     [ ]     – признак необязательности содержимого;

     ;       – символ оператора.

Структура спецификатора вывода (упрощённая):

%[длина][.точность]тип,

, где       % – признак спецификатора;

  длина – целая константа без знака, определяющая общий размер поля выводимой переменной (количество разрядов численного значения с учетом разделителя, знаков  и буквы Е (е), если они имеются);

  точность – целая константа без знака, определяющая число разрядов дробной части мантиссы численного значения переменной;

     .    – разделитель длины и точности;

    тип  – буквенное обозначение типа переменной;

     [ ]   – признак необязательности содержимого.

Обозначения типа, используемые при выводе, представлены в табл. 3.8.

Таблица 3.8

Тип переменной Обозначение типа Формат вывода
int d Десятичное целое со знаком
long ld Десятичное целое со знаком
unsigned u Десятичное целое без знака
int o Восьмеричное целое без знака
int x Шестнадцатеричное целое без знака
double f (lf) Вещественное со знаком в формате: [-]dddd.dddddd Количество цифр перед десятичной точкой зависит от величины числа, а число разрядов после нее соответствует заданной точности или равно шести
double e (E) Вещественное со знаком в формате: [-]d.dddddde[+][-]d[dd]
char c Одиночный символ
cтрока s Последовательность символов до первого нулевого (\0)

При выводе спецификатор позволяет задавать формат численного значения выводимой переменной с указанием планируемой точности. Так, спецификатор %8.3f задаёт один конкретный вариант формата (вещественная, восьмиразрядная, без экспоненты, с тремя разрядами после запятой), а спецификатор %12.4e – другой (вещественная, двенадцатиразрядная, с экспонентой, с четырьмя разрядами после запятой в мантиссе).

Следовательно, оператор вывода предписывает последовательную печать значений выводимых переменных на одной или нескольких строках экрана дисплея в соответствии с указаниями управляющей строки.

Правила составления и выполнения оператора вывода

1. Количество, типы и порядок расположения спецификаторов в управляющей строке должны соответствовать количеству, типам и последовательности переменных в их списке.

2. Если переменных больше, чем спецификаторов, лишние (последние) игнорируются. Если переменных меньше – ошибка, результат непредсказуем.

3. Параметр «длина» определяет минимальное число выводимых цифр (символов). Если в целой части вычисленного значения переменной их меньше, чем задано параметром, левые незначащие разряды заполняются пробелами до заданной длины.

4. Если количество символов в целой части выводимого значения больше планируемого параметром «длина» или он не задан, выводятся все цифры (символы) с учетом предписаний поля «точность».

5. Для целых (символьных) переменных поле «точность» (при отсутствии параметра «длина») определяет количество выводимых цифр (символов). Его использование может привести к усечению или округлению выводимого значения.

6. Если параметр «точность» не задан, для спецификаторов е (Е) и f его значение равно шести, а для s – нулю.

7. По спецификатору типа е(Е) численное значение выводится в нормализованном виде, т.е. с одним разрядом целой части.

8. В управляющей строке наряду со спецификаторами возможно указывать требуемые пользователю совокупности символов, облегчающие чтение и увеличивающие информативность выводимых численных значений (имена переменных, пробелы, символы управления печатью).

9. Если управляющая строка по размеру превышает стандартную ширину страницы, она должна быть оформлена с переносом.

ü Внимание! При переносе управляющей (символьной) строки требуется оформление каждой её части в виде отдельной символьной строки.

Пример организации вывода переменных на экран дисплея:

printf(“%10d%9.1f%11.1e”, i, r, z);

Оператор осуществляет вывод строки:

– – – – – – – – 18 – – 12000.0 – – – – 3.6е-03

ü Внимание! Здесь и в дальнейшем информация, выдаваемая ЭВМ, подчёркивается.

Оператор вывода в поток

Используется для вывода значений переменных в информационный поток.



Поделиться:


Последнее изменение этой страницы: 2021-01-08; просмотров: 335; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.98.61 (0.008 с.)