\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" icon

" недостойно совершенства человеческого подобно рабам тратить часы на вычисления."

Реклама:



Название" недостойно совершенства человеческого подобно рабам тратить часы на вычисления."
страница3/11
Дата конвертации04.03.2013
Размер0.76 Mb.
ТипДокументы
источник
1   2   3   4   5   6   7   8   9   10   11
^

3. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ турбо-ПАСКАЛЬ

3.1. ЛИНЕЙНЫЕ ПРОГРАММЫ

3.1.1. СТРУКТУРА ПРОГРАММЫ



Чтобы иметь представление о том, как программируют на языке Турбо-Паскаль, приведем пример программы pr1, определяющей сумму двух чисел:

program pr1;

var a,b,result: integer;

begin

a:=2;

b:=3;

result:=a+b;

writeln(result);

end.

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

Структура программы на языке Турбо-Паскаль в общем случае выглядит следующим образом:

  • заголовок программы;

  • описательная часть;

  • операторная часть.

Заголовок программы представляется так:

program <имя программы>;

Cлово program является зарезервированным (ключевым), т.е. не может использоваться для каких-нибудь иных целей.

<имя программы> – это правильный идентификатор. Идентификаторы (или имена) используются в программе и для обозначения переменных, меток, типов, процедур и функций, констант. На имена (идентификаторы) накладываются некоторые ограничения. Важным ограничением при выборе идентификаторов является невозможность использования ключевых слов, например program или var. Идентификатор должен начинаться с буквы и может содержать буквы латинского алфавита, цифры и знаки подчеркивания. Длина идентификатора может быть любой, но значащими являются первые 63 символа. Имена могут нести смысловую нагрузку, как, например, result, но могут и не нести. Использование осмысленных имен предпочтительнее, так как это делает программу более простой для понимания. В идентификаторах, как и во всей программе на Турбо-Паскале, игнорируется разница в высоте букв.

Описательная часть программы может содержать несколько разделов:

1) раздел меток;

2) раздел констант;

3) раздел типов;

4) раздел переменных;

5) раздел процедур и функций.

По мере необходимости далее в тексте будет излагаться материал по каждому разделу описательной части.

Операторная часть программы заключается в операторные скобки begin end и содержит операторы , необходимые для выполнения последовательности действий для решения поставленной задачи. Разделителем между разделами описательной части и операторами служит точка с запятой. В конце программы должна стоять точка. Язык Турбо-Паскаль является языком свободного формата, что позволяет размещать в строке как один, так и несколько операторов.

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

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

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

Рассмотрим подробнее описания переменных и операторы, необходимые для написания линейной программы.

^

3.1.2. ОПИСАНИЕ ПЕРЕМЕННЫХ



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




Рис. 5

Диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать один, два или четыре байта. В табл.2 приводятся названия целых типов, длина их внутреннего представления в байтах и диапазон возможных значений. Целые типы относятся к так называемым порядковым типам. Для порядковых типов характерно то, что такие типы имеют конечное число возможных значений и эти значения можно каким-либо образом упорядочить и каждому значению поставить в соответствие целое число. К любому порядковому типу применима функция ord(x), которая возвращает порядковый номер применима функция ord(x), которая возвращает порядковый номер значения выражения х. Для целых типов ord(x) возвращает само же значение х. К порядковым типам можно также применить функции pred(x) и succ(x). Функция pred(x) возвращает значение, которое соответствует порядковому номеру ord(x)-1, а функция succ(x) – ord(x)+1.


Таблица 2

^ Целые типы


Длина, байт

Название типа

Диапазон значений

1

byte

от 0 до 255

1

shortint

от -128 до 127

2

word

от 0 до 65535

2

integer

от -32768 до 32767

4

longint

от -2147483648 до 2147483647


Над целыми числами выполняются операции:

"+" – сложение; "*" – умножение;" / "– деление;

"-" – вычитание; div – целочисленное деление;

mod – получение остатка от целочисленного деления.

Например, ^ 5div2 дает результат 2, 6div2 дает – 3, 5mod2 дает – 1, а 6mod3 0.

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


Таблица 3

^ Встроенные процедуры и функции для обработки

данных целого типа


Обращение

Реализуемое действие

abs(x)

Возвращает модуль х

dec(x[,i])

Уменьшает значение х на i, при отсутствии i на 1

inc(x[,i])

Увеличивает значение х на i, при отсутствии i на 1

odd(i)

Возвращает true, если i - нечетное число, false - четное

random(w)

Возвращает псевдослучайное число, равномерно распределенное на интервале[0,w-1]

sqr(x)

Возвращает квадрат аргумента



Под данными вещественного типа понимаются числа, записанные с десятичной точкой. Значение числа вещественного типа представляется в ЭВМ лишь с некоторой конечной точностью, которая зависит от внутреннего формата вещественного числа. В табл. 4 приведены названия вещественных типов, их длина в байтах, а также диапазон возможных значений. Существует две формы представления вещественных чисел: с фиксированной и с плавающей точкой. Варианты записи вещественных чисел с фиксированной точкой приведены первом в столбце, а с плавающей – во втором:

1.36 1.36e0

0.0013 1.3e-3

123.123 1.23123e2

В разделе описания переменных данные вещественного типа можно описать так:

var a,b: real;

c,d: single;

k: double;

l,m,n: extended;

^ Таблица 4

Вещественные типы



Длина,

байт

Название

Диапазон десятичного порядка

Количество значащих цифр

4

single

от -45 до +38

от 7 до 8

6

real

от -39 до +38

от 11 до 12

8

double

от -324 до +308

от 15 до 16

10

extended

от -4951 до +4932

от 19 до 20

8

comp

от до

от 19 до 20

В табл.5 приведены встроенные функции и процедуры для обработки данных вещественного типа.

Таблица 5

^ Встроенные функции для обработки данных

вещественного типа


Обращение

Реализуемое действие

abs(x)

Модуль аргумента

arctan(x)

Àрктангенс (радианы)

frac(x)

Дробная часть числа

int(x)

Целая часть числа

ln(x)

Натуральный логарифм

pi

=3.14159...

random

Псевдослучайное число, принадлежащее интервалу[0,1]

randomize

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

sqrt(x)

Корень квадратный

sqr(x)

Квадрат аргумента

sin(x)

Синус(радианы)

сos(x)

Косинус(радианы)

exp(x)

Экспонента
^

3.1.3. ОПЕРАТОР ПРИСВАИВАНИЯ



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

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

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

var

x,y : integer;

a,b : real;

то можно записать операторы присваивания

x:=x+5;

y:=x;

a:=b;

b:=5.33*x+y/2;

Как уже говорилось, тип переменной позволяет не только устанавливать длину ее внутреннего представления, но и контролировать те действия, которые осуществляются над ней в программе. Контроль за использованием переменных еще на этапе компиляции программы – важное преимущество Турбо-Паскаля, повышающее его надежность. В Турбо-Паскале почти не возможны автоматические преобразования типов. Исключение сделано только в отношении констант и переменных типа integer, которые можно использовать и в выражениях типа real, т.е. для описанных выше переменных оператор x:=a будет неверным из-за невозможности преобразования вещественного типа к целому. В то же время, оператор a:=x будет верным.

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

^

3.1.4. ПРОЦЕДУРЫ ВВОДА И ВЫВОДА



Ввод/вывод связан с обменом информацией между оперативной памятью и внешними устройствами. Здесь рассмотрены процедуры ввода/вывода: read, readln, write, writeln, использующие стандартные файлы ввода/вывода. Стандартным файлом ввода является клавиатура, а вывода – экран. Для ввода данных с клавиатуры применяются процедуры:

read (<список ввода>);

readln (<список ввода>);

Список ввода – это последовательность из одной или более переменных типа char, string, а также любого целого или вещественного типа. При вводе числовых переменных процедура read вначале выделяет подстроку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строки пропускаются, выделяется первый значащий символ, признаком конца подстроки является любой из вышеперечисленных символов или символ конец файла. Выделенная таким образом подстрока рассматривается как символьное представление числовой константы, которое преобразуется в соответствии с типом переменной, и полученное значение присваивается переменной. Если значащих символов в строке нет, а список ввода еще не исчерпан, то автоматически осуществляется переход к новой строке. Процедура readln идентична процедуре read за исключением того, что после считывания последней переменной, оставшаяся часть строки пропускается, так что следующее обращение к read или readln начнется с первого символа новой строки. Кроме того, процедуру readln можно вызывать без параметров, что приведет к пропуску всех символов текущей строки. Рассмотрим следующий фрагмент программы:

var a,b,c,d:real;

begin ... read(a,b,c,d); ... end.

Пусть, требуется ввести числа 1,3;13,3;76,8;125,0. Информация набирается в виде:

1.3 13.3 76.8 125.0

на одной или нескольких строках. В результате выполнения процедуры read переменной а присвоится значение 1.3, переменной b – значение 13.3, с – 76.8, d – 125.0. Если же ввод производится с помощью двух процедур:

readln(a,b,c);read(d);

числа, соответствующие a,b,c, набираются на одной строке, а число, соответствующее d, – на другой.

Для вывода данных на экран используются процедуры:

writeln(<список ввода>);

write(<список ввода>);

