Функции преобразования типов




Иногда в программах возникает необходимость по коду определить символ и, наоборот, по символу определить его код. Для этого используют функцию: CHR(x).

Эта функция возвращает символ, соответствующий ASCII-коду числа x. Например:

for i = 0 to 255 do writeln(i,' ', chr(i));

Для определения кода по символу используют функцию ORD. Например:

readln(s); writeln(ord(s));

Комбинированный тип данных (записи)

Запись - тип данных, состоящий из фиксированного числа компонентов (называемых полями) одного или нескольких типов.

Приведём примеры описания типа запись:

 

type Point=RECORD x,y: Real

END;

Dates=RECORD day: 1..31; mon: String[3]; year: 1..3000

END;

var p,r: Point;

dt: Dates;

 

Можно определить массив записей, поля которых также являются массивами:

 

type Student=Array [1..N] of Record fam: String[15]; birth: Dates; man: Boolean; marks: Array[1..10] of 0..5

end;

var Group: Student;

 

Идентификатор Group можно использовать для хранения информации о группе студентов (фамилия, дата рождения, пол и оценки по 10 предметам).

Обращение к значению поля записи происходит при помощи составного имени, содержащего идентификатор переменной и имя поля, разделённые точкой. Например, p.x, dt.mon, group[1].man, group[2].marks[1].

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

Обращение к полю записи с помощью составного имени может иметь громоздкий вид. Оператор WITH, решающий эту проблему, имеет следующий вид:

WITH <Переменная типа запись> DO <Оператор>

Если после слова WITH задать имя записи, то в операторе, следующим за DO, для доступа к полю можно указывать только имя поля без имени переменной.

 

Записи с вариантами

 

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


Мы используем две структуры данных типа запись:

 

Nomer
Proverka
Prinimal

 

 
Nomer
Proverka
GolovBol
Lihoradka
Toshnota

 

 

Что можно сделать с описаниями переменных, чтобы мы могли работать одновременно с обеими структурами? Для этого в описании записи можно применить специальный переключатель Case. После возможного результата Proverka в скобках приводится описание соответствующих полей. Это иллюстрируется ниже:

 

type Effect=Record Nomer: Integer; Case Proverka: Boolean of

FALSE: (PrinimalRanee: Boolean);

TRUE: (GolovBol,Lihoradka,Toshnota: Boolean)

end;

var Nekto: Effect;

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

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

В случае, когда один из вариантов не содержит полей (т.е. список полей пуст), в скобках после соответствующей константы ничего не пишут, например:


Type Pogoda=Record Temperatura: Integer; Vlagnost: Integer; Case Veter: Boolean of TRUE: (Napravlenie: (S,N,V,O); Skorost: Integer); FALSE: ()

end;

Замечания:

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

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

Вариантная часть может содержать другие записи, в том числе и с вариантами. Степень вложенности записей в вариантной части не ограничена.

Разработка Программы

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

Список выходных данных

Выводятся ученики одного класса, либо проживающие в одном доме.

Разработка алгоритма решения задач

Разработка блок-схемы решения задачи

Программный код:

 

unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, Mask, DBCtrls, ExtCtrls, Grids, DBGrids, ComCtrls;

type TForm1 = class(TForm) PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

DBEdit5: TDBEdit;

DBEdit6: TDBEdit;

DBEdit7: TDBEdit;

DBEdit8: TDBEdit;

DBEdit9: TDBEdit;

DBEdit10: TDBEdit;

DBEdit11: TDBEdit;

Edit1: TEdit;

Button1: TButton;

ADOConnection1: TADOConnection;

ADODataSet1: TADODataSet;

ADODataSet2: TADODataSet;

DataSource1: TDataSource;

DataSource2: TDataSource;

procedure Button1Click(Sender: TObject);

private { Private declarations } public { Public declarations } end;

var Form1: TForm1;

implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);

begin

ADODataSet2.Close;

if Length(Edit1.Text)<>0 then

