Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Циклическая базовая конструкция



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

Тема:«Линейная базовая конструкция»

Цели работы

· Выработать умение составлять блок-схемы линейных алгоритмов

· Научиться составлять блок-схемы линейных алгоритмов

Методический материал

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

 

 
 

 


Рисунок 1.

Для выполнения лабораторных работ выберем современную систему программирования «Delphi». Эта среда обеспечит нам комфортные условия работы, позволит с минимальными затратами времени и усилий создавать неплохие программные продукты. Трудность обучения будет заключаться в том, что мы будем использовать понятия и свойства, в смысл которых мы будем вникать на более поздних этапах изучения основ программирования на алгоритмических языках. Такой подход обусловлен весьма ограниченным объемом аудиторных часов при кредитной технологии обучения. Нет времени изучать, в качестве промежуточной, более упрощенную среду. Парадигмой кредитной технологии обучения является девиз «студент учится», а не его «учат». Следовательно учебный процесс должен быть направлен на создание условий для студента в его нелегком труде. Именно эту цель преследуют предлагаемые методические указания для выполнения лабораторных работ по дисциплине «Программирование на алгоритмических языках».

Для выполнения самостоятельной работы каждому студенту следует установить систему программирования «Delphi» на своем персональном компьютере. Для запуска среды на первом лабораторном занятии следует найти на рабочем столе ярлык для запуска головной программы «Delphi32.exe». По умолчанию открывается окно нового проекта, но все же следует запомнить команды создания нового проекта:

File | New Application

т.е. в меню File следует выбрать пункт New Application, что означает: Новое приложение. Обращение к приложению следует запомнить, так как оно может быть использовано программно, например, запись Application.Terminate означает: прервать выполнение приложения (программы).

Система программирования «Delphi» для работы с проектом предлагает:

- Основное меню;

- Панель инструментов – кнопки быстрого доступа;

- Палитру компонентов – библиотеку объектов;

- Окно инспектора объектов для их настройки и назначения им действий;

- Окно редактора текстов программы;

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

 

Рисунок 2.

Навыки работы со всеми предлагаемыми инструментариями среды программирования «Delphi» приобретаются со временем. Пока, что первое выполняемое действие: это создание нового проекта.

Создадим свой первый проект под названием «Площадь геометрической фигуры». В проекте организуем вычисление площади прямоугольника, треугольника и круга. С точки зрения математики – это простенькие задачи. Алгоритм вычисления каждой из этих фигур состоит из следующих пунктов:

  1. Ввести значения размеров геометрической фигуры.
  2. Вычислить площадь.
  3. Вывести на экран результат вычислений.
  4. Завершить работу.

Блок-схема имеет вид, приведенный на рисунке 1.

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

С вкладки «Standard» палитры компонентов поместим на форму меткуLabel1. Номер этой метки устанавливается по умолчанию. Разместим ее в верхней части формы. В инспекторе объектов в свойстве Caption метки наберем текст названия проекта: «Площадь геометрической фигуры». В свойстве Font выберем цвет и вид шрифта и его размер.

С вкладки «Win32» пометим на форму компонент PageControl1. Этот компонент позволит нам форме создать три страницы (вкладки), на каждой из которых мы организуем вычисление площади одной из трех фигур. Для добавления вкладки выделим установленный компонент PageControl1 и в контекстном меню выберем пункт NewPage (новая страница). Выполним это действие 3 раза.Выделим первую вкладку с именем TabCheet1, в поле Caption инспектора объектов наберем текст «Прямоугольник».На вкладку поместим метки для надписей: «Ширина» и «Высота». Рядом с каждой меткой поместим поле ввода значение, построенное с помощью компонента Edit. На первой вкладке будут размещены два поля ввода: Edit1 и Edit2. Очистим в свойстве Text этих компонентов тексты, выводимые по умолчанию. Тексты совпадают по написанию с именами компонентов, поэтому: «Будьте внимательны!!! Ни в коем случае не удаляйте имена компонентов, так как в этом случае к ним невозможно обращение. Эта ошибка будет обнаружена при компиляции проекта».

Для изображения прямоугольника на первой вкладке формы поместим на нее компонент Shape1. В свойстве Shape этого компонента в инспекторе объектов можно выбрать вид фигуры (исключая треугольник). В свойстве Brush можно из списка Color выбрать цвет по вкусу.

 

 

