Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛПЗ поОАиП.doc
Скачиваний:
55
Добавлен:
18.05.2015
Размер:
3.08 Mб
Скачать

Практические задания

  1. Организовать символьные файлы g и f состоящие из n и m символов соответственно. Определить и вывести на экран множество символов входящих одновременно в файлы g и f.

  2. Из множества целых чисел 1..20 выделить: множество чисел, делящихся на 6 без остатка; множество чисел делящихся на 2 или на 3 без остатка. Вывести содержимое этих множеств на экран.

  3. Ввести строку символов, состоящую из латинских букв цифр и пробелов. Осуществить проверку правильности введённых символов.

  4. Подсчитать общее количество знаков +, -, *, входящих в строку S.

  5. Посчитать количество больших и количество малых латинских букв в строке S.

  6. Дан текст из цифр и строчных латинских букв без знаков препинания. Определить, каких букв – гласных (a, e, i, o, u) или согласных больше в этом тексте.

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

Тема: Решение задачи и создание и уничтожение объектов с помощью конструкторов и деструкторов.

Цель: Научить как создавать объекты и пользоваться ими.

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

Разместим на форме компоненты Label, Edit, Button, BitBtn,Memo.

Label Edit Button Memo

Рис.11.2. Размещение компонентов на форме

11.4.3. Создание процедуры обработки событий FormCreate и BitBtn1Click

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

      1. Текст модуля UnStek

unitUnStek;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Button1: TButton;

BitBtn1: TBitBtn;

Memo1: TMemo;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

type

pSt=^zap;

zap=record

inf: integer;

adr: pSt

end;

var// объявление глобальных переменных

pVer,// указатель вершины стека

pTek:pSt;// текуший указатель

elSt:integer;// элемент стека

procedureTForm1.FormCreate(Sender: TObject);

begin

Memo1.Clear;

Edit1.Text:='';

pVer:=nil;// инициализировать указатель вершины

elSt:=0;// инициализировать элемент стека

end;

procedureTForm1.Button1Click(Sender: TObject);

begin

New(pTek); // выделить память

elSt:=StrToInt(Edit1.Text);

pTek^.inf:=elSt;// в информационную часть стека занести elSt

pTek^.adr:=pVer;// в адресную часть занести указатель на вершину

pVer:=pTek;// указатель вершины должен указывать на

// последний элемент

ifelSt>=0then // если элемент стека неотрицательный, тогда …

begin

Edit1.Text:='';// очистить окно редактора Edit1

Edit1.SetFocus;// передать фокус ввода редактору Edit1

end

else

begin

Memo1.Lines.Add('Элементы стека:'); // вывод заголовка

repeat

Memo1.Lines.Add(#9+IntToStr(pTek^.inf)); // вывод элементов

pVer:=pTek^.adr;

Dispose(pTek); // освободить память

pTek:=pVer;

until pTek=nil;

end;

end;end.

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

  • Для чего используется компонент Label, Edit, Button?

  • Для чего используется компонент BitBtn?

  • Для чего используетсяMemo?