Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Program Prim2,




Const

Const

Var

END.

END.

BEGIN

Var

a,b,c:integer;

c:=547; b:=42;

a:=c+b;

writeln(a);

readln;

Программа записывается в виде строк. Максимальная длина строки 255 символов, но не стоит делать строки длиннее строки экрана – 80 символов, иначе строки будут "прятаться" за пределами окна экрана, хотя строки и можно просмотреть, передвигая "окно" (рис. 2.2).


 

       
   
 

 

 


"Хорошее" расположение строк "Плохое" расположение строк

рис. 2.2

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

 

2.4. Простейший ввод-вывод

 

В программе Prim1 мы задавали исходные данные с помощью оператора присваивания, что не всегда удобно, если одну и ту же программу нужно просчитывать с различными исходными данными. Для присвоения начальных значений можно использовать оператор readln (идентификатор, идентификатор,...,идентификатор); например, readln (c,b). встретив такой оператор, машина остановится и будет ждать, пока пользователь не наберет на клавиатуре значение с, нажмет клавишу "пробел”, наберет значение b и нажмет клавишу ENTER (ввод).значения величин c и b отобразятся на экране и после нажатия клавиши ENTER занесутся в ячейки памяти машины с именами с и b соответственно. тогда программа Prim1 примет вид:

Program Prim1a;

Var a, b, c: integer;

BEGIN readln (c,b);

a: = c+b;

writeln (a);

readln;

Замечание 1. Напомним, что машине безразлично, строчные или прописные буквы одинаковых слов end, end и end (но не для вас).

Замечание 2. Удобно ставить Readln перед END, так как после выполнения программы машина выдаёт на экран окно текста программы, а результат "прячется" за этим окном и, чтобы его посмотреть, необходимо убрать окно с программой с помощью нажатия клавиш. Если перед END имеется Readln, то программа не завершит работу, пока вы не нажмете клавишу ENTER, т.е. в данном случае на экран будет выведено значение а. Вы посмотрите результат и нажмете ENTER для входа в редактор языка Паскаль.

 

2.5. Арифметические выражения

 

Арифметическое выражение строится из объектов: арифметических (числовых) констант; идентификаторов переменных, описанных как числовые; функций, которые возвращают в результате их вычисления; арифметических значений этих объектов, соединённых между собой знаками арифметических операций и круглыми скобками. В качестве констант могут применяться арифметические константы, заданные в явном виде: 5; 5.35, -7.374 Е + 01 и т.п., а также имена констант, определённые в разделе const.

В качестве переменных используются переменные, определённые в разделе Var как byte, integer, real, и их разновидности, например, longinteger, и т.д., если им уже присвоены начальные значения.

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

Основные стандартные функции Паскаля:

Обозначения: I – целочисленный тип; B – байтовый тип; R – вещественный тип; IBR – целочисленный, или байтовый, или вещественный типы.

ABS (IBR) – определение абсолютной величины аргумента типа i,b,r.

ARCTAN (IBR) – вычисление угла (в радианах), тангенс которого равен IBR.

Cos (IBR), Sin (IBR).

Exp (IBR) – вычисление значения eIBR.

Ln (IBR) – натуральный логарифм IBR.Sgr (IBR) – возведение в квадрат IBR.

Sgrt (IBR) – вычисление корня квадратного из IBR.

Возведение в степень выполняется по формуле ar= exp (r *ln(a)) для положительных a либо организуется последовательное умножение на а r раз.Для отрицательных а возможен только второй способ.

Арифметические операции: +, , * – умножить; / – разделить; mod нахождение остатка от деления: 11 mod 5, результат1; div – целочисленное деление (дробная часть отбрасывается) 11 div 5, результат 2. Арифметические "и" – аnd и "или" – or производят поразрядное булевское умножение или сложение целых значений операндов согласно таблицам:

A аnd B A or B

0 аnd 0 = 0 0 or 0 = 0

1 аnd 0 = 0 1 or 0 = 1

0 аnd 1 = 0 0 or 1 = 1

1 аnd 1 = 1 1 or 1 = 1

Пример: a: = 12; b: = 27.

Во внутреннем коде машины, в двоично-десятичной системе, цифры представляются в десятичной системе:

0000 = ноль

0001 = один

0010 = два

0011 = три

0100 = четыре

0101 = пять

0110 = шесть

0111 = семь

1000 = восемь

1001 = девять

Тогда 12 в десятичной системе эквивалентно 0001 0010 двоично-десятичной системы. напомним, что в двоично-десятичной системе каждая десятичная цифра представлена 4-значным двоичным кодом этой цифры. В этом случае 27 - 0010 0111.

А аnd B А or B

0001 0010 0001 0010

0010 0111 0010 0111

результат: 0000 0010 результат: 0011 0111

Результат преобразуется в десятичную форму 2 и 37 соответственно.

ХOR, исключающее "или", производит операцию согласно таблице

A xor B

1 xor 1 = 0

1 xor 0 = 0

0 xor 1 = 1

0 xor 0 = 0

Результат преобразуется в десятичную форму.

Циклический сдвиг: k shl N - сдвиг числа к влево на N позиций,

k shr N - сдвиг числа к вправо на N позиций,

k и N - целые.

 

Пример: 2 shl 7 = 256

 


0000 0000 0000 0010

0000 0001 0000 0000

0 единиц

0 двоек

0 четверок

0 восьмерок

0 шестнадцать

0 тридцать два

0 шестьдесят четыре

0 сто двадцать восемь

1 двести пятьдесят шесть

Пояснение: в любой позиционной системе счисления на первом месте справа в числе стоит количество оснований системы счисения в степени 0, на втором месте справа – количество оснований в степени 1, на третьем месте справа – количество оснований в степени 2 и т.д. так, для десятичной системы имеем:


3 2 4

количество единиц 100 * 4 = 4

количество десятков 101* 2 = 20

количество сотен 102* 3 = 300

сложим = 324

Для двоичной системы:

1 0 1 1 0 0 1

количество единиц 20* 1 = 1

количество двоек 21* 0 = 0

количество четверок 22* 0 = 0

количество восьмерок 23* 1 = 8

количество шестнадцаток 24* 1 = 16

количество тридцать вторых 25* 1 = 0

количество шестьдесят четверок 26* 1 = 64

сложим = 89

т.е. десятичное 89 имеет изображение 1011001 в двоичной системе.

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

1. Запрещено последовательное появление знаков двух операций, т.е.

A + - B – неверно, A + (-B) – верно.

2. Порядок выполнения операций: /,,div, mod, and, or, shl, shr, –, +. Порядок может быть нарушен круглыми скобками, так как часть выражения, заключённая в круглые скобки, выполняется в первую очередь.

3. Если операции имеют одинаковый приоритет, то они выполняются последовательно.

4. Унарная операция имеет самый низкий приоритет, поэтому –A * b интерпретируется как –(A * b).

5. Не следует записывать выражения, не имеющие арифметического смысла, например, деление на выражение, равное 0.

6. Следует помнить, что операции / и * имеют одинаковый приоритет, например, 18/2*3=27, а не 3. чтобы было 3, необходимо записать 18/(2*3).

 

2.6. Описания переменных.

 

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

Данные в Паскале могут быть следующих типов:

 

Данные

Скалярные Структурированные

                               
               
 
 
 
 


массивы записи

Стандартные Определённые

пользователем строки файлы

       
   
 


целые логические интервальные множества

 

вещественные перечисляемые указатели

байтовые символьные

 

Каждому типу данных могут соответствовать константы. Количество элементов констант (цифр, букв) сильно зависит от конкретной конфигурации машины. Однако можно сказать, что для целого типа числа максимальное значение 32767, для вещественных, как минимум, – до 7 цифр мантиссы, для строковых – 255 символов и т.д.

