Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Тема №2. Файлы и записи





Отчет по учебной практике по модулю ПМ.01

«Разработка программных модулей программного обеспечения компьютерных систем»
обучающе(-гося, -йся) группы ПКс-21
ФИО (в род. падеже)

Вариант № _

Вариант 1 Алонцева Мария Андреевна
Атоян Азат Мнацаканович
Вариант 2 Бессонов Дмитрий Андреевич
Буров Алексей Игоревич
Вариант 3 Жерихин Глеб Александрович
Жукалин Никита Александрович
Вариант 4 Клоков Кирилл Владимирович
Кондрашин Александр Сергеевич
Вариант 5 Коноводов Алексей Александрович
Корешков Егор Александрович
Вариант 6 Куянов Александр Дмитриевич
Лешкович Максим Эдуардович
Вариант 7 Лыков Дмитрий Алексеевич
Малышев Даниил Сергеевич
Вариант 8 Мельников Максим Олегович
Огнев Антон Сергеевич
Вариант 9 Рыбаков Сергей Александрович
Рязанцев Илья Николаевич
Вариант 10 Самойлов Вадим Геннадьевич
Старых Александр Сергеевич
Вариант 11 Травина Юлия Алексеевна
Цыбенко Александр Сергеевич
Вариант 12 Шершнева Яна Вячеславовна

Перечень заданий

1) Системное программирование

Дано техническое задание и программное средство (модуль). Разработать внешнее описание и функциональную спецификацию ПС. Оценить надежность данного ПС путем тестирования. Выявить системные требования и подключение дополнительных библиотек (внешних модулей операционной системы).

Перечень тем для разработки:

Задание
  (Visual Basic) Приложение Веселая кулинария: 1) создание рецепта случайным образом; 2) хранение рецепта; 3) пользование готовыми рецептами; 4) запись рецепта самостоятельно.
  (Delphi) Программа, предназначенная для решения дифференциальных уравнений с возможностью изменения параметров и построения графика.
  (Delphi) Разработка приложения для определения кода цвета по картинке и обратно – получение цвета по десятичному коду.
  (Lazarus) Создание справочника терминов языка Си, выбираемых из списка.
  (Visual Basic) Тестирующая программа по информационным технологиям с выбором варианта ответа.
  (C#) Тестирующая программа по базам данных с выбором вариантов ответа
  (C#) "4 картинки - 1 слово" - это программный продукт, который может иметь два применения: 1) в качестве игры; 2) в качестве развивающего теста для детей. При этом в программе есть возможность создавать свой набор заданий.
  (С++) Программа "Медиаплеер", предназначенная для проигрывания музыкальных файлов.
  (Visual Basic) Тестирующая программа по языку программирования Си.
  (C#) Тестирующая программа по основам информатики.
  (Visual Basic) Paint+ - это приложение является графическим редактором с элементами для вязания крючком.
  (Delphi) Салаты. Данная программа была разработана для просмотра и записи рецептов, а также она имеет такие функции: • Создание и сохранения рецептов (до 3-х одновременно); • Печать рецептов и созданных рецептов; • Редактирование рецептов; • Удаление рецептов; • Создание рецептов в режиме «Конструктор».

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

* функциональность,

* надежность,

* легкость применения,

* эффективность,

* сопровождаемость,

* мобильность.

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

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

Легкость применения - это характеристики ПС, которые позволяют минимизировать усилия пользователя по подготовке исходных данных, применению ПС и оценке полученных результатов.

Эффективность - это отношение уровня услуг, предоставляемых ПС пользователю при заданных условиях, к объему используемых ресурсов.

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

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

2) Прикладное программирование

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

Тема №1. Множества

Пример. Составить программу выделения из множества целых чисел от 1 до 30 следующих подмножеств:

множества чисел, кратных 2;

множества чисел, кратных 3;

множества чисел, кратных 6;

множества чисел, кратных 2 или 3.

Program mnoj;

Const n=30;

Type mn=Set Of 1..n;

Var n2,n3, n6, n23:mn;

{n2 - множество чисел, кратных 2, n3 - множество чисел, кратных 3, n6 - множество чисел, кратных 6, n23 - множество чисел, кратных 2 или 3}

k: Integer;

procedure print1 (m:mn);

var i: Integer;

begin

for i:=1 to n do

if i In m then write(i:3);

writeln;

end;

begin

n2=[ ]; n3=[ ]; {начальное значение множеств}

for k:=1 to n do {формирование n2 и n3}

begin {если число делится на 2, то заносим его в n2}

if k mod 2=0 then n2:=n2+[k];

if k mod 3=0 then n3:=n3+[k]; {если число делится на 3, то заносим его в n3}

end;

{числа, кратные 6, кратны 2 и 3, поэтому это – пересечение двух множеств; числа, кратные 2 или 3, - это объединение этих множеств}

n6:=n2*n3; n23:=n2+n3;

writeln(‘2’); {вывод множеств}

print1(n2);

writeln(‘3’);

print1(n3);

writeln(‘6’);

print1(n6);

writeln(‘2 3’);

print1(n23);

readln;

end.

Задания для работы:

Номер варианта Задание
Вариант 1. Дано натуральное число n. Вывести все цифры, не входящие в десятичную запись этого числа в порядке возрастания.
Вариант 2. Найти простые числа в промежутке [1..n]. Число n вводится с клавиатуры. (Решето Эратосфена).
Вариант 3. Дана непустая последовательность символов. Вывести множества, элементами которых являются: цифры от «0» до «9» и знаки арифметических операций.
Вариант 4. Дана непустая последовательность символов. Вывести множества, элементами которых являются: буквы от «A» до «F» и от «X» до «Z»
Вариант 5. Дана непустая последовательность символов. Вывести множества, элементами которых являются: знаки препинания и буквы от «E» до «N»
Вариант 6. Подсчитать общее количество цифр и знаков «+», «-», «*» в строке, введенной с клавиатуры.
Вариант 7. Сформировать множество строчных латинских букв, входящих в произвольную введенную строку, и подсчитать количество знаков препинания в ней.
Вариант 8. Подсчитать количество цифр в заданной строке и вывести их.
Вариант 9. Вывести в алфавитном порядке все буквы текста, оканчивающегося точкой, входящих в него не менее двух раз.
Вариант 10. Вывести в алфавитном порядке все буквы текста, оканчивающегося точкой, входящих в него не более двух раз.
Вариант 11. Вывести в алфавитном порядке все буквы текста, оканчивающегося точкой, входящих в него более двух раз.
Вариант 12. Вывести все символы заданного текста, входящих в него по одному разу.

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

1. Что такое тип-множество?

2. Каково максимальное число элементов в множестве?

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

4. Какие операции можно проводить над множествами?

5. Что такое конструктор множеств?

Тесты:

1. Каков будет результат выполнения программы:

type digits=set of 0..9;

var d1, d2, d3: digits;

begin

d1:=[1,3,5];

d2:=[0,4,5];

d3:=d1*d2;

write(d3);

end.

· d3=[0, 1, 3, 4, 5]

· d3=[0, 1, 3, 4]

· d3=[5]

· d3=[1, 3, 5, 0, 4, 5]

2. Какой из представленных типов является перечисляемым?

· m: Integer;

· type n=(…);

· s:string;

· g:char;

3. Что нельзя делать с множествами?

· Суммировать

· Вычитать

· Вводить элемент

· Умножать

4. Какое максимальное количество элементов в множестве?

· 10

· 255

· 355

· 100

5. Чему будет равно с: a:=[6,19,0,5]; b:=[19,3]; c:=a+b;

· 19

· [6, 0, 5]

· [6, 19, 0, 5, 3]

· [0, 6]

Тема №2. Файлы и записи.

Постановка задачи

Для заданной прикладной области разработать описание объектов этой области. Разработать процедуры, реализующие базовые операции над этими объектами, в том числе:

  • текстовый ввод-вывод (консольный и файловый);
  • присваивание;
  • задание константных значений;
  • сравнение (не менее 2-х типов).

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

Для каждой области перечислены параметры объекта. Среди параметров обязательно есть ключевое алфавитное поле (например, фамилия), которое идентифицирует объект, у каждого объекта имеется также одно или несколько числовых полей, по которым вероятны обращения к объекту. Набор характеристик может быть расширен.

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

  • ввод значения объекта из текстового файла;
  • ввод значения объекта с консоли;
  • вывод значения объекта в текстовый файл;
  • вывод значения объекта на консоль;
  • форматный вывод значения объекта на терминал;
  • присваивание объекту константных значений;
  • присваивание объектов;
  • сравнение объектов.

Пример. База данных «Лесное хозяйство»: наименование лесного массива, площадь, основная порода деревьев, средний возраст деревьев, плотность посадки деревьев.

program lh;

const

max = 10; { maksimalnoe kolichestvo hozyaystv }

type

{ lesnoe hozyaystvo }

leshoz = record

name: string[31]; { naimenovanie zelenogo massiva }

area: real; { ploshad }

tree: string[15]; { osnovnaya poroda }

age: real; { sredniy vozrast }

density: real; { plotnost derevyev }

end;

var

hozyaystva: array [1..max] of leshoz; { massiv hozyaystv }

count: integer; { kolichestvo hozyaystv }

i: integer; { schetchik }

{ sortirovka massiva po alfavitnomu pokazatelu }

procedure sortAlphabet;

var

i, j: integer; { schetchiki }

tmp: leshoz; { dlya obmena }

begin

for i:= count - 1 downto 1 do

for j:= 1 to i do

if hozyaystva[j].name > hozyaystva[j + 1].name then

begin

{ obmen }

tmp:= hozyaystva[j];

hozyaystva[j]:= hozyaystva[j + 1];

hozyaystva[j + 1]:= tmp;

end;

end;

{ sortirovka massiva po vozrastaniyu ploshadi }

procedure sortArea;

var

i, j: integer; { schetchiki }

tmp: leshoz; { dlya obmena }

begin

for i:= count - 1 downto 1 do

for j:= 1 to i do

if hozyaystva[j].area > hozyaystva[j + 1].area then

begin

{ obmen }

tmp:= hozyaystva[j];

hozyaystva[j]:= hozyaystva[j + 1];

hozyaystva[j + 1]:= tmp;

end;

end;

{ vvod znacheniy objektov iz fayla }

procedure loadFromFile;

var

f: text;

i: integer; { schetchik }

s: string[31];

begin

{ otkrivaem fayl dlya chteniya }

assign(f, 'leshoz.txt');

reset(f);

while (not eof(f)) and ((count + 1) <= max) do

begin

readln(f, s);

if length(s) > 0 then

begin

count:= count + 1;

with hozyaystva[count] do

begin

name:= s;

readln(f, area);

readln(f, age);

readln(f, density);

end;

end;

end;

close(f);

end;

{ vivod znacheniy objektov v fayl }

procedure saveToFile;

var

f: text;

i: integer; { schetchik }

begin

{ otkrivaem fayl dlya zapisi }

assign(f, 'leshoz.txt');

rewrite(f);

{ nachinaem s dvoyki, t.k. pervoe hozyaystvo est vsegda }

for i:= 1 to count do

begin

with hozyaystva[i] do

begin

writeln(f, name);

writeln(f, area: 0: 2);

writeln(f, age: 0: 2);

writeln(f, density: 0: 2);

end;

end;

close(f);

end;

begin

writeln('Lesnie hozyaystva.');

writeln('-------------------------');

count:= 0;

{ vvod dannih iz fayla }

loadFromFile;

{ sortirovka }

sortAlphabet;

sortArea;

{ vivod dannih na terminal }

for i:= 1 to count do

begin

writeln;

with hozyaystva[i] do

begin

writeln('Nazvanie zelenogo massiva: ', name);

writeln(' Ploshad: ', area: 0: 2);

writeln(' Osnovnaya poroda: ', tree);

writeln(' Sredniy vozrast: ', age: 0: 2);

writeln(' Plotnost derevyev na kv.km: ', density: 0: 2);

end;

writeln;

end;

{ dobavlenie novogo hozyaystva, esli est mesto dlya nego v massive }

if count + 1 <= max then

begin

writeln('Vvedite informaciyu o novom lesnom hozyaystve.');

writeln;

count:= count + 1;

{ vvod novih dannih }

with hozyaystva[count] do

begin

write('Nazvanie zelenogo massiva: '); readln(name);

write(' Ploshad: '); readln(area);

write(' Osnovnaya poroda: '); readln(tree);

write(' Sredniy vozrast: '); readln(age);

write(' Plotnost derevyev na kv.km: '); readln(density);

end;

writeln;

{ sortirovka }

sortAlphabet;

sortArea;

{ zapis dannih v fayl }

saveToFile;

end;

readln;

end.

Задания для работы:

N в Прикладная область Атрибуты информации
  Отдел кадров фамилия сотрудника, имя, отчество, должность, стаж работы, оклад
  Красная книга вид животного, род, семейство, место обитания, численность популяции
  Производство обозначение изделия, группа к которой оно относится, год выпуска, объем выпуска, расход металла
  Персональные ЭВМ фирма-изготовитель, тип процессора, тактовая частота, емкость ОЗУ, емкость жесткого диска
  Библиотека автор книги, название, год издания, цена, количество в библиотеке
  Радиодетали обозначение, тип, номинал, количество на схеме, обозначение возможного заменителя
  Текстовые редакторы наименование, фирма-изготовитель, количество окон, количество шрифтов, стоимость
  Телефонная станция номер абонента, фамилия, адрес, наличие блокиратора, задолженность
  Быт студентов фамилия студента, имя, отчество, факультет, размер стипендии, число членов семьи
  Спортивные соревнования фамилия спортсмена, имя, команда, вид спорта, зачетный результат, штрафные очки
  Соревнование факультетов по успеваемости факультет, количество студентов, средний балл по факультету, число отличников, число двоечников
  Студенческие работы фамилия студента, имя, отчество, факультет, вид работ, заработок

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

1. Что такое запись?

2. Определение типа записи.

3. Что такое поля и идентификаторы полей?

4. Что используется для обращения к полям записи?

5. Формат оператора обращения к записи.

6. Что такое файл?

7. Какие зарезервированные слова используются для задания типа-файла?

8. Как определяются файловые пременные?

9. Перечислить стандартные процедуры и функции для работы сфайлами.

10. Какие виды файлов используются в Паскале?

Тесты:

1. При помощи какой функции можно определить конец файла?

· Eoln

· Eof

· Odd

· End

2. Открытие файла для перезаписи:

· append

· read

· rewrite

· write

3. При помощи какой процедуры можно связать программное имя файла с дисковым именем файла?

· Append

· Close

· Assign

· Name

4. Как объявляется текстовый файл?

· a: text;

· a: tfile;

· a: file;

· a: textf;

5. Каким образом можно поставить маркер конца строки в текущем окне?

· Readln

· Writeln

· End

· Read

6. Сколько уровней вложения разрешено использовать в операторе with?

· 3

· 5

· 9

· 15

Тема №3. Модуль CRT

Пример программы, выводящей на экран в различных текстовых режимах надпись в виде ступеньки с заданным шагом "dx" по оси "х", в каждой строке "у", начиная с позиции (1, 1).

PROGRAM FAM;

Uses CRT;

var N: word; f, dx, x, y, i, j, xm, ym: byte;

BEGIN

for i:=0 to 9 do begin { режимы работы монитора }

if i<4 then N:=i else N:=256+i-4; if i=9 then N:=7;

textMode(N);

xm:=lo(WindMax)+1; ym:=hi(WindMax)+1;

write('xm=',xm, '_ym=',ym, '_N=',N, '_Нажмите Enter'); readln;

TextBackGround(1); clrscr; TextColor(14); x:=1;

f:=8; dx:=3; { f - длина фамилии + курсор, dx - приращение отступа}

for j:=1 to ym-1 do begin y:=j;

if (xm-x-f)<0 then x:=1; { контроль выхода надписи за экран }

gotoXY(x, y); write('ФАМИЛИЯ'); x:= x + dx; end;

Writeln; write('Нажмите Enter'); readln end;

TextMode(3)

END.

 

Задания для работы:

Номер варианта Задание
Вариант 1. Вывести на экран в различных текстовых режимах надпись в виде ступеньки с заданным шагом "dx" по оси "х", в каждой строке "у", начиная с позиции (1, Ym) c направлением вверх, вправо.
Вариант 2. Вывести на экран в различных текстовых режимах надпись в виде ступеньки с заданным шагом " dx<0 " по оси " х ", в каждой строке " у ", начиная с позиции: (Xm-f, Ym) c направлением вверх, влево.
Вариант 3. В режимах N=1 и N=3 вывести на экран окна разного цвета с уменьшающимся размером (окно в окне). В первой позиции окон выводить номер окна. Использовать оператор цикла с условием ограничения размеров наименьшего окна, например: (x2-x1=2) or (y2-y1=0).
Вариант 4. В режимах N=1 и N=3 вывести на экран окна разного цвета с координатами, определяемыми функцией Random с ограничением по размеру экрана, например: x1:=Random(Xm-1)+1; x2:=x1+Random(Xm-x1); Окна выводятся в операторе цикла с условием: до нажатия любой клавиши.
Вариант 5. Создать на экране несколько рядов разворачивающихся по горизонтали, либо по вертикали окон разного цвета с надписями.
Вариант 6. Вывести на экране несколько рядов карточек со случайными номерами цветов, в различных диапазонах для каждого ряда. В центре экрана вывести окно с сообщением о количестве рядов с одинаковым цветом карточек.
Вариант 7. Создать на экране несколько рядов окон с чередованием двух орнаментов. (Для построения орнаментов в текстовом режиме удобно использовать массив N1xN2 значений из нулей и единиц, записанных в файле).
Вариант 8. Построить горизонтальную и вертикальную гистограммы столбиками разного цвета для 20-ти значений функций: Y= |Sin(x)|*x и Y= Sin(x)+x; в диапазоне "x" от 0 до 2*Pi, с выводом значений "x" и "Y".
Вариант 9. Разделить экран на четыре равные части. Создать в первой части окно и ввести с клавиатуры надпись: Программу разработал "Фамилия". Создать окно 4 и скопировать эту надпись в окно 4.
Вариант 10. Создать четыре окна в порядке 1, 2, 3, 4. В центре первого окна ввести с клавиатуры свою фамилию, в других - любые надписи, введенные с клавиатуры в позициях, определяемых функцией Random (без использования массивов).
Вариант 11. В режиме ТextMode(1); создать в центре экрана окно размером 6 строк и 30 колонок. Вывести в нижней строке окна надпись и сделать прокрутку надписи вверх, меняя яркость символов (нормальная, повышенная, пониженная) и цвет фона (без оператора ClrScr;) после каждой прокрутки.
Вариант 12. Разделить экран по горизонтали на две части. В первой части создать окно и вывести все символы от 0 до 255 с указанием номеров, во втором окне в двух строчках вывести два символа, бегающих в противоположные стороны.

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

1. Чем отличается цвет фона от цвета символов? Какие процедуры управляют этими цветами?

2. Что произойдёт, если после вызова процедуры Sound не вызвать процедуру NoSound?

3. Чем отличается Readkey от Readln?

4. Что такое курсор?

5. Куда перемещается курсор после выполнения процедуры ClrScr?

6. Что называют модулем в Паскаль-программе?

Тесты:

1. Модуль CRT позволяет:

· подключать «мышь»

· инициализировать графику

· управлять курсором

· форматировать дискеты

2. Процедура Window:

· устанавливает текстовый режим

· рисует прямоугольник

· создает графическое окно

· задает текстовое окно на экране.

3. Функция readkey:

· очищает буфер клавиатуры

· анализирует нажатие клавиши

· возвращает символ нажатой клавиши

· переназначает клавиши

4. Установка текстового режима:

· textmode

· modetext

· text

· mode

5. Выключение звука:

· NoSound

· Sound

· Delay

· NotSound

Тема №4. Графика

Пример. Составить программу, рисующую голову робота. Вывести под рисунком строку “Это робот”.

Программа составленная на языке Pascal:

PROGRAM robot;

USES GRAPH;

VAR DRIVER,MODE: INTEGER;

BEGIN

DRIVER:=DETECT;

INITGRAPH (DRIVER,MODE,’C:\TP\BGI’);

SETCOLOR (BLACK);

SETBKCOLOR (WHITE);

RECTANGLE (100,100,300,300);

CIRCLE (150,170,30);

CIRCLE (250,170,30);

ARC (150,170,45,135,40);

ARC (250,170,45,135,40);

ELLIPSE (200,250,0,359,10,20);

RECTANGLE (130,280,270,290);

MOVETO (100,300);

LINETO (50,350);

LINETO (350,350);

LINETO (300,300);

PUTPIXEL (150,170,GREEN);

PUTPIXEL (250,170,GREEN);

OUTTEXTXX(195,400,’ЭТО РОБОТ’);

READLN;

CLOSEGRAPH;

END.

Задания для работы:

Номер варианта Задание
Вариант 1. Нарисовать домик с покатой крышей. В программе вводятся координаты конька крыши.
Вариант 2. Нарисовать квадратную спираль, причем звенья, идущие слева направо и сверху вниз, имеют нечетную длину, а звенья, идущие справа налево и снизу вверх, имеют четную длину. Предлагается вариант программы, когда для одного значения параметра цикла рисуется полный оборот спирали. Спираль рисуется по часовой стрелке из точки, координаты которой задаются с клавиатуры.
Вариант 3. Нарисовать диагональную спираль, длина каждого следующего звена которой увеличивается на единицу. Вновь используется прием построения полного витка спирали при одном значении параметра цикла, когда длина следующего звена возрастает за счет увеличения на единицу коэффициентов (i*a, (i+1)*a, (i+2)*a, (i+3)*a).
Вариант 4. Нарисовать лист из нотной тетради. Вычерчивается 12 полос по пять линий, причем сначала рисуется нижняя (пятая) линия в каждой полосе, а в последнюю очередь - верхняя.
Вариант 5. Подготовить лист в косую линейку, как в тетради-прописи для младших школьников (с полями).
Вариант 6. Нарисовать зигзаг из линий. В программе задаются координаты начальной точки, а также расстояние между зубцами по горизонтали и высота зубцов зигзага.
Вариант 7. Провести диагональную штриховку квадрата: из левого нижнего угла в правый верхний проводится линия, а остальные линии проводятся параллельно на расстоянии, задаваемом как шаг. Число линий штриховки определяется как результат целочисленного деления стороны квадрата на шаг штриховки.
Вариант 8. Нарисовать два заштрихованных треугольника, расположенных на одной диагонали квадрата.
Вариант 9. Нарисовать горизонтальную бабочку из линий штриховки путем вращения одной из диагоналей треугольника вокруг горизонтальной оси квадрата.
Вариант 10. Нарисовать цветок, лепестками которого будут служить прямые линии. Если изменять значения радиуса и коэффициенты перед функциями sin и cos, то размер лепестков и их количество будут меняться.
Вариант 11. Нарисовать пять квадратов, лежащих на одной прямой и соприкасающихся друг с другом, причем сторона каждого следующего квадрата в два раза меньше стороны предыдущего. С клавиатуры вводятся координаты точки, из которой проводится линия, служащая основанием всех пяти квадратов.
Вариант 12. Нарисовать цепочку из квадратов, расположенных на диагонали экрана. С клавиатуры вводятся значение ребра квадрата и значение ребра малого квадрата, получающегося при наложении квадратов друг на друга.

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

1. Какие графические адаптеры и режимы вы знаете?

2. Перечислить основные графические примитивы.

3. Каков результат выполнения процедуры GetPalette?

4. Каков результат выполнения функции GraphResult?

Тесты:

1. Какой модуль нужно подключить для работы с графикой?

· Crt

· Printer

· Dos

· Graph

2. Какая процедура вычерчивает круг?

· Putpixel

· Arc

· Circle

· Rectangle

3. Какому цвету соответсвует цифра 0?

· Черный

· Белый

· Синий

· Красный

4. Какая функция возвращает текущий цвет рисунка?

· GetBkColor

· GetColor

· FloodFile

· Graph

5. Какая процедура перемещает текущий указатель в точку (x,y)?

· LineTo

· MoveTo

· OutText

· DoTo

Тема №5. Динамические структуры

Ознакомиться с понятием списка, стека и очереди.

Номер варианта Задание
Варианты 1, 2, 3. N детей располагаются по кругу. Начав отсчет от первого, удаляют каждого k-го, смыкая при этом круг. Определить порядок удаления детей из круга.
Варианты 4, 5, 6. Написать программу, проверяющую своевременность закрытия скобок в строке символов.
Варианты 7, 8, 9. Сформировать идеально сбалансированное дерево, элементами которого являются N чисел, вводимых с клавиатуры.
Варианты 10, 11, 12. Задана последовательность слов. Определить частоту вхождения каждого из слов в последовательность.

Решения:

1, 2, 3

Program Example_1234;

Type Children=^Child;

Child=Record

Data:Integer;

Next:Children;

End;

Var circl: Children;

n, k: Integer;

Procedure Init(Var u: Children; Var k: Integer);

Var x, y: Children;

i: Integer;

Begin

Write('Введите число детей');

Readln(n);

Write('Введите число слов в считалочке');

ReadLn(k);

For i:=1 To N do

Begin

New(x); x^.data:=i;

If u=Nil Then u:=x Else y^.next:=x;

y:=x;

End;

x^.next:=u;

End;

Procedure Print (u: Children);

Var x: Children;

Begin

x:=u;

Repeat

Write (x^. Data, '.');

x:=x^.Next;

Until x=u;

Readln;

End;

Procedure Game(u: Children);

Var x: Children;

i: Integer;

Begin

x:=u;

Repeat

For i:=1 to k-1 do Begin x:=u; u:=u^.next; End;

Write(u^.Data,': '); x^.next:=u^.next; dispose(u); u:=x; Print(u);

Until u=u^.next;

End;

Begin

Init (circl,n); Print (circl); Game(circl); Readln;

End.

4, 5, 6

Program Example_5678;

Type Exst=^st;

St=Record

Next:exst;

Data:Char;

End;

Var a:String;

f:Boolean;

i: Integer;

Procedure Writestack(Var x1:exst; c:Char); {Процедура занесения элемента в стек}

Var u:exst;

Begin

New(u); u^.Data:=c; u^.next:=x1; x1:=u

End;

Procedure delstack(Var x1:exst);

{Процедура удаления верхнего элемента стека}

Var u:exst;

Begin

u:=x1; x1:=x1^.next; Dispose(u);

End;

Procedure Solve(a:String); {Процедура проверки правильности расстановки

скобок}

Var stack: Exst;

Begin

stack:=Nil; i:=1;

While (i<=length(a)) And f Do

Begin

If (a[i] = '(')Or(a[i] = '{')Or(a[i] = '[')

Then Writestack(stack, a[i])

Else If (a[i]=')') Or (a[i]='}') Or (a[i] = ']')

Then If Ord(stack^.data)-Ord(a[i])<=2 Then delstack(stack)

Else f:=False;

Inc (i);

End;

End;

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

Writeln('введите строку'); Readln(a); f:=True;

If a<>'' Then

Begin

Solve(a);

If f Then Writeln('скобки расставлены верно')

Else Writeln('скобка ',a[i-1],'закрыта преждевременно');

End

Else Writeln('строка пуста');

Readln;

End.

7, 8, 9

Program Example_9101112;

Uses Crt;

Type Pt=^Node;

Node=Record

Data: Integer;

Left, Right: Pt;

End;

Var n: Integer;

kd:Pt;

f: text;

Function Tree(n: Integer): pt;

Var newnode:pt;

x, n1, n2: Integer;

Begin

If n=0 Then Tree:=nil

Else

Begin

n1:=n Div 2; n2:= n - n1 - 1; Read(f,x); New(newnode);

With newnode^ Do

Begin

Data:=x; Left:=Tree (n1); Right:=Tree(n2);

End;

Tree:=newnode;

End;

End;

Procedure PrintTree(t:pt; h:Integer);

Var i: Integer;

Begin

If t<> Nil Then

With t^ Do

Begin

PrintTree(left,h+1);

For i:= 1 To h Do Write(' ');

Writeln (Data:6); PrintTree(Right,h+1);

End;

End;

Begin

Clrscr; Assign(f,'f:\1\f.pas');

Reset(f); Write('n=');

Readln(n); kd:=tree(n); printtree(kd,0); Readln;

End.

10, 11, 12

Program Example_13141516;

Uses Crt;

Type Words=^Wordtree;

Wordtree=Record

data: String;

k: Integer;

left, right: Words;

End;

Var n: Integer; kd:Words;

x: String; f: text;

Procedure Tree (x: String; Var p:Words);

Begin

If p=Nil Then

Begin

New(p);

With p^ Do

Begin

k:= 1; Data:=x; Left:=Nil; Right:=Nil;

End;

End

Else If x>p^.Data Then Tree (x,p^.Left)

Else If x<p^.data Then Tree(x,p^.Right)

Else Inc(p^.k);

End;

Procedure PrintTree(t:Words; h:Integer);

Var i: Integer;

Begin

If t <> nil Then

With t^ Do

Begin

PrintTree(Left, h + 1);

For i:= 1 To h Do Write (' ');

Writeln (data, ',(', k, ')'); PrintTree(Right,h+1);

End;

End;

Begin

Clrscr; Assign (f, 'f:\1\f.dan');

Reset (f); Write ('n = '); Readln(n); kd:=Nil;

While n>0 Do Begin ReadLn(f,x); Tree(x,kd); dec(n); End;

Close (f); PrintTree (kd, 0); Readln;

End.

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

1. Какие операции требуется выполнить для вставки элемента списка?

2. Можно ли для построения списка обойтись одной переменной?

3. Сколько элементов может содержать список? Когда прекращать ввод элементов

списка?

Date: 2016-06-09; view: 337; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию