28638

Простые операторы и программы с линейной структурой

Лекция

Информатика, кибернетика и программирование

Простые операторы ввода и вывода. Простые операторы ввода и вывода. Эти операторы Турбо Паскаля обеспечивают простейшие формы ввода с клавиатуры и вывода на экран дисплея в текстовом режиме. К простым операторам ввода и вывода относятся операторы read readln write writeln реализующие так называемый потоковый вводвывод при котором ввод и вывод рассматриваются как непрерывный поток символов и строк протекающий через экран дисплея.

Русский

2013-08-20

61.5 KB

3 чел.

 Лекции 5-6: Простые операторы и программы с линейной структурой.

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

2. Простые операторы ввода и вывода.

3. Простые операторы управления вводом-выводом в текстовом режиме.

4. Примеры программ с линейной структурой.

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

Важнейшим из простых операторов Паскаля является оператор присваивания. Он позволяет изменять значение переменных в процессе выполнения программы без чего не может обойтись почти ни один алгоритм. Синтаксическая структура этого оператора:

< переменная > := < выражение >;

Оператор присваивания состоит из левой и правой частей, которые разделяются  знаками присваивания (:=). Левая часть - это переменная любого типа, правая часть - выражение, совместимое по типу с переменной левой части. При выполнении  этого оператора вычисляется значение выражения правой части и это значение становится значением переменной левой части. Таким образом, присваивание, это -  "передача значения" справа налево.

Следует усвоить, что присваивание не является обычным равенством (почему и используется знак присваивания, отличный от равенства). Действительно, пусть Х - переменная типа integer. Тогда при выполнении последовательности присваиваний Х:=2; Х:=Х+5; переменная Х получит значение 7, в то же время, очевидно, что второе присваивание не является равенством. Заметим, что присваивание такого вида часто используется в программах, и в Турбо Паскале предусмотрен сокращенный вариант записи этих присваиваний (стандартные процедуры inc и dec):

inc(X,j) ~ X:=X + j;     dec(X,j) ~ X - j; где j - любое выражение типа integer.

Если j=1, возможна и ещё более короткая запись: inc(X) или dec(X).

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

 Тип переменной левой части real, а тип выражения правой части - integer, т.е. преобразование вида  real integer.

 Тип переменной левой части string, а тип выражения правой части - char, т.е. преобразование вида string  char.

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

2. Простые операторы ввода и вывода.

Эти операторы Турбо Паскаля обеспечивают простейшие формы ввода с клавиатуры и вывода на экран дисплея в текстовом режиме. Они относятся к числу часто используемых операторов, особенно в простых программах (у начинающих программистов). К простым операторам ввода и вывода относятся операторы read, readln, write, writeln, реализующие так называемый потоковый ввод-вывод, при котором ввод и вывод рассматриваются как непрерывный поток символов и строк, "протекающий" через экран дисплея. На экране отображается последняя порция этого потока так, что нижняя строка экрана всегда остается свободной для отображения очередной строки вывода  (вывод идёт в нижнюю строку экрана). Простые операторы ввода-вывода хорошо приспособлены для ввода и вывода чисел и строк.

Операторы ввода read и readln. Синтаксическая структура этих операторов:

read( < список переменных >);| readln( < список переменных >);

< список переменных > ::= <переменная> { ,< переменная >} 

Переменные могут быть любого типа (из рассмотренных выше стандартных типов, кроме типа Boolean). Смысл этих операторов заключается в том, что вводимые с клавиатуры значения становятся значениями соответствующих переменных из списка, т.е. действие этих операторов подобно присваиванию. Когда процессор начинает выполнять операторы read или readln, программа приостанавливается и ожидает ввода символов с клавиатуры. При этом список переменных просматривается слева направо до его исчерпания. Каждое последующее вводимое значение  должно отделяться от предыдущего значения хотя бы одним пробелом, и оно присваивается очередной переменной списка.

Набранная на клавиатуре последовательность символов накапливается в буфере клавиатуры и становится доступной процессору только после нажатия Еnter. До нажатия Enter можно вносить исправления в набранную последовательность, используя клавишу стирания предшествующего символа - "Забой". Выполнение операторов read и readln сопровождается эхо-повтором -  отображением набираемых символов на экране дисплея.

Отличие оператора readln от read  в том, что после считывания данных для последней переменной списка осуществляется переход к новой строке ввода. Процедуру readln можно использовать и без списка ввода, что вызовет просто переход на новую строку ввода.

     Замечание

Следует избегать использования оператора read для ввода строк и символов, особенно внутри циклов. Используйте в этих случаях оператор readln .

Операторы вывода write и writeln. Синтаксическая структура этих операторов:  write( < список выражений вывода > );

writeln( < список выражений вывода >);

< список выражений вывода > ::= < выражение > { ,< выражение >} 

В операторах вывода допустимы выражения стандартных типов integer, real, char, string. В качестве выражения могут использоваться также константы и переменные указанных типов. Константы удобно использовать в операторах вывода для отображения на экран дисплея различных заголовков, запросов и другой постоянной информации пользовательского интерфейса.

