Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка по информатике, часть 2

.pdf
Скачиваний:
24
Добавлен:
30.03.2015
Размер:
525.19 Кб
Скачать

1.Латинские прописные буквы.

2.Латинские строчные буквы.

3.Русские прописные.

4.Цифры и латинские прописные буквы

5.Любые символы ПК.

6.Русские строчные.

7.Цифры и латинские строчные буквы.

8.Цифры и любые латинские буквы.

Множество для проверки принадлежности ему заданных элементов (буква)

a)латинские строчные буквы;

b)«а»«f»;

c)«&»«Ζ»;

d)латинские прописные буквы;

e)«Α»«F»;

f)«Χ»«Ζ»;

g)русские строчные буквы;

h)«а»«n»;

i)«p»«Я»;

j)русские прописные буквы;

k)«Ε»,«Ъ», «Ы», «Ь»;

l)«Α» «И»;

m)все цифры;

n)1…9;

o)5…9.

Лабораторная работа 14

Модульное программирование

Структура модуля:

 

UNIT <ИмяМодуля>;

 

INTERFACE

 

<интерфейсная часть>

{раздел описаний}

IMPLEMENTATION

 

<исполняемая часть>

{описания подпрограмм}

BEGIN

 

<инициирующая часть>

{фрагмент программы}

END.

признак конца модуля

Пример. Найти соотношение между максимальными элементами для массивов

Аи В.

Выделим вычисление наибольшего элемента в подпрограмму, которую вынесем в

отдельный модуль.

Program s_mod; {Главная программа}

uses crt,r_pos; {подключается модуль R_pos } var

a, b: mass; i, s: integer;

begin clrscr;

41

writeln('Введи массив А из 8 чисел типа integer'); for i:=1 to 8 do

read(a[i]);

writeln('Введи массив В из 8 чисел типа integer'); for i:=1 to 8 do

read(b[i]); write('Соотношение =');

writeln('maxA/maxB'=MAX(a)/ MAX(b):6:3); readln;

end.

UNIT r_pos; {Подключаемый модуль с именем R_pos.pas}

INTERFACE type

mass=array[1..8] of integer; function max(d:mass):integer; IMPLEMENTATION function min(d:mass):integer; var mx,i:integer;

begin mx:=d[1];

for i:=2 to 8 do

if mx<d[i] then mx:= d[i];

max:=mx;

write(mx,':');

end;

END.

Задание (программы 14_1 и 14_2)

Для задач 8_3 и 9_2 разработать программы, скрыв подпрограммы в отдельном файле (модуле).

Лабораторная работа 15

Динамические структуры данных. Списки

Список это набор связанных между собой динамических элементов.

Элемент односвязной динамической структуры данных состоит из двух полей: информационного и указательного и описывается через тип «запись»:

Type

Tptr =^Telem;

 

 

TElem= Record

 

 

info: integer;

 

 

next: Tptr

{указатель}

 

end;

 

42

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

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

Пример. Задать списком строку, заканчивающуюся точкой. Подсчитать число цифр в ней.

Program pos04din;

Type

sv{связь}=^zv;

{звено строки}

Zv = record

 

info: char;

{Информационное поле}

next: sv

{Указатель на следующий элемент}

end;

 

Var

P {Указатель на начало}, t {Указатель на текущее звено}: sv;

sym: char;

 

k: integer;

{Количество цифр}

BEGIN

{Ввод строки и представление ее в виде цепочки} Writeln('Введи первый символ ');

read(sym); {Формирование первого звена} new(p);

p^.info:=sym;

p^.next:=nil;

t:=p; {Подготовка к циклу формирования остальных звеньев} Write('Введи остальные символы и точку ');

while sym<>'.' do {Цикл обработки последовательных литер строки}

begin

 

read(sym);

 

new(t^.next);

 

t:=t^.next;

{адрес следующего элемента}

t^.info:=sym;

 

t^.next:=nil;

end; {Исходное слово представлено в виде цепочки} k:=0; t:=p;

while t<>nil do begin

if (t^.info>='0')AND(t^.info<='9') thenk:=K+1; t:=t^.next

end;

Writeln;

Writeln('Цифр в строке – ',k);

43

END.

Задание 1 (программа 15_1)

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

2.Используя динамическую структуру список, проверить, является ли он упорядоченным набором чисел.

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

4.В деке задать слово. Определить, является ли оно словом-перевертышем.

5.Сформировать динамический список из элементов целого типа. Удалить из него отрицательные элементы. Распечатать исходный и результирующий списки.

6.Найти сумму четных элементов списка, состоящего не менее чем из двух элементов.

7.Используя динамическую структуру список, подсчитать сумму чисел в нем.

8.В динамическом списке из каждой группы подряд идущих одинаковых

элементов оставить один.

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

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

11.Сформировать очередь из элементов целого типа. Четные элементы возвести в квадрат. Распечатать исходную и результирующую очереди.

12.Используя динамическую структуру список, подсчитать количество положительных и отрицательных чисел в списке.

13.Задать два динамических списка. Проверить их на равенство.

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

15.Используя динамическую структуру, список для хранения символов, определить, является ли заданная фраза палиндромом.

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

17.Используя динамическую структуру очередь, перевести введенную последовательность чисел в слово, состоящее из кодов ASCII.

18.Удалить из списка все отрицательные элементы.

19.Используя динамическую структуру список, сохранить ряд чисел. Удалить повторяющиеся элементы.

20.Построить динамический список из элементов целого типа с помощью датчика случайных чисел. Найти значение среднего элемента списка.

21.Используя динамическую структуру список, сохранить ряд чисел. Удалить элемент с заданным номером.

44

22. Сформировать динамическую структуру «очередь», элементами которой

являются цифры. Извлекая элементы из очереди, напечатать их двоичные эквиваленты.

23.Сформировать список динамических элементов, упорядоченный по возрастанию. Включить в список новый элемент, сохранив свойство упорядоченности.

24.Используя динамическую структуру стек, распечатать элементы в обратном порядке.

25.Используя динамическую структуру "очередь", зашифровать содержимое текста: каждый символ заменить его кодом+1.

26.Используя динамическую структуру "стек", зашифровать содержимое текстового файла.

27.Используя динамическую структуру список, сохранить ряд чисел. Удалить элементы с заданным ключевым полем.

Задание 2 (программа 15_2)

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

Лабораторная работа 16

Графика

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

тическое описание:

 

x = a t – b sin t,

y = a – b cos t,

при b<a циклоида получается укороченной, при b>a – удлиненной, b = a дает обычную циклоиду.

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

Поскольку в графическом режиме работы дисплея верхняя левая точка экрана имеет координаты (0,0), сместим ось 0Х на середину экрана, а ось 0У – на 10 пикселей вправо. Для наглядности увеличим график путем использования масштабных коэффициентов по каждой оси координат. Кроме того, нужно помнить, что координаты точки в графическом режиме могут быть только целого типа.

С учетом вышесказанного программа построения циклоиды имеет вид

program graph17pr;

 

uses graph;

{подключение модуля GRAPH}

var

 

a,b,t:integer;

{a, b – переменные, определяющие a – тип драйвера и }

x,y,tt:real;

{b – видеорежим }

begin

 

detectgraph(a,b);

{автоопределение типа драйвера и видеорежима}

45

initgraph(a,b,'c:\progDOS\BP\BGI');

{инициализация графического режима}

setgraphmode(2);

 

{установка нового режима (2), очистка экрана}

setBKcolor(0);

 

 

{основной цвет фона – черный}

setcolor(4);

 

 

{основной цвет рисования – красный}

moveTO(0,240);

 

{смещает курсор для вычерчивания оси Х}

lineRel(625,0);

 

{вычерчивание линии по приращению от указателя}

readln;

 

 

{пауза до нажатия клавиши <Enter>}

setcolor(2);

 

 