Рисунок 3

 

Для вычисления площади геометрической фигуры поместим компонент Button. В инспекторе объектов в свойстве Caption метки наберем текст: «Вычислить». В свойстве Font выберем вид шрифта и его размер. Дважды щелкнем по компоненту Button и в открывшемся окне процедуры напишем код вычисления площади прямоугольника:

Var

a,b,s : integer;

begin

a:=strtoint(Edit1.text);

b:=strtoint(Edit2.text);

s:=a*b;

showmessage(‘Площадь прямоугольника=’+inttostr(s));

end;

 

В разделе Var объявлены переменные a,b,s целого типа. Значение «а», ширины прямоугольника, определяем преобразованием текста, введенного в поле Edit1 в целое число. Аналогично, значение «b», длины прямоугольника, определяем преобразованием текста, введенного в поле Edit2 в целое число. Затем вычисляем площадь прямоугольника s:=a*b и выводим полученное значение в окне сообщения, открываемого процедурой showmessage, которое дословно переводится как «Показать сообщение». Текст сообщения мы формируем программно.

Аналогично следует создать вкладки для вычисления площади круга и треугольника.

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

СРСП(3 часа)

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

СРС(3 часа)

Задание 2.Самостоятельно создать проект для вычисления объема геометрической фигуры (параллелепипеда, шара, пирамиды).

 

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

 

Тема: «Разветвляющаяся базовая конструкция (Ветвление, альтернатива). Оператор условия»

Базовая конструкция, при которой выполняется та или другая серия действий в зависимости от условия, называется ветвлением.

 

Рисунок 4

Ветвление программно описывается с помощью оператора условия If .

В общем виде инструкция If записывается так:

If условие

Then

Begin

{ Инструкции, выполняемые, если условие истинно }

End

Else

Begin

{ Инструкции, выполняемые, если условие ложно }

end;

Условие – это выражение логического типа (Boolean), которое может принимать одно из двух значений «истина» (True) или «ложь» (False).

Простое условие состоит их двух операндов и оператора сравнения. В Turbo Pascal имеется шесть операторов сравнения: >, <, >=, <=, =, <>.

К условиям применимы логические операторы and, or, not.

Например, принадлежность Х к отрезку [2;8] записывается в виде условия:

(Х>=2) and (X<=8)

Если значение Х должно находиться вне указанного отрезка условие запишется в виде:

(Х<=2) or (X>=8)

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

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

Сначала вычисляется значение выражения условие. Затем, если условие выполняется (значение выражения условие равно True), то выполняются инструкции, следующие за словом Then, находящиеся между Begin и End. Если условие не выполняется (значение выражения условие равно False), то выполняются инструкции, следующие за словом Else, находящиеся между Begin и End.

Пример: Дана окружность радиуса R с центром в начале координат. На плоскости задана точка своими координатами M (x, y). Определить, попадает ли точка внутрь окружности.

Составим алгоритм, а затем блок-схему решения задачи.

  1. Ввести координаты точки х, у
  2. Вычислить расстояние точки от центра координат по формуле:

D = √(х2 + у2)

  1. Если D<=R то вывести сообщение «Точка принадлежит окружности» иначе вывести сообщение «Точка не принадлежит окружности».
  2. Завершить работу

 

Блок-схема приведенного алгоритма:

 
 


Рисунок 5

Создайте проект. На форму разместите три поля ввода для значений радиуса и координат точки M (x, y). Изобразите графическое решение задачи с помощью компонентов Shape1 и Shape2. Размеры компонента Shape2 уменьшите для изображения точки. Выведите компонент Shape2 внутри Shape1, если точка принадлежит кругу, и вне Shape1 в обратном случае.

 

СРСП(3 часа)

Задание 1.Решить задачи и создать проекты для реализации решения задач.

Задачи

Составить блок-схему и создать проекты для решения каждой из следующих задач:

  1. Изобразить проектно выбор пути царевичем: «Пойдешь налево – коня потеряешь, направо – жизнь потеряешь, прямо - и жизнь, и коня потеряешь».

2. Даны два прямоугольника. Вывести сообщение о том, у какого из прямоугольников больше площадь. Изобразить фигуры прямоугольников.

СРС(3 часа)

Задание 2.Решить задачи и создать проекты для реализации решения задач дополнительного задания.

Дополнительное задание

1. Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму, и оставить числа без изменения в противном случае.

2. Дано действительное число a. Для функции f (x), график которой представлен на рисунке, вычислить f (a).

Рисунок 6

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

Тема:«Базовая конструкция «Цикл»»

Цели работы

 Выработать умение составлять блок-схемы циклических алгоритмов

 Научиться составлению блок-схем циклических алгоритмов

 Научиться созданию проектов реализации циклических алгоритмов

Методический материал

В) Цикл с параметром

Если в цикле заранее известно число повторений тела цикла, то применяется цикл с параметром

I – управляющая переменная цикла (параметр цикла)

A – начальное значение параметра цикла

B – конечное значение параметра цикла

H – шаг приращения параметра цикла

Пример: Вычислить сумму чисел от 1 до 10 тремя способами с использованием всех трех видов цикла.

Рисунок 7

СРСП(3 часа)

Задание 1.Решить задачи и составить блок-схемы для реализации решения задач

Задачи

Составить блок-схему для решения каждой из следующих задач:

  1. Дано натуральное число n. Вычислить:
    1. 2n;
  2. Вычислить:
  3. Дано натуральное число n. Подсчитать сколько цифр в этом числе.
  4. Дано натуральное число n. Выяснить, входит ли цифра 3 в запись числа n2.

СРС(3 часа)

Задание 2.Составить блок-схемы для задач дополнительного задания.

Дополнительное задание

  1. Дано натуральное число n. Подсчитать, чему равна сумма цифр этого числа.
  2. Дано натуральное число n. Вычислить

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

Тема:«Целый и вещественный тип данных»

Цели работы

 Закрепить навыки работы с целым и вещественным типом данных

 Систематизировать знания о типах данных

Методический материал

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

Существуют следующие целые типы:

Длина, байт Название Диапазон
Byte 0..255
Shortint -128..127
Word 0..65535
Integer -32768..32767
Longint -2147483648.. 2147483647

Существуют следующие вещественные типы:

Длина, байт Название типа Мантисса, значащие цифры Диапазон десятичного порядка
Single 7..8 -45..+38
Real 11..12 -39..+38
Double 15..16 -324..+308
Extended 19..20 -4951..+4932

Математические процедуры и функции, применимые к целым и вещественным типам:

Обращение Тип параметра Тип результата Назначение
Abs(x) Real, Integer Real, Integer Модуль аргумента
Arctan(x) Real Real Арктангенс (радианы)
Cos(x) Real Real Косинус (радианы)
Exp(x) Real Real Экспонента
Frac(x) Real Real Дробная часть числа
Int(x) Real Integer Целая часть числа
Ln(x) Real Real Натуральный логарифм
Pi - Real Число 
Random - Real Случайное число в диапазоне 0..1
Random(x) Integer Integer Случайное число в диапазоне 1..x
Randomize - - Инициализация датчика случайных чисел
Sin(x) Real Real Синус (радианы)
Sqr(x) Real, Integer Real, Integer Квадрат аргумента
Sqrt(x) Real Real Квадратный корень

СРСП(3 часа)

СРС(3 часа)

Задание 1.Решить задачи и создать проекты для реализации решения задач.

Задачи

Составить программу и блок-схему для решения каждой из следующих задач.

  1. Треугольник задан координатами своих вершин. Найти площадь и периметр треугольника.
  2. Написать программу, которая печатает true или false в зависимости от того, имеют три заданных целых числа одинаковую четность или нет.

СРС(3 часа)

Задание 2.Решить задачи и создать проекты для реализации решения задач:

  1. Определить корни квадратного уравнения.
  2. Вычислить 200! (факториал 200).

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

Тема:«Проект «Мой калькулятор»»

Цель работы

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

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

В проекте предусмотреть вывод индикатора работы с памятью в виде символа «П».

 

Методические указания

 

1.Создать новый проект.

 

2. Поместить на форму компонент Edit1, который будет табло калькулятора и настроить его.

 

3. На форму поместить кнопку (Button), установить размер в виде клавиши набора цифры, выбрать размер и цвет шрифта, скопировать клавишу и вставить 20 копий.

 

4. Объявить глобально переменные:

Chislo : shortstring; // для запоминания первого числа вычислений

Vibor : integer; // для запоминания знака действия

Result: double; // для запоминания результата вычислений

Memory : double; // для вычислений в памяти калькулятора

 