При выполнении операторов write и writeln  последовательно отображаются на экране дисплея значения выражений из списка выражений вывода, просматриваемого слева направо до его исчерпания. При этом при переполнении строки вывода автоматически осуществляется переход на новую строку экрана, а при заполнении всего экрана его содержимое сдвигается вверх на одну строку.

Для элемента списка вывода типа integer или real можно указывать (после элемента) формат вывода, т.е. задавать количество выводимых цифр в целой и дробной части числа. Формат имеет следующую синтаксическую структуру:

< формат числа > ::= : < целый формат > [ : < дробный формат > ]

< целый формат > ::=  < целое без знака >

< дробный формат > ::= < целое без знака >

Целый формат задает  минимальное количество цифр в целой части (если действительная длина целой части числа меньше указанной в формате, то она дополняется нулями, а если больше - формат игнорируется). Дробный формат имеет смысл лишь для чисел типа real и задает количество цифр в дробной части (после точки), при этом при отсутствии формата число выводится в экспоненциальной форме, а если формат нулевой, то ни точка, ни дробная часть не выводятся.

Оператор writeln отличается лишь тем, что после его окончания осуществляется переход к новой строке экрана. Допускается использовать writeln без параметров, что эквивалентно переводу курсора в начало  следующей строки.

3. Простые операторы управления вводом-выводом в текстовом режиме.

Кроме ввода и вывода  потока символов более удобный пользовательский интерфейс может быть обеспечен при использовании ввода-вывода в текстовом режиме экрана. Экранный ввод-вывод рассматривает экран как прямоугольное окно стандартного размера 25х80 (25 строк по 80 символов в строке). Все позиции символов характеризуются своими координатами: верхний левый угол имеет координаты 1,1; правый нижний угол - координаты 80, 25.

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

Все эти средства сосредоточены в стандартном модуле Турбо Паскаля - модуле CRT. Мы рассмотрим здесь лишь простейшие средства экранного ввода-вывода, которые будем использовать уже в простых программах, отложив более подробное изучение модуля CRT на лекции, посвященные модулям Турбо Паскаля.

Для возможности доступа к средствам управления экранным вводом-выводом в программе на Турбо Паскале необходимо первой строкой раздела описаний программы записать ссылку на использование модуля CRT  в форме:

uses CRT;

где: uses - ключевое слово, означающее подключение модуля к программе.

Установка цвета фона, цвета символов и очистка экрана.

Модуль CRT допускает использовать в текстовом режиме экрана 16 цветов, задаваемых стандартными константами цветов от black  до white (это имена констант, а сами константы являются целыми числами от  0 до 15, так black соответствует константе 0, а white - константе 15). Эти константы представлены следующей таблицей:

Таблица 2. Константы цветов модуля CRT.

Black

Blue

Green

Cyan

Red

Magenta

Brown

LightGray

0

черный

1

синий

2

зеленый

3

голубой

4

красный

5

фиолет.

6

коричн.

7

свет.сер.

DarkGray

LightBlue

Light

Green

LightCyan

LightRed

Light Magenta

Yellow

White

8

тем.сер.

9

ярк.син.

10

ярк.зел.

11

ярк.гол.

12

розов.

13

малин.

14

желтый

15

белый

Для цвета фона можно использовать первые 8 цветов, а для цвета символов - все 16 цветов. Эти цвета устанавливаются следующими операторами:

TextBackground( < цвет> );

TextColor(< цвет> );

где: < цвет> - константа цвета.

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

Часто для установки цвета фона на экране используют оператор очистки экрана. Его действие эквивалентно заполнению всего экрана пробелами (с предварительно установленным цветом фона) и установке курсора в верхний левый угол экрана (с координатами 1,1). Этот оператор очистки экрана имеет название ClrScr.  Оператор стирает имеющуюся ранее информацию и подготавливает вывод в верхнюю строку экрана (в отличие от потокового вывода, выполняемого всегда в нижнюю строку экрана). Ввод и вывод при этом могут выполняться  теми же операторами read, readln, wrire, writeln.

Установка окон на текстовом экране.

Для установки окна предусмотрен оператор

window (x1,y1,x2,y2);

где: x1,y1,x2,y2 -  координаты левого верхнего и правого нижнего угла окна.

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

После установки окна все последующие операторы ввода-вывода, в том числе и операторы CRT относятся только к этому окну до тех пор, пока не будет открыто новое окно (сам оператор window относится к полному экрану). Полный экран можно рассматривать как окно, устанавливаемое оператором  window (1,1,80,25).

     Замечание

Если в операторе window указать координаты окна вне экрана, выполнение оператора window будет проигнорировано без какого либо системного сообщения!

4. Примеры программ с линейной структурой.

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

 

          program first;{вычисление среднего балла}

          var math,phys,phil,hist:integer;{баллы по предметам}

                 average:real; {средний балл}

           begin write('математика:'); read(math);

                      write('физика:'); read(phys);

                      write('философия:'); read(phil);

                      write('история;'); read(hist);

                      average:=(math+phys+phil+hist)/4; writeln(' Средний балл:',average:1:2);

           end {first}.

Другой вариант программы - first_2, использует средства экранного вывода текста и отличается также тем, что запрашивает ввод в окно экрана не только балла, но и названий  четырёх дисциплин.

 

program first_2;{второй вариант программы first}

          uses CRT;

          var name: string; {названия предметов}

                 v1,v2,v3,v4:integer;{баллы по предметам}

              average:real; {средний балл}

           begin TextBackground(cyan);TextColor(yellow);ClrScr;

 window(10,10,70,16);TextBackground(green);ClrScr;

                      writeln('Введите в одну строку названия 4-х предметов,');

 writeln('а в следующую строку - баллы по этим предметам:');

 readln(name); readln(v1,v2,v3,v4);

                      average:=(v1+v2+v3+v4)/4;writeln(' Средний балл:',average:1:2);

           end {first_2}.


 

А также другие работы, которые могут Вас заинтересовать

36794. Измерение напряженности магнитного поля соленоида 182 KB
  Магнитные поля созданные каждым витком в отдельности складываются. Напряженность магнитного поля соленоида в средней его части при прохождении по нему электрического тока определяется формулой: 1 Величина пропорциональна силе тока и зависит от числа витков приходящихся на единицу длины соленоида. Напряженность магнитного поля можно определить по воздействию этого поля на данный магнит.
36795. Измерение напряженности магнитного поля длинного соленоида с помощью датчика Холла 270 KB
  Цель работы: ознакомиться с одним из широко используемых на практике методов измерений и исследования магнитных полей с помощью датчика Холла; исследовать магнитное поле внутри длинного соленоида. Приборы и принадлежности: соленоид датчик Холла блок питания для соленоида источник питания для датчика Холла милливольтметр для измерения электродвижущей силы Холла. Эффект Холла.
36797. ЧАСТНЫЕ РЕАКЦИИ КАТИОНОВ II АНАЛИТИЧЕСКОЙ ГРУППЫ 80.5 KB
  Тема: ЧАСТНЫЕ РЕАКЦИИ КАТИОНОВ II АНАЛИТИЧЕСКОЙ ГРУППЫ. Перечень заданий: Частные реакции на катионы Аg. Частные реакции на катионы Pb2. Провести частные реакции на катион серебра g.
36798. Исследование распространения сигналов тональных частот по ЛЭП 6(10) кВ с использованием программной среды PSpice 93.83 KB
  Магистральные ЛЭП напряжением 110_кВ и выше, соединяющие между собой энергорайоны, при их использовании в качестве линий связи, как правило, обработываются с помощью заградителей, обходов и т.д
36799. ЧАСТНЫЕ РЕАКЦИИ КАТИОНОВ III АНАЛИТИЧЕСКОЙ ГРУППЫ 68 KB
  Тема: ЧАСТНЫЕ РЕАКЦИИ КАТИОНОВ III АНАЛИТИЧЕСКОЙ ГРУППЫ. Частные реакции на катионы Ва2. Частные реакции на катионы Са2. Частные реакции на катион Ва2.
36800. Графический растровый редактор GIMP 1.65 MB
  Далее возвращаемся на 1й слой – в данном случае это слой Рисунок 1 и создаем над ним новый с указанными ниже параметрами: Для типа заливки слоя выбираем Цвет переднего плана при этом цвет должен быть обязательно черным: Отключаем все слои кроме двух нижним с которыми мы сейчас работаем: Переходим на наш слой залитый черным цветом: Теперь берем инструмент ластик с мягкими краями и достаточно большого размера 305: Встаем в произвольном месте нашего изображения и несколько раз щелкаем по одному и тому же месту чтобы эффект ластика...
36801. ЧАСТНЫЕ РЕАКЦИИ КАТИОНОВ IV АНАЛИТИЧЕСКОЙ ГРУППЫ 72 KB
  Реактивы: NH42S lCl3 ZnCl2 CrCl3 NOH H2O NH4OH N2S HCl NH4Cl крист K4 [Fe CN 6] K3 [Fe CN 6] CH3COOH. Групповым реагентом на катионы четвертой группы является гидроксид натрия NOH в избытке. В каждую из них добавить 1 мл группового реактива – NOH. Ваши наблюдения ____________________________________________________________________________________________________________________________________________ Записать уравнения реакций в молекулярном и ионном виде: LCI3 NOH =...
36802. Структура и принцип работы полевых транзисторов, их статических характеристик и дифференциальных параметров 189.18 KB
  В данной лабораторной работе были изучены структура и принцип работы полевых транзисторов, их статические характеристики и дифференциальные параметры. Были определены пороговое напряжение, крутизна сток-затворных характеристик, внутреннее сопротивление транзисторов в режиме насыщения и в линейном режиме, вычислена удельная крутизна МОП-транзистора КП304А.