{основной цвет рисования – зеленый}

line(10,0,10,478);

 

{рисует линию от точки (Х1,Х2) до т.(Х2,У2)}

readln;

 

 

{пауза до нажатия <Enter>}

setcolor(5);

 

{основной цвет рисования – фиолетовый}

readln;

 

 

{пауза до нажатия клавиши <Enter>}

moveTO(10,240);

{смещение курсора к точке с кординатой (0,240)}

 

 

tt:=0.0;

 

for t:=1 to 200 do

 

 

{расчет и вычерчивание циклоиды}

 

begin

 

 

 

x:= 0.4*tt – 0.5*sin(tt);

 

 

y:= 0.4 – 0.5*cos(tt);

{линия}

 

lineTO(trunc(100*x)+10,trunc(100*y)+240);

 

 

tt:=tt+Pi/32

 

 

end;

 

readln;

 

 

{пауза до нажатия клавиши <Enter>}

SettextStyle(0,0,3);

 

{установка шрифта(0..4), стиля, размера текста}

OutTextXY(50,440,'график циклоиды');

{выводит текст от т.(50,440)}

readln;

 

 

{пауза до нажатия клавиши <Enter>}

closegraph;

{закрывает графический режим и восстанавливает текстовый}

end.

Поскольку вычисляемые в программе координаты являются вещественными, то для их преобразования к целым значениям использована функция TRUNC().

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

Задание 1 (программа 16_1)

Начертить графики функций F1(x) и F2(x) для результатов, полученных в программе 3_2.pas. На экран должен выводиться график с надписью выводимой функции.

Задание 2 (программа 16_2) Напишите и отладьте программу для одной следующих задач.

1.Подготовить и отладить программу вычерчивания квадрата, вписанного в окружность. Запрограммировать изменение цветов окружности.

2.Организовать вывод на экран разноцветных цифр поочередно горизонтально

ивертикально.

46

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

4.Разработать программу изображения точки, движущейся по косинусоиде (y =

=cos(x)).

5.Отладить программу рисования квадрата с диагоналями, пресекающимися в центре экрана. Создать иллюзию его уменьшения.

6.Начертить на экране картинку «круги на воде».

7.Изобразить движущийся на зрителя экран (прямоугольник).

8.Подготовить и отладить программу изображения правильного треугольника, вращающегося вокруг своей (любой) медианы.

9.Разработать программу вывода на экран компьютера пяти квадратов по углам и в середине экрана. Запрограммировать поочередный вывод их разными цветами.

10.Разными цветами в различных точках экрана выводить надпись «TurboPascal» с изменением размера шрифта.

11.Изобразить трубу, образованную разноцветными окружностями.

12.Организовать вывод на экран названия континентов разными цветами в различных точках экрана готическим и обычным шрифтами.

13.Изобразить спутник (точку), вращающийся вокруг планеты.

14.Изобразить НЛО, приземляющийся в различных точках экрана.

15.Организовать вывод на экран разноцветных русских букв разных размеров поочередно высвечивая или заполняя экран в хаотическом порядке.

16.Отладить программу вычерчивания графиков функций y = sin(x) и y = =sin(2x) разными цветами с разными осями координат.

17.Организовать вывод на экран формул химических элементов разными цветами в различных точках экрана.

18.Начертить на экране ряд геометрических фигур: квадрат, круг, треугольник, прямоугольник, используя разные цвета.

19.Изобразить схематично на экране движущегося человечка.

20.Изобразить движение объекта по прямоугольной спирали.

ЗАДАНИЯ К РАСЧЕТНО-ГРАФИЧЕСКОЙ РАБОТЕ

Разработать программу нахождения корней уравнения f(x)=0 на интервале [a,b] с точностью e=0.001 (интервал подобрать или рассчитать самостоятельно). При реализации можно использовать метод половинного деления (бисекции) или метод хорд [8, 9]:

1. x – 2e –x x = 0.

3. 5x – e x –2x x = 0. 5. 2x – 3x – 2 = 0.

