- •Программирование на языке
- •Object pascal в среде delphi
- •(Лабораторные работы)
- •Содержание
- •Лабораторная работа 1. Программирование линейных алгоритмов
- •1.1. Базовые элементы языка Object Pascal
- •1.1.1. Алфавит языка
- •1.1.2. Синтаксис языка
- •1.1.3. Основные типы данных
- •1.1.4. Оператор присваивания
- •1.1.5. Целые типы данных
- •1.1.6. Вещественные (действительные) типы данных
- •1.1.8. Cимвольные типы данных
- •1.1.9. Строкоые типы данных
- •1.1.10. Арифметические вычисления
- •1.2. Интегрированная среда разработчика delphi
- •1.3. Структура программ delphi
- •Interface
- •Implementation
- •1.4. Пример написания программы
- •1.4.2. Изменение заголовка формы
- •1.4.6. Написание программы обработки события
- •1.4.7. Написание программы обработки события
- •2.3. Оператор выбора Case
- •2.4. Составной оператор
- •2.5. Некоторые возможности, предоставляемые Delphi для организации разветвлений
- •Interface
- •Implementation
- •2.7. Индивидуальные задания
- •3.1.2. Организация цикла с помощью оператора repeat
- •3.2. Организация вложенных циклов
- •3.3. Организация прерывания цикла
- •3.4. Алгоритмы, использующие рекуррентную последовательность
- •3.5. Пример написания программы
- •Interface
- •Implementation
- •3.6. Индивидуальные задания
- •Лабораторная работа 4. Программирование с использованием массивов
- •4.1. Работа с массивами
- •4.2. Операции над массивами
- •4.3. Примеры часто встречающихся алгоритмов работы с массивами
- •4.4. Компонент tStringGrid для ввода/вывода массивов
- •4.5. Пример написания программы с использованием tStringGrid
- •Interface
- •Implementation
- •4.6. Компонент tEdit для ввода одномерных массивов
- •4.7. Пример написания программы с использованием tEdit
- •4.7. Компонент tMemo для ввода/вывода одномерных массивов
- •4.8. Пример написания программы с использованием tMemo
- •4.9. Индивидуальные задания
- •Лабораторная работа 5. Программирование с использованием строковых данных
- •5.1. Работа со строками
- •5.2. Пример написания программы
- •Лабораторная работа 6. Программирование с использованием подпрограмм и модулей
- •6.1. Описание подпрограмм
- •6.2. Передача данных через формальные параметры
- •6.3. Процедурные типы
- •6.4. Область видимости переменных
- •6.5. Пример написания программы с использованием процедур
- •Interface
- •Implementation
- •6.6. Использование модулей
- •6.7. Пример написания программы с использованием модуля
- •6.7.1. Создание модуля
- •6.7.2. Подключение модуля
- •Implementation
- •6.8. Индивидуальные задания
- •Лабораторная работа 7. Построение графиков
- •7.1. Компонент tChart
- •7.2. Пример написания программы
- •7.4. Индивидуальные задания
- •Лабораторная работа 8. Работа с файлами
- •8.2. Прямая работа с файлами (классический способ)
- •Доступ к файлам
- •Подпрограммы для работы с файлами
- •Запись и чтение типизированных файлов
- •Запись и чтение нетипизированных файлов
- •8.3. Диалоги открытия и сохранения файлов
- •8.4. Пример написания программы
- •8.5. Индивидуальные задания
- •Средства отладки программ в delphi
- •Литература
5.2. Пример написания программы
Задание: Дана строка, в которой содержится текст, включающий в себя как русские, так и английские слова. Подсчитать каких букв больше: русских или английских?
На рис. 5.1 изображен интерфейс программы, а на листинге 5.1 - ее текст.

Рис 5.1. Интерфейс программы.
Листинг 5.1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
Image1: TImage;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//-------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
const
EngChar = ['A'..'Z', 'a'..'z']; //множество английских букв
RusChar = ['Ё', 'ё', 'А'..'Я', 'а'..'я']; //множество русских букв
var
i, e, r: integer;
begin
e := 0;
r := 0;
for i := 1 to Length (Edit1.Text) do begin
if Edit1.Text [i] in EngChar then e := e+1;
if Edit1.Text [i] in RusChar then r := r+1;
end;
Label1.Caption := 'Английских символов - ' + IntToStr (e)+#13#10+
'Русских символов - ' + IntToStr (r);
end;
//------------------------------------------------
end.
5.3. Индивидуальные задания
Во всех заданиях приведено по 2 задачи. Если возможно, то обе задачи можно объединить в одну и для нее разработать общий интерфейс и общее решение. Если это сделать нельзя, то каждую задачу следует решать отдельно.
Таблица 5.1
|
Вариант |
Задание |
|
1 |
1. Дана строка. Подсчитать, сколько в ней букв (r, k, t). 2. В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен. |
|
2
|
1. Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке. 2. Дана строка. Указать те слова, которые содержат хотя бы одну букву (с). |
|
3 |
1. Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы (b). 2. Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой. |
|
4 |
1. Дана строка. Определить, сколько в ней символов (*) , ( ;) , (:) . 2. В строке удалить символ "двоеточие" (:) и подсчитать количество замен. |
|
5 |
1. Дана строка, содержащая текст. Найти длину самого короткого слова и самого длинного слова. 2. В строке вставить вместо пробела запятую и пробел. |
|
6 |
1. Дана строка символов, среди которых есть двоеточие (:). Определить, сколько символов ему предшествует. 2. Удалить часть символьной строки, заключенной в скобки (вместе со скобками)
|
|
7 |
1. Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы. 2. Определить сколько раз в строке встречается заданное слово. Заданное слово ввести с клавиатуры. |
|
8 |
1. Дана строка. Преобразовать ее, удалив каждый символ (*) и повторив каждый символ, отличный от (*) . 2. В строке имеется точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее. |
|
9 |
1. Дана строка. Определить, сколько раз входит в нее группа букв (abc). 2. Дана строка. Преобразовать ее, заменив точками все двоеточия, встречающиеся среди первой половины символов строки, и заменив точками все восклицательные. |
|
10 |
1. Дана строка. Подсчитать количество букв (k) в последнем ее слове. 2. Строка содержит одно слово. Проверить будет ли она одинаково читаться справа налево и слева направо (т.е. является ли оно палиандромом.) |
|
11 |
1. Дана строка. Подсчитать, сколько различных символов встречается в ней. Вывести их на экран. 2. В записке слова зашифрованы – каждое из них записано наоборот. Расшифровать сообщение. |
|
12 |
1. Дана строка. Подсчитать самую длинную последовательность подряд идущих букв (a). 2. Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке. |
|
13 |
1. Дана строка. Указать те слова, которые содержат хотя бы одну букву (k). 2. Дана строка. Заменить в ней все парные символы на одиночные (например, аа -> а, тт -> т). |
|
14 |
1. Имеется строка, содержащая буквы латинского алфавита и цифры. Вывести на экран длину наибольшей последовательности цифр, идущих подряд. 2. Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие хотя бы одну букву (о). |
|
15 |
1. Дан набор слов, разделенных точкой с запятой (;). Набор заканчивается двоеточием (:). Определить, сколько в нем слов, заканчивающихся буквой (а). 2. Дана строка, заканчивающаяся точкой. Подсчитать, сколько запятых в строке.
|