5. Для события OnClick каждой кнопки прописать действие:

 

Edit1.Text:= Edit1.Text+’Символ на кнопке’;

Например:

Edit1.Text:= Edit1.Text+’1’; // для клавиши с цифрой 1

 

6. Для события OnClick кнопки с символом знака действия записать код:

Chislo:=edit1.text; // запоминаем первое число

Vibor:= 1; // для знака плюс , для минуса 2, для умножения 3, для деления 4

Edit1.Text:=’’; // очистка табло

 

7. Для события OnClick кнопки с символом «=», получения результата записать код:

 

Case vibor of

1: Result:=strtoint(chislo)+strtoint(edit1.text);

2: Result:=strtoint(chislo)-strtoint(edit1.text);

3: Result:=strtoint(chislo)*strtoint(edit1.text);

4: Result:=strtoint(chislo)/strtoint(edit1.text);

End;

Edit1.text:=floattostr(Result);

 

8. Для работы с памятью поместить на форму метку, в свойстве Caption набрать символ «П». Свойство Visible установить в значение «false». Поместить метку рядом с табло.

 

9. При нажатии на кнопки П+(сложение в памяти) или П-(вычитание памяти)

Записать:

Label1.visible:=true; // Признак работы с памятью

 

10. Для события OnClick кнопки с символом «П+» записать:

Memory:=memory + strtofloat(Edit1.text);

11. Для события OnClick кнопки с символом «П-» записать:

Memory:=memory - strtofloat(Edit1.text);

 

12. Для события OnClick кнопки с символом «П -> X» записать:

Edit1.text:= floattostr(memory);

 

13. Для события OnClick кнопки с символом «X -> П» записать:

Memory:=strtofloat(Edit1.text);

 

14. Очистка памяти:

Memory:=0;

 

15. Для события OnCreate Формы записать очистку памяти:

Memory:=0;

 

16. Запустите проект

 

СРСП(3 часа)

Задание 1.

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

СРС(3 часа)

Задание 2.Решить задачи и создать проекты для реализации решения задач дополнительного задания.

Дополнительное задание

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

  1. Найти сумму цифр заданного числа
  2. Найти произведение цифр заданного числа.
  3. Определить число, полученное выписыванием в обратном порядке цифр заданного трехзначного числа.

 

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

Тема:«Применение оператора цикла for для решения задач»

Цели работы

 Получить навыки в использовании оператора условия при решении задач

 Научиться работать с составным оператором

Общий вид оператора цикла с параметром:

For i:=A to B do

Begin

Тело цикла;

End;

Переменные i, А,В должны быть порядкового (целого, символьного, логического, типа-диапазон, перечислимого) типа.

i - называют параметром цикла. При каждом выполнении цикла значение параметра увеличивается на 1. Последнее выполнение цикла при i =В.

Если А>В, цикл не выполняется ни разу.

Существует второй вид оператора цикла с параметром:

For i:=A downto B do

Begin

Тело цикла;

End;

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

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

Составить программу для решения каждой из следующих задач:

  1. Дано натуральное n. Вычислить:

СРСП

  1. Даны натуральное число n, действительное число x. Вычислить
  2. Получить таблицу температур по Цельсию от 0 до 100 градусов и их эквивалентов по шкале Фаренгейта, используя для перевода формулу: .

СРС

Дополнительное задание

  1. Вычислить значение выражения для a = 1, 2, …, 100.

Лабораторная работа №7(СРСП, СРС)

Цели работы

 Углубить знания о циклических операторах

 Развивать умение правильно выбирать циклический оператор для решения конкретной задачи

число Фибоначчи определяется формулой f(n)=f(n-1)+f(n-2)
где f(0)=1, f(1)=1

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

Составить программу и блок-схему для решения каждой из следующих задач:

1. Подсчитать сумму цифр в десятичной записи целого неотрицательного числа num.

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

3. Найти первое число Фиббоначчи, большее m (m>1).

4. Цилиндр объема единица, имеет высоту h. Определить радиус основания цилиндра для значений h, равных 0.5, 1, 1.5, …, 5.

Дополнительное задание

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

2. Указать сороковое число Фиббоначчи.

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

Тема:«Одномерные массивы»

Цели работы

 Закрепить умение работы с одномерными массивами

 Научиться определять необходимость применения массивов при решении задач

 Продолжить формирование логического и аналитического мышления, умения сравнивать факты и делать выводы

Методический материал

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

Например:

Type

Mas = array[1..1000] of integer;

Var

Voprosy, prav_otv : array[1..300] of shortstring;

otvety : array[1..300,1..5] of shortstring;

fix, ans : Mas;

 

В приведенном притмере описания описаны тип массива под названием Mas, одномерные массивы Voprosy, prav_otv, двумерный массив otvety строкового типа и два массива fix, ans с элементами целого типа. Подобное описание можно использовать при создании проекта «Программа тестирования». Массивы Voprosy, otvety, prav_otv могут быть использованы для размещения в программе вопросов, вариантов ответов и правильных ответов в тестах для тестирования. Массивы fix, ans используются для определения случайного порядка вопросов, отобранных для тестирования. Элементы в этих массивах не повторяются по значению.

 

Пример. Создадим проект, в котором определяются два массива.

Первый массив типа, описанного выше Mas представляет собой массив случайных неповторяющихся целых чисел. Для этого массива через поля ввода задаются его размерность, т.е число элементов и максимальное значение для этих элементов. Например, в базе для тестирования имеются 500 вопросов, из них случайным образом отбираются 25. Тогда число элементов массива будет 25, а максимальное значение для элементов будет равно 500.

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

Выполним команду создания нового проекта. На форму разместим метки для соответствующих надписей, два поля ввода, два Мемо-поля, в которые будем выводить найденные массивы, и три кнопки. Первая с надписью «Найти массив» будет определять массив случайных неповторяющихся чисел. Вторая с надписью «Сортировать» будет отсортировывать элементы массива в порядке возрастания их значений. Такой массив позволяет нам убедиться в том, элементы массива не повторяются по значению. Третья кнопка предназначена для закрытия проекта.

Опишем в разделе типов тип Mas.

Глобально объявим переменные:

fix : mas; // массив случайных не повторяющихся чисел

rmax, ksl : integer;

// rmax – число элементов массива; ksl – максимальное значение элементов массива

Код кнопки «Найти массив»:

Var I,j,n :integer;

Yes: Boolean;

Begin

Memo1.clear;

rmax:=strtoint(edit1.text);

ksl:= strtoint(edit2.text);

for i:= 1 to rmax do

fix[i]:=0;

i = 1;

While i <=rmax do begin

n:= random(ksl) +1; // 1 прибавляется для исключения значения 0

yes:=false;

for j:=1 to I do

if fix[j]=n then begin

yes:=true; break;

end; //if

if not yes then begin

fix[i]:=n;

memo1.Lines.Add(inttostr(fix[i])) ;

inc(i);

end;

end; //while

end; // proc end; //if

 

Сортировка будет выполняться «пузырьковым» способом. При каждом проходе попарно сравниваются два рядом стоящих элемента. Если они не удовлетворяют условиям сортировки, то они меняются местами. Сортировка будет завершена, если при очередном проходе не было выполнено ни одной перестановки.

Код кнопки «Сортировать»:

Var

i,j,k : integer;

yes :Boolean;

begin

memo2.clear;

repeat

yes:=true; // Массив отсортирован

for i:= 1 to rmax-1 do

if fix[i] > fix [i+1] then

begin

yes:=false;

k:=fix[i];

fix[i]:=fix[i+1];

fix[i+1]:= k;

end; //if

until yes;

for i:= 1 to rmax-1 do

memo2.Lines.Add(inttostr(fix[i]));

end; // proc

 

СРСП

Добавьте в проект третье Мемо-поле и еще одну кнопку с надписью «Линейная сортировка». Выполните линейную сортировку массива. Суть линейной сортировки заключается в определении минимального (максимального) элемента, перемещении его на первое место и отсечении найденного элемента. В оставшейся части массива повторяется тот же самый процесс.

Рисунок 8

СРСП(3 часа)

Задание 1.Решить задачи и создать проекты для реализации решения задач.

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

Составить программу и блок-схему для решения каждой из следующих задач:

1. Вывести на экран только отрицательные элементы одномерного массива и подсчитать их количество.

2. В последовательности чисел подсчитать количество элементов равных первому; последнему.

3. Даны два одномерных массива одинаковой длины. Получить третий массив сложение соответствующих элементов первых двух массивов.

СРС(3 часа)

Задание 2.Решить задачи и создать проекты для реализации решения задач дополнительного задания.

 

Дополнительное задание

Подсчитать сколько элементов одномерного массива не превосходят среднего значения всех элементов.

Лабораторная работа №9 (СРСП, СРС)

Тема:«Двумерные массивы»

Цели работы

 Закрепить умение работы с двумерными массивами

 Научиться определять необходимость применения массивов при решении задач

 Продолжить формирование логического и аналитического мышления, умения сравнивать факты и делать выводы

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

Составить программу и блок-схему для решения каждой из следующих задач:

1. Вывести на экран только четные строки двумерного массива.

2. Найти произведение всех элементов, которые не меньше элемента, стоящего во втором столбце и второй строке.

3. Дана действительная матрица размера 6х9. Найти среднее арифметическое наибольшего и наименьшего значений ее элементов.

Дополнительное задание

Найти сумму элементов квадратной матрицы, которые лежат выше главной диагонали.

Цели работы

 Закрепить умение работы со строками

 Сравнить работу со строками и работу с массивами

 Продолжить формирование логического и аналитического мышления, умения сравнивать факты и делать выводы

Методический материал

Для работы со строками используйте функции:

Length(s); - возвращает длину строки в символа, т.е. число символов в строке.

Например, если n:= Length (‘Иванов’); , то значение n будет равно 6.

Copy(s, k,n); - копирует из строки s символы, начиная с k-го, всего – n символов.

Например, если s1:= Copy(‘Иванов’, 2,3); , то значение s1 = ‘ван’.

Pos(s1,s); - возвращает номер позиции вхождения сочетания символов s1 в s.

Например, если n:= pos(‘до’,’Сидоров’); Значение n будет равно 3, так как с третьей позиции сочетание символов ‘до’ входит в строку.

Процедура Delete(s,k,n); - удаляет из строки s символы, начиная с k-го, всего – n символов.

Например, если s1:= delete(‘Иванов’, 2,3); , то значение s1 = ‘Иов’.

В приведенных примерах вместо символьных констант могут быть указаны строковые переменные.

 

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

Составить программу и блок-схему для решения каждой из следующих задач:

1) Дана строка, состоящая из нескольких слов. За последним словом – точка.

a) Удалить из строки лишние пробелы между словами, т.е. оставить только по одному пробелу, если их несколько.

b) Разделить строку на слова и найти самое короткое слово в массиве.

Дополнительное задание

Подсчитать, сколько раз в строке встречается первое слово.

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

 

Тема: «Процедуры и функции»

Цели работы

 Закрепить навыки написания и использования процедур и функций

 Содействовать познавательному интересу к изучаемому предмету

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

Методический материал

Задание 1.В проекте определения массива случайных неповторяющихся чисел (лабораторная работа № 8) объявить в интерфейсной части модуля описания главной формы процедуру

Procedure sluch (var fix: mas; rmax,ksl : integer);

А затем описать ее в выполняемой части модуля.

Procedure sluch (var fix: mas; rmax,ksl : integer);

Var I,j,n :integer;

Yes: Boolean;

Begin

rmax:=strtoint(edit1.text);

ksl:= strtoint(edit2.text);

for I:= 1 to rmax do

fix[I]:=0;

I:=1;

while I<= rmax do begin

n:= random(ksl) +1; // 1 прибавляется для исключения значения 0

yes:=false;

for j:=1 to I do

if fix[j]=n then begin

yes:=true; break;

end; //if

if not yes then begin

fix[I]:=n;

inc(i);

end;

end; //while

end; // proc

 

В коде кнопки «Найти массив» организовать вызов процедуры sluchи вывод элементов полученного массива в Мемо1.

Var I :integer;

Begin

Memo1.Clear;

rmax:=strtoint(edit1.text);

ksl:= strtoint(edit2.text);

sluch(fix, rmax,ksl);// вызов процедуры

for I:= 1 to rmax do

memo1.Lines.Add(inttostr(fix[I])) ;

end; // proc

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

Составить программу и блок-схему для решения каждой из следующих задач:

Написать программы с применением процедур:

1. Вывести на экран строку из повторяющегося заданного символа заданной длины.

2. Вывести на экран все простые числа из заданного диапазона.

3. Вывести на экран заданный массив по 6 чисел в строке.

Дополнительное задание

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