ADODataSet2.CommandText:='select*from школьники where класс like'''+Edit1.Text+'%''or адрес like''%'+Edit1.Text+''''

Else AdoDataSet2.CommandText:='select*from школьники';

ADODataSet2.Open;

end;

end

 

Список функций:

TForm1 = class(TForm) – служит для создания формы;

PageControl1: TPageControl;- многостраничная панель;

TabSheet1: TTabSheet; - вкладка «добавление/редактирование»;

TabSheet2: TTabSheet; - вкладка «поиск»;

Label1: TLabel; - для подписи компонента

DBEdit1; Label2: TLabel; - для подписи компонента

DBEdit2; Label3: TLabel; - для подписи компонента

DBEdit3; Label4: TLabel; - для подписи компонента

DBEdit4; Label5: TLabel; - для подписи компонента

DBEdit5; Label6: TLabel; - для подписи компонента

DBEdit6; Label7: TLabel; - для подписи компонента

DBEdit7; Label8: TLabel; - для подписи компонента

DBEdit8; Label9: TLabel; - для подписи компонента

DBEdit9; Label10: TLabel; - для подписи компонента

DBEdit10; Label11: TLabel; - для подписи компонента

DBEdit11; DBGrid1: TDBGrid; - отображение данных;

DBNavigator1: TDBNavigator; - управление данными;

DBEdit1: TDBEdit – отображает номер личного дела;

DBEdit2: TDBEdit; - отображает фамилию; DBEdit3:

TDBEdit; - отображает имя;

DBEdit4: TDBEdit; - отображает отчество;

DBEdit5: TDBEdit; - отображает дату рождения;

DBEdit6: TDBEdit; - отображает класс;

DBEdit7: TDBEdit; - отображает адрес;

DBEdit8: TDBEdit; - отображает номер квартиры;

DBEdit9: TDBEdit; - отображает семью;

DBEdit10: TDBEdit; - отображает ФИО папы;

DBEdit11: TDBEdit; - отображает ФИО мамы;

Edit1: TEdit; - служит для ввода критерия поиска;

Button1: TButton; - добавление кнопки;

ADOConnection1: TADOConnection; - обеспечивает соединение с БД;

ADODataSet1: TADODataSet; - представляет собой данные, полученные от источника данных, в результате выполнения SQL – запросов;

ADODataSet2: TADODataSet; DataSource1: TDataSource; - источник данных;

DataSource2: TDataSource; procedure Button1Click(Sender: TObject); - при нажатии на кнопку происходит поиск;

procedure TForm1.Button1Click(Sender: TObject); - построение запроса для кнопки;


Проверка по шагам для отдельных алгоритмов программы

Вкладка "Добавление/редактирование"

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

Вкладка Поиск

С помощью этих вкладок пользователь может произвести поиск учеников по классу или по адресу.

 

Разработка интерфейса

 

На первой вкладке «Добавление/редактирование» при помощи DBNavigator мы можем добавлять или редоктировать уже существующие данные об учениках.

На второй вкладке «Поиск» при нажатии кнопки «поиск» происходит поиск по классам или по адресу(ученики проживающие в одном доме).

Тестирование и результаты работы программы

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


Вывод

 

В ходе данной работы было:

раскрыто понятие множества,

описаны операций, которые можно выполнять над множеством;

раскрыто понятие символьного и комбинированного типов данных;

описаны операции и функции для работы с символьными переменными;

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


Список использованной литературы

1. Лахатин, А.С. Языки программирования. Учеб. пособие / А.С. Лахатин, Л.Ю. Искакова. - Екатеринбург, 1998. - 548с.: ил.

2. Богатырев, А. Язык программирования С [Электронный ре-сурс] / А. Богатырев.- электр. дан. - Режим доступа: https://www.refby.com. - Загл. с экрана.

3. Уэйт, М. Язык С. Руководство для начинающих. / М. Уэйт, С. Прага, Д. Мартин. - М.: Мир, 1995. - 521с.: ил.

4. Фридман, А.Л. Язык программирования / А.Л.Фридман. - М.: Бином, 2006. - 523с.: ил.

5. Патрикеев, Ю.Н. Объектно-ориентированное программирова-ние [Электронный ресурс] / Ю.Н.Патрикеев. - Электрон. Дан. - Режим дос-тупа: https://www.intuit.ru/department/pl/cpp/lit.html. - загл. с экрана.

6. Тарасов, И. Thinking in C++/ И. Тарасов.- М.: 2004.- 496с.: ил.

7. Гагин, А. История JAVA / А.Гагин.- М,1998.-257с.: ил.

8. Таранов, А. Java как центр архипелага [Электронный ресурс] / А. Таранов, В. Цишевский. - Электрон. дан.- Режим доступа: https:// www. fortunecity.com/skyscraper/mmx/490/index.html. - Загл. с экрана.

9. Коропов, С. Алгоритм [Электронный ресурс] / С. Коропов. - Электрон. дан. - Режим доступа: ftp://labrea.stanford.edu/pub/cweb/. - Загл. с экрана.

10. Робинсон, С. C# для профессионалов: T.1. / С.Робинсон, О. Корнес, Д.Глин, Б. Харвей и др.; пер. с англ. С. Кортыгин и О. Труфанов. - М. ЛОРИ. - М.: 2005. - 999с.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: