на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Приложения технологии языка программирования Паскаль в прикладной механике
p align="left">Для того чтобы положить значение в строковую переменную используются те же приёмы, что и при работе с символами. В случае присваивания конкретной строки, это строка должна записываться в апострофах (s:='Hello, world!'). Приведём простейший пример со строками: программа спрашивает имя у пользователя, а затем приветствует его:

Program Hello;

var s: string;

begin

write('Как Вас зовут: ');

readln(s);

write('Привет, ',s,'!');

readln;

end.

Хранение строк. В памяти компьютера строка хранится в виде последовательности из символьных переменных, у них нет индивидуальных имён, но есть номера, начинающиеся с 1). Перед первым символом строки имеется ещё и нулевой, в котором хранится символ с кодом, равным длине строки. Нам абсолютно безразлично, какие символы хранятся в байтах, находящихся за пределами конца строки. Рассмотрим пример. Пусть строка s объявлена как string [9], тогда после присваивания s:='Привет'; она будет хранится в следующем виде:

Номер байта

0

1

2

3

4

5

6

7

8

9

Содержимое

|#6

`П'

`р'

`и'

`в'

`е'

`т'

`ю'

`s'

`%'

Для того чтобы в программе получить доступ к n-му символу строки используется запись s[n]. Если поменять значение s[0] то это отразится на длине строки. В следующем примере из строки 'Привет' мы сделаем 'Привет!':

s[0]:=#7; s[7]:='!';.

Сравнение строк. Строки сравниваются последовательно, по символам. Сравниваются первые символы строк, если они равны -- то вторые, и т. д. Если на каком-то этапе появилось различие в символах, то меньшей будет та строка, в которой меньший символ. Если строки не различались, а затем одна из них закончилась, то она и считается меньшей. Примеры: 'ананас'<'кокос', 'свинья'>'свинина', ''<'A', 'hell'<'hello'.

Склеивание (конкатенация) строк. К строкам можно применять операцию «+», при этом результатом будет строка, состоящая из последовательно записанных «слагаемых». Пример: после действия s:= 'abc'+'def'+'ghi'; переменная s будет содержать `abcdefghi'.

Процедуры и функции для работы со строками. Наиболее часто употребляется функция length(s: string): integer (после двоеточия записан тип значения, возвращаемого функцией, в нашем случае -- целое число). Эта функция возвращает длину строки s.

3. Перечисляемый тип

Предположим, что нам требуется переменная для хранения дня недели. В этом случае можно воспользоваться целым типом (например byte) и хранить дни недели в виде чисел 1, 2, ... 7, но это будет не очень наглядно. Турбо Паскаль предоставляет более удобный вариант, а именно создание перечислимого типа, например, такого:

type Days = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);

После этого можно завести переменную этого типа (var day: Days;) и использовать её. Ниже приведены примеры использования:

day:=Wed;

...

if day>Fri then writeln('Сегодня выходной');

...

if day=Mon then writeln('Началась рабочая неделя');

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

Для переменных перечисляемых типов возможно применение функций succ и pred, например, succ(Wed) дает Thu, Pred(Sun) дает Sat. Если попытаться написать Pred(Mon) или Succ(Sun), то уже на этапе проверки программы компилятором произойдет ошибка.

Хранение значений перечисляемого типа устроено внутри довольно просто: хранятся целые числа от 0 до n, в нашем случае n = 6. Существует функция Ord, которая позволяет получить то число, в виде которого хранится какое-либо значение перечисляемого типа, например Ord(Wed) дает

При необходимости можно получить значение перечисляемого типа по его численному представлению, например, Days(1) есть Tue. После всего сказанного можно заметить, что при сравнении величин перечисляемого типа в действительности сравниваются их порядковые номера (Ord).

Пример использования перечисляемых типов:

Пусть корабль может двигаться только по четырем направлениям: на север, на запад, на юг и на восток, то есть текущее направление движения определяется переменной типа Directions = (North, West, South, East);. Этому кораблю можно подавать приказы следующих типов: вперёд, назад, влево, вправо, то есть любой приказ задать переменной типа Orders = (Ahead, Back, Left, Right);. Пусть корабль двигался по направлению d1, после чего ему дали приказ p. Программа должна определить, в каком направлении корабль будет двигаться после выполнения приказа.

Program Ship;

type Courses = (North, West, South, East);

Orders = (Ahead, Back, Left, Right);

var d1, d2: Courses;

p: Orders;

i: integer;

s: string;

begin {Запрашиваем у пользователя информацию о курсе и приказе}

writeln('Введите первоначальный курс корабля ');