Составить программу и блок-схему для решения каждой из следующих задач:

3. Даны длины a, b и c сторон некоторого треугольника. Найти медианы треугольника. (Замечание: длина медианы, проведенной к стороне а, равна .)

4. Даны координаты вершин двух треугольников. Определить, какой из них имеет наибольшую площадь.

5. Даны два двумерных массива 10-порядка. Напечатать тот из них, у которого наименьший след (сумма диагональных элементов), считая, что такой массив один.

6. Для одномерного массива определить значение наибольшего элемента. Использовать подпрограмму-функцию.

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

Тема: «Использование записей при составлении программ»

Цели работы

 Выработать умения, навыки работы с комбинированными типами

 Научить работать с типом Запись

 Развивать аналитическое и логическое мышление

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

Составить программу и блок-схему для решения каждой из следующих задач:

Задать тип-запись для реализации записной книжки: фамилия, имя, отчество, дата рождения, адрес, телефон.

Осуществить поиск в массиве из 10 записей по:

А) фамилии

Б) по любому полю записи

Дополнительное задание

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

 

Лабораторная работа №13,14

Тема: «Текстовые файлы»

Цели работы

 Закрепить умения и навыки работы с текстовыми файлами

 Углубить знания о файлах

 Развивать логическое и аналитическое мышление

 Развивать умение сравнивать факты, делать выводы

Методический материал

 

Рассмотрим пример использования текстовых файлов в проекте «Программа тестирования» в простейшем варианте.

Рисунок 10. Основная форма

 

2. Объявите глобальные переменные после строки Form1: Tform1;:

vopros:array[1..100] of shortstring; // массив для записи вопросов в тесте

otvet: array[1..1000,1..5] of shortstring; // массив для записи ответов в тесте

prav_otv:array[1..1000] of shortstring; // массив для записи правильных ответов

reiting : integer; // переменная для подсчета рейтинга

rmax ,ksl :integer; // переменные передаваемые в процедуру sluch для выбора случайным //образом rmax вопросов для тестирования из числа имеющихся ksl.

rmax1,ksl1:integer; // для перемешивания вариантов ответа

fix : mas; // массив для запоминания номеров вопросов используемых в тесте

answer : mas; // массив для запоминания номеров ответов в случайном порядке num_vopr:integer; // номер вопроса

 

3. Подсоедините к проекту модуль mylib, содержащий процедуру sluch (см. лаб. работу 11).

Procedure sluch (var fix: mas; rmax,ksl : integer);

 

Код формы с организацией тестирования:

unit Unittest;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, mylib,

StdCtrls, ExtCtrls, Buttons;

 

type

TForm1 = class(TForm)

Label1: TLabel;

RadioGroup1: TRadioGroup;

Label2: TLabel;

Label3: TLabel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Label4: TLabel;

Image1: TImage;

Label5: TLabel;

procedure FormCreate(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

vopros:array[1..100] of shortstring; // массив для записи вопросов в тесте

otvet: array[1..1000,1..5] of shortstring; // массив для записи ответов в тесте

prav_otv:array[1..1000] of shortstring; // массив для записи правильных ответов

reiting : integer; // переменная для подсчета рейтинга

rmax ,ksl :integer; // переменные передаваемые в процедуру sluch для выбора случайным //образом rmax вопросов для тестирования из числа имеющихся ksl.

rmax1,ksl1:integer; // для перемешивания вариантов ответа

fix : mas; // массив для запоминания номеров вопросов используемых в тесте

answer : mas; // массив для запоминания номеров ответов в случайном порядке num_vopr:integer; // номер вопроса

 

implementation

 

{$R *.DFM}

 

procedure TForm1.FormCreate(Sender: TObject);

var s,s1:shortstring;

name_f:shortstring;

i,k,j:integer;

f,f1:textfile;

begin

k:=0;

assignfile(f,’test.dat’);

reset(f);

while not eof(f) do

begin

readln(f,s);

if s[1]='?' then

begin

inc(k);

s1:=copy(s,2,length(s));

vopros[k]:=s1;

j:=0;

end

else

if s[1]='+' then

begin

inc(j);







Читайте также:

Последнее изменение этой страницы: 2016-03-17; Просмотров: 129; Нарушение авторского права страницы


lektsia.com 2007 - 2017 год. Все права принадлежат их авторам! (0.064 с.) Главная | Обратная связь