Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК по СПО.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.79 Mб
Скачать

Порядок выполнения работы:

  1. Запустить BorlandC++Builder, создать приложение.

  2. Согласно выбранному заданию написать программу.

  3. Результат вывести на экран с помощью потоковых функций.

Таблица 4 ─ Варианты заданий на лабораторную работу №1

Задание

Вариант

Прочитать текст из файла, и вывести его следующим образом:

Каждое число на отдельной строке в десятичном виде с точностью 2 цифры после запятой и полем в 10 символов, причем числа, начинающиеся с 0 рассматривать как восьмеричные, а числа, заканчивающиеся на Н, рассматривать как шестнадцатеричные, все остальные – десятичные;

После нахождения символа “!” начинать выводить текст с новой строки;

1

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

Формат, задающий вид и координаты фигур, следующий:

Line(x1, y1, x2, y2)

Circle(x, y, r)

Ellipse(x1, y1, x2, y2)

Rectangle(x1, y1, x2, y2)

2

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

  1. Опишите алгоритм работы программы.

  2. Какие функции для ее написания Вы использовали?

  3. Какие потоковые классы Вы знаете?

  4. Какие флаги для форматирования данных при вводе-выводе Вы знаете?

  5. Какие объекты потоковых классов Вы знаете?

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

Лексический анализатор lex. Анализ структуры программ

Цель работы: освоить работу в MS VisualC++ с лексическим анализатором LEX. Изучить правила выделения лексем. Ознакомиться с правилами форматирования текстов различных языков программирования.

Краткая теория:

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

Так текст:

if(…){…} else {if(…){…}if(…)else…}

корректно было бы представить в виде:

if(…){

}

else{

if(…){

}

if(…)…

else …

}

Такое представление информации помогает простому восприятию текста, пониманию, упрощает процедуру коррекции. Из этого следует необходимость в определенном дизайне(стиле) программных текстов.

Рассмотрим несколько особенностей стилей написания программ на языках C++, Pascal, HTML.

C++

Помещайте на отдельных строках:

  • вызов функций;

  • закрывающую скобку (});

  • операцию присвоения;

  • объявление переменных одного типа;

  • заголовок функции

  • циклы и оператор if и т.д.

Используйте отступы для выделения циклов, методов и их тел, для действий внутри блоков {…}.

Рассмотрим пример:

void CTreeTestDlg::OnLButtonDown(UINT nFlags, CPoint point)

{

CT::iterator it=t.root();

CT::iterator ins=t.root();

double min=10000,cur;

while(it!=t.end()){

CPoint p=(*it).p;

cur=sqrt(pow((double)(point.x-p.x),2)+pow((double)(point.y-p.y),2));

if(min>cur){

min=cur;

ins=it;

}

it++;

}

ctti.p=point;

t.append(ins,ctti);

Invalidate(true);

}

TurboPascal

Пишите заголовки тела программы (BEGIN, END), области определения переменных прописными буквами (VAR), а вложенные блоки – строчными, начиная со строчной (Begin, End)(необязательно).

Помещайте каждое новое действие на отдельных строках.

Используйте отступы для выделения циклов, процедур, функций и их тел.

Зарезервированные слова Begin, End пишите на отдельной строке на уровне последнего оператора, а вложенные операторы располагайте на новой строке на расстоянии двух пробелов.

Рассмотрим пример:

PROGRAM traveling_salesperson ;

CONST

TYPE

VAR

FUNCTION tanh(r : real) : real ;

VAR

r1,r2 : real ;

Begin

IF r > 20.0

THEN tanh := 1.0

ELSE IF r < -20.0

THEN tanh := -1.0

ELSE

BEGIN

r1 := exp(r) ;

r2 := exp(-r) ;

tanh := (r1 - r2) / (r1 + r2) ;

END ;

END ; (* tanh *)

PROCEDURE initialize ;

TYPE

CONST

VAR

BEGIN

randomize ;

FOR … TO … DO

BEGIN

END ;

FOR … TO … DO

BEGIN

FOR … TO … DO

BEGIN

END ;

END ;

writeln(…) ;

END ;

BEGIN

initialize ;

iterate ;

END.

HTML

Начинайте с новой строки следующие теги:

  • открытия таблицы <Table>;

  • открытия новой строки и нового столбца в таблице <tr><td>;

  • теги < Html><Meta><Title><Head>;

  • открытия новой строки в списке <UL><LI><OL>;

  • абзаца и отдельно стоящего рисунка <P><IMG>;

  • установки нового фрейма и т.д.<FrameSet>

  • Отделяйте отступами от начала строки:

  • строки и столбцы в таблицах;

  • вложенные фреймы;

  • строки в списках и др.