49996 (Понятие множества. Символьный тип), страница 2
Описание файла
Документ из архива "Понятие множества. Символьный тип", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49996"
Текст 2 страницы из документа "49996"
Значения переменной s1=’воз’. А на экране будут выведены следующие строки: воз и 34.
Удаление
В Turbo Pascal для этого используется процедура Delete(str, n,m), которая вырезает из строки str m символов, начиная с n-го. таким образом сама строка изменяется. Например:
Дан фрагмент программы:
s:='123456'; delete(s, 3, 2); writeln(s);
После выполнения этих операторов из строки будут удалены два символа, начиная с третьего, то есть строка будет такой: s = '1256'.
Замена (Вставка)
В Turbo Pascal это можно сделать, применяя процедуру Insert(s1,s2,n) – вставка строки s1 в строку s2, начиная с п-го символа, при этом первая строка остается такой же, как и была, а вторая получает новое значение. Например:
s1;='34': s2:='1256'; insert (s1, s2, 3);
В результате выполнения данной процедуры строка будет такой
s2='123456'.
Числа и строки
Надо заметить, что число 25 и строка 25 – это не одно и то же. Для работы с числами и строками в Turbo Pascal применяются две процедуры.
Str(n,s1) – переводит числовое значение n в строковое и присваивает результат строке s1, причем можно переводить как целые числа, так и вещественные. Например:
n:=12; str(n,s1); - после выполнения s1 ='12'
Существует обратная операция, переводящая строковое значение в числовое.
Функция val(s, n, k) – переводит строковое значение в числовое, если данная строка действительно является записью числа (целого или вещественного), то значение k=0, а n – это число, иначе k будет равно номеру символа, в котором встречается первое нарушение записи числа n. Например:
val(‘1234',n,k) п=1234, k=0;
Функции преобразования типов
Иногда в программах возникает необходимость по коду определить символ и, наоборот, по символу определить его код. Для этого используют функцию: 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, для доступа к полю можно указывать только имя поля без имени переменной.
Записи с вариантами
Записи могут иметь варианты. В качестве примера приведём исследование для проверки качества некоторого лекарства. Если проверки не производится, то единственные данные, которые нас интересуют, - это применял ли данный пациент ранее данное лекарство. Если же производится проверка, то необходимо собрать сведения по большому числу данных относительно головной боли, лихорадки и тошноты.
Мы используем две структуры данных типа запись:
|
|
|
Что можно сделать с описаниями переменных, чтобы мы могли работать одновременно с обеими структурами? Для этого в описании записи можно применить специальный переключатель 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. Богатырев, А. Язык программирования С [Электронный ре-сурс] / А. Богатырев.- электр. дан. - Режим доступа: http://www.refby.com. - Загл. с экрана.