7. sin x + x – 3 = 0.

2.x2 – ln(x+1) + sin x –2 = 0.

4.2x lg x – 3 = 0.

6.0,5 + cos x – 2x sin x = 0.

8.x ex – 2 x 2 – 1 = 0.

47

9.

 

ln(x2 + 3)

+ 2x – 3 = 0.

10. 2 ln(x+1) – x + 1 = 0.

11. tg x – e x+1 = 0.

12. 2 ln(x+1) + arctg x –3 = 0.

13. x3 – 2x 2 – 4 = 0.

14. 5x 2 – 2x ln x–7 = 0.

 

2 3

 

– 3 sin x = 5.

 

 

 

15.

x2 +1

16. 2x 3 – 3x 2 – 4 = 0.

 

 

18. 2x sin2 x–3

 

= 0.

17.

4x – sin2x –3 = 0.

x + cosx

19.

2 ln(x+1)–3 sin2x = 4.

20. x3 + 3x + 2 = 0.

Разработать программу для вычисления значения определенного интеграла на интервале [a,b] (a, b подобрать самостоятельно) численными методами прямоугольников и трапеций [8, 9] для следующих вариантов:

b

1. 3 x + 1dx a

b

4. x 2e x dx a

b

7. cosxe x dx

a b

10. ex ln(x +1)dx a

b

(e x + e x )dx

13.

a

b

16. x sin( x ) dx a

b

1

19. a (1 + ln(x) ) dx

b

2. x 2 + 3 dx a

b

5. x 2tgdx a

b

8. x 2 ln xdx a

b

11. e2x sin 2xdx a

b

14. x 2 arctg(x)dx a

b

arctg

2 (x)

17.

 

 

dx

x

 

 

 

a

 

 

 

b

1

20. a (x + cos x )

b

 

1

 

 

 

3.

 

 

 

dx

 

 

 

 

 

 

 

 

 

 

a

(

2 +

x 3 )

b

cos

6. a ( x 2 + 1) dx

b

lg( x + 1)

9. a (1 + x 2 ) dx

b

 

sin

x

 

 

 

12.

 

 

 

dx

 

 

 

 

 

 

 

 

 

 

 

 

( x

3

+

1 )

a

 

a

cos x

15. (sin x + cos x) dx b

b

ln( 1 + x )

18. a (1 + x 2 ) dx

dx.

48

Интервал интегрирования разбитьравномерно на N>50 частей.

Порядок выполнения лабораторных работ

1.Изучить теоретические сведения по теме.

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

3.Подготовить текст программы и набрать его в окне редактора ТП.

4.Откомпилировать программу (F9) и исправить синтаксические ошибки (прил. 3)

5.Выполнить программу для реальных исходных данных (Ctrl+F9).

6.Просмотреть результаты (Alt+F5) и записать в тетрадь.

7.Оформить отчет по текущей лабораторной работе, в который включить:

-номер работы (лабораторная работа № 1),

-тема работы,

-условия задач,

-схемы алгоритмов,

-тексты программ,

-результаты выполнения программ.

8.Защитить лабораторную работу преподавателю.

Приложение 1

Обозначения графические в схемах алгоритмов (ГОСТ 19.701-90)

Символ

Наименование

Назначение

49

Данные

Процесс

Предопределенный процесс

Подготовка

Решение

Граница цикла

Соединитель

Терминатор

Комментарий

Основная

линия

Определяет ввод или вывод на внешнее устройство или любой носитель данных

Отражает обработку данных: выполнение отдельной операции или группы операций

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

Отражает инициализацию и модификацию параметра для управления циклом со счётчиком

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

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

Используется для обрыва линии и продолжения её в другом месте. Должен содержать уникальное обозначение

Определяет начало и конец структурной схемы алгоритма программы или подпрограммы

Используется для добавления пояснительных записей. Связывается с символом или группой символов, обведённых пунктиром

Отображает последовательность выполнения действий в алгоритме

Г л а в н о е м е н ю

50