Файл: Практическая работа Реализация алгоритма линейной структуры.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.02.2024

Просмотров: 34

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Задание к работе

Набрать программу, отладить ее, протестировать. Распечатать текст программы и результаты ее работы на тестовых данных.
Содержание отчета


  1. Описание используемых структур данных.

  2. Условие задачи.

  3. Описание алгоритма.

  4. Набор тестовых данных с обоснованием их выбора.

  5. Текст программы.

  6. Описание и анализ ошибок, выявленных при отладке программы.


Краткие теоретические сведения

Строка это последовательность символов определённой длины.

Для описания переменных этого типа используется зарезервированное слово string.

Переменные типа string могут быть объявлены следующим образом:

Var Strl:String[31];

Str2:String;

В квадратных скобках указывается максимально допустимый размер строки (количество символов), которая может храниться в переменной. Если максимальный размер не указан, то он автоматически принимается равным 255.
Паскаль предоставляет в распоряжение пользователя ряд стандартных функций и процедур, предназначенных для обработки строк. Рассмотрим наиболее важные из них:

Процедура Delete(Str,n,m)- удаляет из строки Str m символов, начиная с n-го.
Процедура Insert(Str1,Str2,n) - вставка строки Str1 в строку Str2 начиная с n-го символа, при этом Str1 не изменяется.
Процедура Copy(Str,n,m) - копирует m символов строки Str, начиная с n-го, при этом исходная строка не меняется. Результат этой функции можно присваивать другой строке или сразу выводить на экран.

Функция Length(Str) - результат этой функции целое число, равное количеству символов в строке Str.
Функция Pos(Str1,Str2) - определяеет позицию подстроки в строке. Результатом этой функции будет целое число, и оно определяет номер первого элемента, с которого начинается первое вхождение подстроки Str1 в строку Str2. Если такой подстроки нет, то значение функции равно 0.
Функция Str(N,Str1) - переводит числовое значение N в строковое и присваивает результат строке Str1, причём можно переводить как целые числа, так и вещественные, и есть возможность следить за формой числа, т.е. вполне закономерно следующее обращение к функции Str(f:6:3,Str1).
Функция Val(Str,N,K) - выполняет обратное преобразование, переводит строковое значение в числовое, если строка Str действительно является записью числа (целого или вещественного), то значение k=0, а N - число, иначе K будет равно номеру символа, в котором встречается первое нарушение записи числа N.

Пример.

Сколько раз в данной строке встречается символ 'а'.

Решение:

Function KolSim(st:String):byte;

var i,k:Byte;

Begin

k:=0; {кол-во символов 'a' в данной строке}

For i:=1 to Length(st) do

If st[i]='a' then Inc(k);

KolSim:=k;

End;

Пример.

Если длина строки нечётное число, то удалить среднюю букву.

Решение.

Если k - длина строки, то номер среднего символа равен k div 2 +1

Procedure Del(var st:String);

Var k:Byte;

Begin

k:=Length(st);

If k mod 2=1 then Delete(st,k div2+1,1);

End;


Пример.

Заменить все вхождения подстроки 'del' на 'Insert'

Решение.

Procedure Zamena(Var st:string);

Var k:Byte;

Begin

While Pos('del',st)<>0 do

begin

k:=Pos('del',st);

Delete(st,k,3);

Insert('Insert',st,k);

end;

End;
Варианты заданий

1/21. Дана строка символов. Дано слово. Удалит из строки это слово.

2/22. Дана строка символов. Выделить подстроку между первой и второй точкой.

3/23. Дана строка символов. Выделить подстроку между первой и последней точкой.

4/24. Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Посчитать сколько слов содержит данная строка.

5/25. Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Определить длину самого короткого и самого длинного слова.

6/26. Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Определить, сколько слов начинается и заканчивается одной и той же буквой.

7/27. Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Определить, сколько слово содержит хотя бы одну букву «е».

8/28. Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Определить, сколько слов содержит ровно три буквы «е».

9/29. Дана строка символов до точки. Определить, является ли она правильным скобочным выражением. Рассматривать только круглые скобки.

10/30. Дана строка символов до точки. Определить является ли она записью десятичного числа, кратного двум.

11/31. Дана строка символов до точки. Определить является ли она записью десятичного числа, кратного трем.

12/32. Дана строка символов до точки. Вывести ее на экран задом на перед.

13/33. Дана символьная строка. Зашифровать в ней все латинские символы с помощью циклической подстановки: A=>B=>CY=>Z=>A.


14/34. Дана символьная строка. Удалить из нее все рядом стоящие одинаковые символы, оставив по одному. Например, ФЫЫЫЫВВВААПРО=>ФЫВАПРО.

15/35. Дана символьная строка. Посчитать, сколько раз в ней встречается подслово АВВА. Обратите внимание: в строке АВВАВВА это подслово встречается два раза.

16/36. В записке слова зашифрованы – каждое из них записано наоборот. Расшифровать сообщение.

17/37. Дан текст. Напишите программу, определяющую процентное отношение строчных и прописных букв к общему числу символов в ней.

18/38. В строке заменить все двоеточия(:) точкой с запятой(;). Посчитать количество замен.

19/39. Удалить часть символьной строки, заключенной в скобки (вместе со строками).

20/40. Строка содержит одно слово. Проверить, будет ли оно читаться одинаково справа налево и слева направо.
Контрольные вопросы

  1. Дайте характеристику символьному типу.

  2. Дайте характеристику строковому типу.

  3. Что такое код ASCII?

  4. Как сравниваются строковые значения?

  5. Перечислите операции над строковыми значениями.

  6. Перечислите функции работы со строками. Объясните их назначение.

  7. Перечислите процедуры работы со строками. Объясните их назначение.