Список вывода может содержать одно или несколько выражений типа char, string, boolean, а также любого целого или вещественного типа. Отличие процедуры writeln от write состоит лишь в том, что в процедуре write курсор остается на той же строке экрана за последним выведенным символом, а в writeln курсор переходит на начало следующей строки. Предположим, что переменные a,b,c описаны как целые и имеют соответственно значения 132, 25, -37. После выполнения процедур

writeln(a,b);write(c);

a и b будут напечатаны на одной строке, а с  на другой:

13225

-37

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

writeln(a:3,b:5,c:4);

В этом случае при печати под значение переменной a отводится 3 позиции, b5 позиций, под с4 позиции, т.е. будет выведено 132 25 -37.

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

writeln('a=',a:1,'b=',b:2,'c=',c:3);

В последнем примере используется возможность вывода строк символов, при этом будет напечатано:

a=132b=25c= -37

Пусть переменные d, e, f описаны как вещественные и имеют соответственно значения 13,13;123,45;-987,654. Результатом работы оператора

writeln('d=',d:5:2,'e=',e:8:3,'f=',f:8:2);

будет строка

d=13.13e= 123.450f= -987.65

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

writeln('d=',d:10,' e=',e:9,' f=',f);

d= 1.313E+01 e= 1.23Е+02 f=-9.8765000000E+02

^

3.1.5. ПРИМЕР ЛИНЕЙНОЙ ПРОГРАММЫ



Теперь, когда мы познакомились с операторами, необходимыми для составления линейной программы, рассмотрим еще один пример такой программы. Пусть дано два числа a и b  длины сторон прямоугольника. Найти площадь s и периметр p прямоугольника. На рис.6 представлена графическая схема алгоритма решения данной задачи, а программа приведена в примере pr2.




Рис. 6
program pr2 ;

var

a,b,s,p:real;

begin

writeln('Введите длины стоpон пpямоугольника:');

read(a,b);

s:=a*b;

p:=(a+b)*2;

writeln('Площадь = ',s:5:3);

writeln('Пеpиметp = ',p:5:3);

end.

В этой программе все операторы выполняются последовательно друг за другом. Выполнение программы начинается с вызова процедуры вывода writeln, которая выводит на экран подсказку "Введите длины сторон прямоугольника:", что обеспечивает удобный интерфейс с пользователем. Вызов процедуры read приводит к прерыванию программы до тех пор, пока пользователь не введет два числа. Далее вычисляются площадь и периметр прямоугольника и выводятся результаты на экран.

1   2   3   4   5   6   7   8   9   10   11



Реклама:

Похожие:

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconНп «сибирская ассоциация консультантов» Основные положения концепции человеческого капитала
В современной социологической науке сложилось несколько концепций исследования человеческих ресурсов – концепция человеческого фактора,...

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconОгънят отвътре Карлос Кастанеда
Ка от книгите на Карлос Кастанеда е едно прекрасно и примамливо озарение в недрата на най-дълбоките ни тайни, което подобно на внезапно...

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconКачество Роль потребителя
Сколько часов в месяц хотели и могли бы тратить на семинары? Сколько на самообучение?

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconВопросы к дифференцированному зачету по дисциплине «аналитическая химия»
Молярность и нормальность растворов. Грамм-эквивалент и титр раствора. Их вычисления. Закон эквивалентов

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconТема: Предмет и задачи анатомии. Место анатомии среди других наук. Общее представление об устройстве человеческого тела. Ткани, органы, системы и аппараты органов
Общее представление об устройстве человеческого тела. Ткани, органы, системы и аппараты органов

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconЧасы (В. Орлов)

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconСергей Конев Вместо предисловия освобождение
А так как мы издаем журнал не академический, а публицистический, то перо наше должно разить врагов как штык. Иначе зачем тратить...

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconФ. М. Достоевский роман «преступление и наказание» Почему, заложив Алене Ивановне отцовские серебряные часы, Раскольников вышел от нее в «решительном смущении»
Почему, заложив Алене Ивановне отцовские серебряные часы, Раскольников вышел от нее в «решительном смущении»?

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconСинтез Совершенства Образов принципами огнеобразности мысли цельным Огнем дп. Цель: Выявление возможностей действенности Синтезобраза ив огнем Безмолвия ивомг задача
Мыслеобраз ид: Иерархизация условий диво 76-го Проявления Изначальным Синтезом

\" недостойно совершенства человеческого подобно рабам тратить часы на вычисления.\" iconМ. М. Бахтин Одним из самых труднопереживаемых противоречий человеческого существования является противоречие между рождением и смертью, жизнью и безжизненностью, длением и его прерывом. Осознание этого противореч
Одним из самых труднопереживаемых противоречий человеческого существования является противоречие между рождением и смертью, жизнью...

Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©docsinf.ru 2000-2013
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы