- •Структура описания лабораторной работы
- •Выполнение работы
- •Форма отчета
- •Основные сведения
- •Установка и запуск системы
- •Интерфейс системы
- •Меню и команды
- •Пункт File
- •Пункт Edit
- •Пункт Search
- •Пункт Run
- •Пункт Compile
- •Пункт Debug
- •Пункт Options
- •Пункт Window
- •Пункт Help
- •Страница Compiler Options окна свойств проекта
- •Страница Directories окна свойств проекта
- •Страница Preferences окна свойств проекта
- •Файлы проекта
- •Основные приемы работы в СП Borland Pascal
- •Создание новой программы
- •Работа с уже созданной программой
- •Использование средств отладки
- •Пошаговое выполнение программы
- •Просмотр значений переменных
- •Использование точек останова
- •Порядок выполнения работы
- •Контрольные вопросы
- •Основные сведения
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Оператор варианта
- •Ввод данных с клавиатуры
- •Вывод данных на экран
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 3. Программы с циклами
- •Основные сведения
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с возрастающим параметром
- •Оператор цикла с убывающим параметром
- •Оператор прерывания цикла
- •Оператор продолжения цикла
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 4. Использование массивов
- •Основные сведения
- •Описание массива
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 5. Обработка символьных строк
- •Основные сведения
- •Описание строковых переменных
- •Операции над данными типа string :
- •Стандартные функции для обработки строк
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 6. Использование процедур
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 7. Использование функций
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 8. Работа с текстовыми файлами
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 10. Использование данных ссылочного типа
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 11. Создание и использование модулей
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Литература
– 17 –
в) var A: array[integer] of char;
г) type SITY=(Taganrog, RostovDon, Moscow); var A: array[SITY] of real;
var B: array[SITY, 2] of boolean; var B: array[SITY, 1..4] of integer;
д) var A: array[1..5, 1..7] of real; е) var A: array[10, 10] of integer;
4.Сколько элементов содержит каждый правильно описанный массив предыдущего пункта ?
5.Могут ли элементы массива быть различных типов ?
6.Как осуществляется доступ к элементам массива ?
Лабораторная работа 5. Обработка символьных строк
Основные сведения
Описание строковых переменных
var список_имен_переменных:string[максимальная_длина_строки];
или
var список_имен_переменных:string;
Максимальная длина строки не может быть больше 255.
Операции над данными типа string :
•операции отношения <, <=, >, >=, =, <> (сравнение лексикографическое);
•конкатенация (сцепление) +;
•доступ к символу строки переменная[номер_символа_в_строке].
Стандартные функции для обработки строк length(S:string):byte – возвращает текущую длину строки S. concat(S1,S2,…,SN:string):string – возвращает сцепление строк S1,…,SN .
copy(S:string; Start, Len:integer):string – возвращает подстроку S длиной Len,
начинающуюся с позиции Start .
delete(var S:string; Start,Len:integer) – удаляет в S подстроку длиной Len, начи-
нающуюся с позиции Start .
insert(var S:string; Subs:string; Start:integer) – вставляет в S подстроку Subs,
начиная с позиции Start .
pos(Subs,S:string):byte – ищет первое вхождение подстроки Subs в строку S и возвращает номер символа S, с которого это вхождение начинается. Нуль, если нет ни одного вхождения.
str(X; var S:string) – преобразует число X в строку S.
val(S:string; var X; var E:integer) – преобразует строку цифр S в значение числовой переменной X , E – код возникшей при преобразовании ошибки.
Пример выполнения
Дана строка символов, содержащая русские слова, разделенные пробелами. Найти слово, в котором больше всего различных гласных, и слово, в котором меньше всего различных согласных:
program PRIMER; const
LVowel : set of char=['А','а','Е','е','И','и','О','о', 'У','у','Ы','ы','Э','э','Ю','ю','Я','я'];
– 18 –
LConsonant: set of char=['Б','б','В','в','Г','г','Д','д','Ж','ж', 'З','з','К','к','Л','л','М','м','Н','н','П','п','Р','р', 'С','с','Т','т','Ф','ф','Х','х','Ц','ц','Ч','ч','Ш','ш', 'Щ','щ','Ъ','ъ','Ь','ь'];
var
S :string; {входная строка}
W :string; {сформированное (выбранное) слово}
SV,SC :string; {строки с различными гласными и согласными} SMaxV,SMinC:string; {слова с макс. кол. гласных и мин. - согласных} MaxV,MinC :integer; {макс. и мин. количества гласных и согласных}
i:integer; {позиция начала слова в строке}
j:integer; {позиция конца слова в строке} EndOfString:boolean;
k:integer;
begin
repeat {Ввод непустой строки} writeln('Введите строку'); readln(S)
until length(S)<>0;
SMaxV:=''; MaxV:=0;
SMinC:=''; MinC:=length(S);
j:=0;
while not EndOfString do begin {поиск начала слова} i:=j+1;
while (S[i]=' ') and (i<>length(S)) do i:=i+1; if (S[i]=' ') and (i=length(S)) then break; {строка закончилась, больше делать нечего} {поиск конца слова}
j:=i;
while (S[j]<>' ') and (j<>length(S)) do j:=j+1; if j=length(S) then EndOfString:=TRUE else j:=j-1;
{строка закончилась, следует обработать последнее слово} W:=copy(S,i,j-i+1); {выделение слова}
{обработка слова}
SV:=''; |
{строка |
неповторяющихся гласных} |
SC:=''; |
{строка |
неповторяющихся согласных} |
for k:=1 to length(W) do begin if W[k] in LVowel then begin {добавление новой гласной}
if pos(W[k],SV)=0 then SV:=SV+W[k] end
else if S[k] in LConsonant then begin {добавление новой согласной}
if pos(W[k],SC)=0 then SC:=SC+W[k] end;
end; {for k:=1 to length(W)} if length(SV)>MaxV then begin
{обновить SMAXGL} SMaxV:=W; MaxV:=length(SV) end;
if length(SC)<MinC then begin {обновить SMINSG}
– 19 –
SMinC:=W;
MinC:=length(SC)
end;
end; {while not EndOfString }
writeln('Исходная строка'); writeln(S);
writeln('Слово с макс.количеством неповторяющихся гласных :',SMaxV); writeln('Слово с мин.количеством неповторяющихся согласных:',SMinC) end.
Варианты заданий
1.Дана строка символов, содержащая русские слова, разделенные пробелами. Вывести в алфавитном порядке слова с четной длиной.
2.Дана строка символов, содержащая русские слова, разделенные пробелами. Удалить из нее симметричные слова. В оставшихся словах поместить первую букву на последнее место. Вывести на экран полученные слова, упорядочив их лексикографически.
3.Дана строка символов, содержащая русские слова, разделенные пробелами. Удалить из слов с четной длиной все гласные, а из слов с нечетной длиной – все согласные. Полученные слова вывести на экран в лексикографическом порядке.
4.Даны две строки, содержащие русские слова, разделенные пробелами. Сформировать третью строку, включающую в себя буквы, стоящие на одном и том же месте в первых двух строках. После этого полученную строку вывести на экран в обратном порядке (справа налево).
5.Дана строка символов, содержащая русские слова, разделенные пробелами. Удалить из всех четных по порядку слов сочетания букв ок и ек, а из нечетных по порядку слов – соче-
тания букв жи и ши. В полученных словах переставить буквы в обратном порядке, после чего вывести их на экран, упорядочив в обратном лексикографическом порядке.
6.Дана строка символов, состоящая из русских слов, разделенных пробелами. В каждом четном по порядку слове удалить все нечетные буквы, а в каждом нечетном слове удалить все четные буквы. Полученные слова вывести на экран в обратном лексикографическом порядке.
7.Дана строка из слов, содержащих буквы и цифры. Слова разделены пробелами. Удалить из каждого слова цифры. Вывести полученные слова, упорядочив их по убыванию количества входивших в них цифр.
8.Дана строка символов, состоящая из русских слов, разделенных пробелами. Вывести на экран все слова, размещенные на четных местах в строке, упорядоченные, во-первых, по возрастанию количества букв, а во-вторых (для слов с одинаковым количеством букв) – по алфавиту.
9.Дана строка символов, состоящая из русских слов, разделенных пробелами. Найти среди них слово, состоящее из наибольшего количества неповторяющихся букв, и слово, состоящее из наименьшего количества неповторяющихся букв.
10.Дана строка символов, состоящая из русских слов, разделенных пробелами. Напечатать упорядоченные по алфавиту слова, начинающиеся с гласной буквы.
11.Дана строка символов, состоящая из русских слов, разделенных пробелами. Переставить символы строки в обратном порядке (справа налево). Выбрать из полученной строки все слова с четным количеством гласных. Вывести эти слова на экран в обратном лексикографическом порядке.
Контрольные вопросы
1.Что такое лексикографический порядок ?
2.Какая из строк abcd и xyz больше?
3.Что такое фактическая и максимальная длины строки ?
4.Какова максимальная длина пустой строки ?