Лабораторная работа №8

Построение графика функции



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

  1. Изучить процедуры и функции работы в графическом режиме.

  2. Разработать алгоритм и программу вывода на экран графика функции разными способами, с помощью разных стандартных процедур согласно заданию.

Задание к работе

  1. Написать программу вывода на экран графика функции по разработанному алгоритму.

  2. Программа должна выводить в графическом режиме результат в виде:

  • линий – осей координат со стрелками на концах осей, с черточками для оцифровки и с оцифровкой осей.

  • графика функции, отображающего результат вычислений;

  • при выводе графика максимально использовать площадь экрана.

  • надписей у графика кривой с использование латинского и русского алфавитов.


  1. Набрать программу, отладить ее, протестировать.


Содержание отчета

  1. Условие задачи.

  2. Описание алгоритма.

  3. Текст программы.

  4. Описание и анализ ошибок, выявленных при отладке программы.


Краткие теоретические сведения

Пример программы выводящей на экран график функции

program graphfunc;

uses graph;

var x1,x2:real;{границы изменения аргумента функции}

y1,y2:real; {границы изменения значения функции}

x: real; {аргумент функции}

y: real; {значение функции в точке х}

dx: real; {приращение аргумента}

l,b: integer; {левый нижний угол области вывода графика}

w,h: integer; {ширина и высота области вывода графика}

mx,my: real; {масштаб по оси X и Y}

x0,y0: integer; {точка начала координат}

st:string; {изображение числа}

driver,mode:integer;
function f(x:real) :real;

begin

f:=2*sin(x)+exp(x/5);

end;
begin

initgraph(driver, mode, ‘c:\bp\bgi’);

l:=40; b:=400; h:=200; w:=200;

x1:=0; x2:=25; dx:=0.01;

{найдем максимальное и минимальное значение функции на отрезке[x1, x2]}

y1:=0; {минимум}

y2:=0; {максимум}

x:=x1;

repeat

y:=f(x);

if y

if y>y2 then y2:=y;

x:=x+dx;

until (x>x2);

my:=h/abs(y2-y1);

mx:=w/abs(x2-x1);

x0:=1;

y0:=b-abs(round(y1*my));

line(l,b,l,b-h);

line(x0,y0,x0+w,y0);

str(y2:5:1,st);

outtextxy(l+5,b-h,st);

str(y1:5:1,st);

outtextxy(l+5,b,st);

{строим график}

x:=x1;

repeat

y:=f(x);

putpixel(x0+round(x*mx),y0-round(y*my),15);

x:=x+dx;

until(x>x2);

readl;

closegraph;

end.

Варианты заданий

1/11/21/31.



2/12/21/32.



3/13/23/33.



4/14/24/34.



5/15/25/35.



6/16/26/36.



7/17/27/37.



8/18/28/38.



9/19/29/39.



10/20/30/40.




Контрольные вопросы

  1. Чем графический режим отличается от текстового?

  2. Чем характеризуется графический режим?

  3. Чем математические координаты отличаются от графических?

  4. Какой модуль Турбо Паскаля содержит графические процедуры?

  5. Как выполняется инициализация графического режима?

  6. Какие процедуры модуля Graph используются для вывода текста?

  7. Какая процедура модуля Graph используется для вывода окружности?

  8. Что такое видеоадаптер? Какие видеоадаптеры поддерживаются Турбо Паскалем?




Лабораторная работа №9

1   2   3   4

Тема: Обработка файлов



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

  1. Изучить способы работы с файлами, типы файлов, процедуры и функции работы с файловыми переменными.

  2. Разработать алгоритм для решения задач соответствующего варианта.

  3. Подобрать тестовые данные.


Содержание отчета

  1. Описание используемых структур данных.

  2. Условие задачи.

  3. Описание алгоритма.

  4. Набор тестовых данных с обоснованием их выбора.

  5. Текст программы.

  6. Описание и анализ ошибок, выявленных при отладке программы.


Краткие теоретические сведения

В Турбо Паскале различают собственно файл (область памяти на внешнем носителе) и переменную файлового типа в некоторой Turbo Pascal-программе.

Считается, что файловая переменная является представителем некоторого дискового файла в программе.

Тип файловой переменной задается одним из трех способов:

<имя типа> = FILE OF <тип компонент>;

<имя типа> = TEXT;

<имя типа> = FILE;

Например: type Matr=file of array[1..12] of real;

Matr - имя типа, который описывает файл, компонентами которого являются одномерные массивы.

В зависимости от способа объявления можно выделить ТРИ ВИДА ФАЙЛОВ:

  • типизированные файлы (FILE OF)

  • текстовые файлы (TEXT)

  • нетипизированные файлы (FILE)

Для того, чтобы реализовать доступ к файлу на внешнем носителе, необходимо связать его с файловой переменной. Для этого необходимо сопоставить переменную с именем файла.

Производят "связывание" процедурой ASSIGN.

Например: Assign(F,'c:\books\book4\test3.pas');


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

Для чтения файл инициируется с помощью стандартной процедуры RESET:

Reset(<ф.п.>);

Здесь <ф.п.> - файловая переменная, связанная ранее процедурой ASSIGN с уже существующим файлом или логическим устройством. При выполнении этой процедуры дисковый файл подготавливается к чтению информации. В результате специальная переменная - указатель, связанная с этим