АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Програмування макета цільової програми з виділенням в ньому постійних та параметричних компонент

Читайте также:
  1. II. Организация деятельности по трансфузии (переливанию) донорской крови и (или) ее компонентов
  2. III. Правила проведения трансфузии (переливания) донорской крови и (или) ее компонентов
  3. L.1.1. Однокомпонентные системы.
  4. L.1.2.Многокомпонентные системы (растворы).
  5. Passive тобы - пассивті компоненттер
  6. PCI. (Peripheral Component Interconnect bus – шина соединения периферийных компонентов)
  7. PHP – скриптова мова програмування
  8. V. Правила и методы исследований при трансфузии (переливании) консервированной донорской крови и эритроцитсодержащих компонентов
  9. VII. Правила переливания консервированной донорской крови и эритроцитсодержащих компонентов
  10. XII. Правила трансфузии (переливания) донорской крови и (или) ее компонентов детям
  11. XIII. Аутодонорство компонентов крови и аутогемотрансфузия
  12. А. Компоненты железы

 

Цільова програма (вихідний рядок після компиляції), в яку треба перетворити вхідний рядок заданого варіанту підмножини мови SQL, може бути у форматі будь-якої відомої мови програмування (Pascal, C, Java, VB, тощо) або мови низького рівня СКБД (тобто не SQL), але вибір вихідної мови треба узгодити з викладачем, що проводить заняття з лабораторних робіт. Якщо обрано якусь мову програмування, то таблиці БД представляти файлами, як це робилося в лабораторних роботах дисциліни «Структура і організація даних в ЕОМ».

Ця робота, виходячі з послідовності фаз побудови компілятора, як вже наводилося, мала б бути після побудови синтаксичного аналізатора, але в даном лабораторному практикумі вона поставлена попереду, щоб не втрачати часу и надати можливість скоріше перейти до програмування генератора коду одразу після розробки синтаксичного аналізатора. Як вже наводилося вище, цільова програма – це вихідний рядок після компиляції однєю з мов Pascal, C, Java, VB, тощо. Вихідна мова задається викладачем, що проводить лабораторні роботи, але може студентом за погодженням з викладачем може бути обрана інша мова.

Вхідною мовою є підмножина мови SQL – спрощений варіант оператора SELECT:

· запит формулюється до однієї таблиці VEDOM. Таблиця моделюється відповідним файлом, поля записів якого мають, наприклад, такі типи:

Name -text(20);

Group – integer;

Rate -real;

Borg – logical.

· скелет запиту складають ключові слова SELECT... FROM … WHERE …

· серед атрибутів, що виводяться, відсутні розрахункові поля;

· умова селекції рядків (вираз після WHERE) є елементарним, тобто без логічних операторів NOT, AND або OR і без дужок.

Приклад запиту, який буде використовуватися для демонстрації алгоритму:

 

SELECT Name, Group, Rate, Borg FROM Vedom WHERE Group = 302;

Червоним кольором показані конструкти граматики (в основному – токени), які є «параметрами» при формуванні вихідної програми, а її остов (макет) можна сконструювати зазделегідь. Наведений рядок мовою SQL будемо вважати вхідним. Цільовим (вихідним) рядком будемо вважати програму мовою Pascal, котра для даного запиту має такий зміст, при умові, що такий файл, що відповідає таблиці Vedom, вже існує. Вихідна програма мовою Pascal може мати такий вигляд:

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils;

type

TableLine=record //

Name:string[10];

Group:integer;

Rate:real; //

Borg:boolean; //

end;

var

Vedom:file of TableLine;

T:TableLine;

/* Вставити ще визначення структури та вмісту масиву службових слів KeyWords, який представлено нижче таблицею KeysW

FirstL LongKW KeyWord
s   select
f   from
w   where

Колонки (поля запису масива) FirstL і LongKW (перша літера та довжина ключових слів) уводимо для спрощення алгоритму. */

 

procedure PickElemFile; //

var

St,B_t:string;

Flag:boolean;

 

begin

assignfile(Vedom,'Table.dat');

reset(Vedom); //

Flag:=true;

while not Eof(Ft) do

begin //

read(Vedom,T); //

if T.Borg=true then B_t:='YES'

else B_t:='NO';

//

if T.Group = 302 then //

begin //

St:=T.Name+' '+IntToStr(T.Group)+' '+

' '+FloatToStrF(T.Rate,ffFixed,5,2)+' '+B_t;

writeln(St);

Flag:=false; //

end;

end;

if Flag then

begin

St:='****there are no such data in file**** ';

writeln(St);

end;

end;

 

begin //main

PickElemFile;

writeln('For Exit press ENTER');

readln;

end.

 

 

Червоним кольором позначені місця вихідної програми, які мають вставлятися під час трансляції вже згадуваного рідка мовою SQL.

Макет розробленої програми має бути протестований для певної кількості запитів, які дозволяє граматики підмножини мови за варіантом.

Примітка. Наведений код програми на Pascal не є відлагодженим, він наведений для уявлення, як має будуватися макет вихідної програми при структурному підході-.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

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



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)