write('(0-север, 1-запад, 2-юг, 3-восток) ');

readln(i);

d1:=Courses(i);

writeln('Введите приказ, данный кораблю ');

write('(0-прямо, 1-назад, 2-влево, 3-вправо) ');

readln(i);

p:=Orders(i); {Определяем новый курс}

case p of

Ahead : d2:=d1;

Back : d2:=Courses((ord(d1)+2) mod 4);

Left : d2:=Courses((ord(d1)+1) mod 4);

Right : d2:=Courses((ord(d1)+3) mod 4); {-1 - нельзя, так как (Ord(North)-1) mod 4 = -1}

end; {Выводим результат на экран}

case d2 of

North : s:='север';

West : s:='запад';

South : s:='юг';

East : s:='восток';

end;

writeln('Теперь корабль движется на '+s);

readln;

end.

4. Ограниченный тип

Этот тип также рассмотрим на примере. Пусть в некоторой переменной нужно хранить текущее число, то есть номер дня в месяце. В Турбо Паскале можно задать тип DaysInMonth = 1..31;. Переменные и константы этого типа могут принимать только такие значения, если попытаться задать что-либо другое, то компилятор выдаст ошибку. В качестве границ могут употребляться и отрицательные числа, например Temperature = - 60..50;

В качестве базового типа (то есть типа, из которого выбирается диапазон значений) могут использоваться почти все порядковые типы, то есть те, которые хранятся в виде целых чисел. К порядковым типам относятся: все целые типы (byte, integer, и т. п.), char, boolean, перечисляемые типы и ограниченные типы. В качестве базового типа нельзя использовать лишь сам ограниченный тип (трудно представить, как это можно сделать). С учетом этого правила допустимы такие объявления типов:

type SmallLatin = 'a'..'z'; {малые латинские буквы}

MyBoolean = True..False; {хотя это и бессмысленно}

Holidays = Sat..Sun; {выходные}

Нельзя в качестве базового типа употребить какой-либо вещественный тип, следующее объявление приведет к ошибке:

type Wrong = -1.25..1.25;

Заметим, что функции Ord, Succ и Pred могут применяться к любым порядковым типам, и, в частности, к ограниченным.

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

1. OutText(s: string). Эта процедура выводит строку s начиная с текущей позиции, то есть левый верхний угол выводимой строки находится в текущей позиции (по умолчанию это так). Текущая позиция задаётся, например, с помощью MoveTo.

2. OutTextXY(x,y: integer; s: string). Используется для вывода строки в конкретной позиции.

Если требуется вывести какие либо числа, то предварительно требуется преобразовать их в строку, например, с помощью процедуры Str.

Пример:

var r: integer;

s: string;

Str(r,s);

OutTextXY(100,200,'Результат='+s);

Турбо Паскаль позволяет использовать несколько различных шрифтов для вывода текста. Кроме того, можно менять направление вывода текста, а также размер символов. В этих целях используется процедура SetTextStyle(Font, Direction, CharSize: word). Перечислим возможные константы и значения для параметров этой процедуры.

Font (шрифт):

DefaultFont (шрифт 8x8 (по умолчанию)

TriplexFont (полужирный шрифт);

SmallFont (тонкий шрифт);

SansSerifFont (шрифт без засечек);

GothicFont (готический шрифт);

Direction (ориентация и направление вывода символов):

0 (привычный вывод слева направо

1 (снизу вверх (надпись «положена на бок»)

2 (слева направо, но «лежачими» буквами.

Size (размер шрифта (целые числа от 0 до 10).

Другая возможность при работе с текстом (это выравнивание его относительно задаваемых координат вывода. Для этого используется процедура SetTextJustify(horiz,wert: word). Horiz указывет как текст расположен относительно заданной позиции по горизонтали, а vert (по вертикали. Возможные константы:

для horiz:

LeftText (указанная позиция является левым краем строки);

CenterText (позиция является серединой выводимой строки);

RightText (правым краем строки);

для vert:

BottomText (позиция находится на нижнем крае изображения);

CenterText (по центру);

TopText (позиция является верхним краем изображения);

Процедура (последовательность действий (записанных на Паскале), названная каким-либо именем. Для того чтобы выполнить эту последовательность, нужно в соответствующем месте программы указать её имя (так, например, для очистки экрана при работе с графикой мы указываем ClearDevice;). Кроме того, что программа становится при использовании процедур короче и понятнее, процедуры можно вызывать из разных мест программы (в противном случае пришлось бы повторять в тексте программы одинаковые последовательности действий несколько раз).

Страницы: 1, 2, 3, 4, 5, 6, 7



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.