Константы байтового типа – целые числа в диапазоне 0 – 255. Целые константы – набор цифр, возможно, со знаком ¢+¢ или ¢–¢. Вещественные константы могут записываться в двух формах – с фиксированной точкой: 57.34;

-256.758 и с плавающей точкой: 5.734е+01 (эквивалент 57.34) и -2.56758е+02

(эквивалент -256.758).

Логических (булевских) констант всего две: TRUE и FALSE. принято, что в машинном коде TRUE=1, FALSE=0. знаковые константы представляют все символы алфавита плюс символы кириллицы, но не для того, чтобы символ стал константой, его нужно заключить в апострофы: ¢А¢, ¢1¢, ¢+¢, ¢?¢ и т.д. Константы могут храниться в ячейках памяти, определенных какими-либо именами (идентификаторами).

Идентификатор – набор букв и цифр, первая из них – всегда буква, например А, ALP1, B2, GAMMA. Идентификаторы могут быть длиной до 255 символов, однако большинство компиляторов накладывает ограничение, т.е. длина имени не должна превышать восьми символов. Идентификатор в своем составе может содержать знак ¢_¢ (подчерк).

Переменные могут быть описаны в разделе описания переменных Var. разделов описания может быть до пяти, лучше их располагать в следующем порядке: Label, Const, Type, Var, functuon и procedure.

Если данное будет изменяться (по величине) в процессе выполнения программы, то имя этого данного описывается в разделе Var с соответствующим атрибутом:

Байтовый тип – byte;

Целый тип – integer;

Вещественный тип – real;

Булевский тип – boolean;

Символьный тип – char и т.д.

Пример:

k n:integer;

S,T,Z: char;

a,b,c: real;

L25,L3: boolean;

FAZA: byte;

В этом случае все описанные идентификаторы можно применять в программе. Работа этого раздела будет заключаться в том, что машина выделит две ячейки памяти с именами k и n. В ячейках могут храниться только целые числа: в ячейках с именами S,T,Z – по одному символу; в ячейках a,b,c – только величины типа вещественных чисел; в L25 и L3 –величины true и FALSE, а в ячейке с именем FAZA – только числа от 0 до 255. Если попытаться, например, в ячейку S поместить не символ, а число, то это приведет к ошибке, т.е. правильно S:= ¢A¢; или S:= ¢$¢; или S:= ¢1¢; однако неверно S:= 1 (1 – число в отличие от ¢1¢ – символа). Если в процессе выполнения программы данное не меняется, то его можно описать в разделе "Описания констант":

A=36.74; B=true;

С=¢а¢;

Здесь тоже выделяются ячейки памяти с именами А,В,С для хранения заданных величин, которые не подлежат изменению.

Допустимо описание констант-выражений:

М = (32.5 + 0.64) / 3.14;

Кроме того, машина "знает", чему равны константы е и π.

 

Пример. Составить программу для вычисления выражения

, где величины R, а, S, L, K вводятся с клавиатуры.

Пусть k, l - целые числа, остальные – вещественные.

Var k,L:integer;

Y,R,a,S: real; {здесь для хранения результата y тоже}

{нужна ячейка памяти}

Begin writeln ('введите це', {выдача на экран текста, указанного в}

'лое k,L, действительные' {кавычках; обратите внимание на прави-}

'R,а,S'); {ло переноса текста в операторе writeln:}

{если нужно перенести текст, то ставится} {закрывающий апостроф, затем запятая,}

{новая строка вновь начинается с апострофа}

readln (k,L,R,a,S);

Y: = 1-l(l+sqr(r* a/k))/(exp(2)/sqr(s)* sqr(l+r* a/l));

writeln (Y); readln;




Поделиться с друзьями:


Дата добавления: 2014-12-17; Просмотров: 956; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.061 сек.