Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб1_7_Pascal.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
453.12 Кб
Скачать

6. Лабораторная работа №6. Подпрограммы

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

6.1. Разработка вычислительных процессов сложной структуры

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

Общий синтаксис:

Procedure <имя> (<список формальных параметров>);

Function <имя> (<список формальных параметров>) <тип>;

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

Описания процедур и функций помещаются в соответствующем разделе программы (см. лаб. раб.№1).

Обработка символьной информации. Для описания объектов содержащих символьную информацию используется тип string. Например,

var s:string;

Символьную строку можно рассматривать и как одномерный массив отдельных символов array [1..n] of char.

На строках определена операция сцепления (конкатенации). Напрмер,

Пусть s1:=’Студент ‘; s2:=’Иванов’; s:=s1+s2;

Тогда s примет значение ‘Студент Иванов’.

Для работы со строками определены следующие процедуры и функции:

Функция Copy(s,i,k)

Копирует из стоки s k символов, начиная с позиции i

Процедура Delete(s,i,k)

Удаляет k символов из строки s, начиная с позиции i

Процедура Insert(s1,s2,i)

Вставляет подстроку s1 в строку s2, с позиции i

Функция Length(s)

Возвращает длину строки s

Функция Pos(s1,s2)

Находит в строке s2 первое вхождение строки s1 и возвращает номер позиции, с которого она начинается. Иначе вернет 0

Процедура Str(x,s)

Преобразует число x типа integer или real в строку символов s

Процедура Val(s,x,code)

Преобразует стрку s в число x. Code=0, если все правильно, иначе code указывает позицию ошибки

6.2. Варианты заданий на лабораторную работу №6

Составить программу согласно варианту таблицы 5. Алгоритм вычисления оформить в виде подпрограммы Procedure.

Пример 6. В каждой строке все символы «*» заменить на символ «+». Подсчитать число таких замен.

Решение задачи разобъем на 2 подзадачи. Первая – ввод исходных данных и вывод результатов. Вторая(ее оформим в виде процедуры) – собственно замена символа * на +.

program z6;

uses crt;

var i,n: integer;

var mas: array[1..3] of string;

procedure zam(var s:string; var n:integer); {Процедура для обработки s;

n – кол-во замен }

var k:integer;

begin

k:=pos('*',s); {Определение позиции первой *}

while k>0 do

begin

delete(s,k,1);

insert('+',s,k); {Замена * на +}

n:=n+1; {Подсчет числа замен}

k:=pos('*',s); {Определение позиции очередной *}

end;

end;

{Основная программа}

begin

clrscr;

mas[1]:='fgf*jh*';

mas[2]:='trrrrr*';

mas[3]:='hjhj';

n:=0;

for i:=1 to 3 do

begin

zam(mas[i],n);

writeln ('rez=',mas[i],' stroka=',i);

end;

writeln('kol=',n);

readln;

end.

Таблица 5. Варианты заданий

Вариант

Содержание задания

Определить количество слов BEGIN в каждой строке

Все слова “враг” заменить на слово “друг”

Сжать каждую строку, заменив каждую группу пробелов одним пробелом

Сжать каждую строку, удалив все символы “; “. Определить число таких удалений в каждой строке.

Преобразовать каждую строку, заменив все фигурные скобки {} на круглые ().

Переписать каждую строку в обратной последовательности

Преобразовать каждую строку, удалив первое слово.

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

Перед каждым словом, начинающемся с буквы М поставить звездочку *

После каждого слова, оканчивающегося на “ки” поставить знак +

Определить количество слов END в каждой строке

Каждое слово “страна” заменить на слово “государство”

Сжать каждую строку, заменив все сочетания МММ на М.

Преобразовать каждую строку, заменив все квадратные [] и фигурные {} скобки на круглые.

Перед каждым словом, начинающемся с цифры поставить знак “$”

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

Преобразовать каждую строку, заменив все 3-х символьные слова на “***”

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

Преобразовать каждую строку, заменив все круглые скобки () на квадратные [].

Преобразовать каждую строку, удалив последнее слово.

Перед каждым словом END вставить слово “конец”

Определить самое длинное слово каждой строки.

Определить есть ли в тексте хотя бы одно слово-палиндром. Слово-палиндром одинаково читается слева направо и справа налево (тот, шалаш…)

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

Найти все слова-палиндромы. Слово-палиндром одинаково читается слева направо и справа налево (тот, шалаш…)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]