УМК_ПрОА_Лабораторные работы

3.5 Методические указания к выполнению практических и лабораторных работ
Практическая работа
Запись простейших алгоритмов обработки числовых данных
Цель работы – ознакомиться с ГОСТом 19.701-90 (ИСО 5807-85), введенным к обязательному применению с 01.01.92 г. и регламентирующим правила записи алгоритмов; получить навыки записи базовых алгоритмических структур, исследовать преимущества счетчиков и аккумуляторов при разработке алгоритмов работы с числовыми массивами.
Найти в Интернете и изучить ГОСТ 19.701-90 (ИСО 5807-85) в части требований к оформлению схем алгоритмов.
Используя примеры алгоритмов из опорного конспекта, разработать и записать в виде блок-схем алгоритмы решения следующих задач:
ввести два целых числа, минимальное из них удвоить и результат вывести на экран;
ввести три целых числа, вычислить среднее арифметическое этих чисел.
ввести три целых числа, вычислить 13 EMBED Equation.3 1415, т.е. сумму минимального и максимального из них;
ввести три целых числа, вычислить 13 EMBED Equation.3 1415, т.е. разность максимального и минимального из них;
ввести одномерный массив целых чисел, определить сумму его элементов;
ввести одномерный массив целых чисел, определить номер первого отрицательного элемента;
ввести одномерный массив целых чисел, определить сумму его отрицательных элементов;
ввести одномерный массив целых чисел, определить его максимальный элемент.
Результат выполнения практической работы: Вы ознакомились с утвержденными ГОСТом правилами записи алгоритма решения задачи в виде блок-схемы и научились записывать простейшие алгоритмы обработки числовых данных. Вы исследовали типовые приемы организации суммирования числовых данных с помощью переменной-счетчика и переменной-аккумулятора.
Форма представления результатов практической работы: отчет на бумажном носителе с блок-схемами решения задач.
Лабораторная работа № 1
Исследование визуальной среды программирования
Microsoft Visual Basic 6.0 для операционной системы Windows
Цель работы – исследовать возможности визуальной инструментальной среды и овладеть навыками работы в ней при создании простейшего приложения для операционной системы Windows.
Этап 1.1. Исследование рабочего окна системы программирования
Запустить MS Visual Basic 6.0
Выбрать вид нового файла Standart.exe (выбирается по умолчанию при нажатии на кнопку Open)
На рабочем столе появилась пустая форма в виде серого прямоугольника на белом фоне.
Увеличить размер формы можно путем протаскивания за диагональный маркер. Форма должна занимать значительную часть экрана, но не выходить за его пределы.
В правой нижней части экрана расположено окно свойств, в котором отображается список свойств активного элемента с их значениями. В начальный момент активной является новая форма, ее свойствам Name и Caption приписаны значения по умолчанию Form1. Измените значение свойства Caption на произвольное. Новое имя появилось в синей строке заголовка формы.
В правой верхней части экрана располагается окно проекта, в котором отображается структура создаваемого приложения. В начальный момент в проект входит только форма Form1. Помимо форм в проект могут входить отдельные программные модули. Добавить в проект дополнительную форму или модуль можно через диалог меню Add
В левой части экрана располагается панель элементов управления. При наведении на элементы курсора мыши появляется всплывающая подсказка с названием элемента. Для размещения элемента на форме достаточно кликнуть на элементе, затем очертить курсором область на форме, где будет располагаться элемент. Активный элемент выделен граничными маркерами, а его свойства отображаются в окне свойств.
В процессе создания дизайна экранной формы каждому элементу управления присваиваются значения его свойств, основным из которых является свойство Name. По значению этого свойства данный элемент связывается с программным кодом обработки события.
Окно программного кода можно вызвать через диалог меню View->Code. Текстовый редактор позволяет записывать тексты программы на языке Visual Basic и контролирует наличие синтаксических ошибок.
Для запуска приложения используются кнопка Start основного меню или клавиша F5. Активное приложение, состоящее из экранной формы и программного кода обработки событий, готово к действиям пользователя. Для возврата в режим редактирования формы следует остановить работу приложения кнопкой Stop основного меню.
Готовое приложение следует сохранить как проект через диалог меню Save Project As... Для сохранения проекта необходимо выделить отдельную папку. Проект будет сохранен как набор файлов, содержащих как минимум файл формы и файл проекта. Двойной клик на файле проекта приведет к активизации системы программирования и открытию формы для редактирования.
Результат выполнения этапа: Вы познакомились со структурой рабочего окна визуальной среды программирования и важнейшими пунктами меню, позволяющими создать дизайн экранной формы, записать текст программного кода, сохранить приложение как проект, активизировать приложение и остановить его работу.
Форма представления результатов лабораторной работы: папка с файлами проекта.
Этап 1.2. Создание проекта «Фигура»
Запустить MS Visual Basic 6.0
Выбрать вид нового файла Standart.exe.
Разместить на форме элементы управления в соответствии с рис. 1 и определить значения свойств каждого элемента формы в соответствии с табл. 1.
13 SHAPE \* MERGEFORMAT 1415

Рис. 1 Дизайн формы для проекта «Фигура»

Таблица 1. Свойства и значения элементов управления
Объект

Элемент на панели

Свойство

Значение

Форма

Form

Name
frmShape



Caption
Shaping Up

Фигура
Shape
Name
shpSample

Метка 1

Label

Name
lblShape



Caption
shape

Метка 2

Label

Name
lblPattern



Caption
Pattern

Список 1
ListBox
Name
lstShape

Список 2
ListBox
Name
lstPattern

Кнопка

CommandButton

Name
cmdExit



Caption
E&xit


Для приложения необходимо написать программный код, который инициализирует списки значениями, отображаемыми на экране при запуске программы, и будет реагировать на действия пользователя.
Для перехода к окну программного кода выберите пункт меню View -> Code . В верхней части окна редактора располагаются два раскрывающихся списка: список объектов приложения (форма, фигура, два списка, две метки и командная кнопка, чьи имена соответствуют именам из таблицы свойств) и список допустимых событий каждого из этих объектов. Необходимо создать программный код только для тех событий, на которые будет реагировать приложение.
Выберите в левом раскрывающемся списке элемент Form. В правом раскрывающемся списке автоматически выделилось событие Load, а в окне редактора появились начальные и конечные строки кода. Введите между ними остальные строки обработчика события из листинга 1. Код представляет собой список действий (методов). Например, метод AddItem создает список.
Листинг 1. Инициализация списков
Private Sub Form_Load()
' Инициализация раскрывающегося списка Shape
LstShape.AddItem "0 - Rectangle"
LstShape.AddItem "1 - Square"
LstShape.AddItem "2 - Oval"
LstShape.AddItem "3 - Circle"
LstShape.AddItem "4 - Rounded Rectangle"
LstShape.AddItem "5 - Rounded Square"
' Инициализация раскрывающегося списка FiIIStyle
LstPattern.AddItem "0
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·' Установить начальные значения для каждого списка
LstShape.ListIndex = 0
LstPattern.ListIndex = 0
End Sub

Выберите в левом верхнем раскрывающемся списке редактора объект LstPattern. В правом раскрывающемся списке автоматически выделилось событие Click. Введите для обработчика первого раскрывающегося списка программный код, представленный в листинге 2.
Листинг 2. Изменение способа заливки фигуры
Private Sub LstPattern_Click()
' Изменить вид в соответствии с выбором
shpSample.FillStyle=LstPattern.ListIndex
End Sub

Выберите в левом верхнем раскрывающемся списке редактора объект LstShape. В правом раскрывающемся списке автоматически выделилось событие Click. Введите для обработчика второго раскрывающегося списка программный код, представленный в листинге 3.
Листинг 3. Изменение фигуры
Private Sub LstShape_Click()
' Изменить фигуру в соответствии с выбором
shpSample.Shape = LstShape.ListIndex
End Sub

Выберите в левом верхнем раскрывающемся списке редактора объект cmdExit. В правом раскрывающемся списке автоматически выделилось событие Click. Введите для обработчика командной кнопки программный код, представленный в листинге 4. Оператор End заставляет Visual Basic прекратить выполнение программы по клику на кнопке выхода..
Листинг 4. Завершение программы
Private Sub cmdExit_Click()
End
End Sub

Нажмите на клавишу F5. Если программный код набран безошибочно, введены все элементы управления и установлены значения их свойств в соответствии с табл. 1, приложение должно запуститься. Кликните на любом из списков и наблюдайте за изменениями на форме. Приложение позволяет исследовать некоторые геометрические фигуры и способы их заливки. Для завершения работы приложения кликните на кнопке Exit.
Если приложение не заработало или получено сообщение об ошибке, то следует вернуться к окну программного кода, исправить все ошибки и проверить все значения по табл. 1.
Сохраните проект в отдельной папке. Проверьте ее содержимое: в ней сохранился файл экранной формы и файл проекта.
Результат выполнения этапа: Вы научились создавать дизайн экранной формы, располагая на ней элементы управления и определяя их свойства. С каждым элементом управления Вы связали программный код, который реагирует на действия пользователя. Вы научились сохранять проект как совокупность файлов, запускать приложение и вызывать события с помощью кликов на элементах формы. Таким образом, Вы познакомились с возможностями визуальной системы программирования Microsoft Visual Basic 6.0.
Форма представления результатов лабораторной работы: папка с файлами проекта.
Лабораторная работа № 2
Технология алгоритмического программирования
Цель работы – исследовать возможности командной инструментальной среды TurboPascal 7.0 и овладеть навыками разработки простейших программ обработки числовых и символьных данных на языке Pascal.
Этап 2.1. Исследование возможностей системы программирования TurboPascal 7.0 для операционной системы MS DOS.
Для начала работы в системе программирования TurboPascal 7.0 необходимо подготовить рабочую папку с коротким (8 символов) именем в латинском алфавите (например, /TP) и в ней создать папку /TP/Prog для хранения собственных программ.
Скопировать файлы TurboPascal 7.0 в папку /TP и запустить на выполнение файл Turbo.exe.При этом на экране появляется окно редактора с синим фоном, верхней линейкой меню и нижней линейкой с функциональными клавишами. Система программирования лишена графического интерфейса, реагирует на действия мышью и нажатие клавиш на клавиатуре.
Первоначально в окне редактора открыт пустой безымянный файл, который можно сохранить под собственным именем. Для сохранения файла выбрать пункт меню File->Save As В диалоге установить путь к папке /TP/Prog и ввести имя файла не более чем из восьми латинских символов (например, task_1). Проверить, что файл task_1.pas действительно появился в папке.
В процессе редактирования текста программы файл рекомендуется периодически сохранять, выбирая меню File->Save или нажимая функциональную клавишу F2.
Для открытия существующего файла использовать команду File->Open (клавиша F3).
После записи текста программы необходимо вызвать компилятор для проверки синтаксических ошибок и генерации объектного кода. Вызов компилятора происходит при выборе пункта меню Compile-> Compile или одновременном нажатии клавиш Alt+F9.
Если все синтаксические ошибки в тексте программы исправлены и компиляция завершилась успешно, программу следует запустить на выполнение, выбрав пункт меню Run->Run или одновременном нажатии клавиш Ctrl+F9.
Если в программе предусмотрен ввод/вывод данных, то при запуске появится окно программы с черным фоном, в которое будет производится вывод. По завершении программы для просмотра данного окна необходимо выбрать пункт меню Debug->User screen или воспользоваться одновременным нажатием клавиш Alt+F5.
Для отладки программы (поиска семантических ошибок) предназначены особые режимы запуска программы, доступные по следующим пунктам меню:
Run->Step over – выполнение программы по шагам,
Run->Go to cursor – программа выполняется до зафиксированного положения курсора в тексте и останавливается, дальше можно выбрать ее пошаговое выполнение
Для просмотра текущих значений переменных при выполнении программы по шагам можно воспользоваться пунктом меню Debug->Evaluate/modify или одновременным нажатием клавиш Ctrl+F4. В этом режиме следует указать имена переменных, значения которых подлежат проверки, и наблюдать их изменения при пошаговом выполнении программы.
Для завершения работы в системе программирования необходимо выбрать пункт меню File->Exit или сочетание клавиш Alt+x.
Результат выполнения этапа: Вы познакомились со структурой рабочего окна командной среды программирования TurboPascal 7.0 и важнейшими пунктами меню, позволяющими создать текст программы, провести процесс компиляции, запустить на выполнение, просмотреть результаты в различных режимах и сохранить программу в виде файла.
Этап 2.2. Программы обработки числовых данных.
Вам предстоит, действуя по шаблонам и используя разработанные ранее алгоритмы, создать простейшие программы обработки числовых данных и сохранить их в виде файлов int_1.pas, int_2.pas и т.д. для простых чисел, arr_1.pas, arr_2.pas и т.д. для массивов.
Переписать из листинга № 1 и отладить программу суммирования двух целых чисел.
Листинг 1. Ввести два целых числа. Вычислить их сумму и вывести результат на экран.
Program int_1;
Uses CRT;
Var a, b, c: integer;
BEGIN
ClrScr;
Write('Введите два целых числа:');
Readln(a, b);
c := a + b;
write('Результат сложения чисел ', a, ' и ', b, ': ', c);
END.
По аналогии с предыдущим заданием, используя оператор ветвления, написать и отладить программы:
ввести два целых числа. Вывести их на экран в порядке возрастания;
ввести два целых числа. Найти их разницу и результат вывести на экран;
ввести два целых числа. К максимальному из них прибавить 10 и результат вывести на экран;
ввести два целых числа. Минимальное из них удвоить и результат вывести на экран.
Переписать из листинга № 2 и отладить программу обработки массива целых чисел.
Листинг 2. Ввести одномерный массив целых чисел. Преобразовать его, заменив положительные элементы 1, отрицательные - 0. Результат вывести на экран.
Program arr_1;
Uses CRT;
Const n=10;
Var A: array[1..n] of integer;
i: byte;
BEGIN
ClrScr;
Write ('Введите элементы массива: ');
for i:=1 to n do
readln (A[i]);
for i:=1 to n do
if A[i] > 0 then
A[i]:=1
else
A[i]:=0;
write (измененный массив = ');
for i:=1 to n do
write (A[i],' ');
END.
По аналогии с предыдущим заданием, используя оператор цикла, написать и отладить программы:
ввести одномерный массив целых чисел, определить сумму его элементов, результат вывести на экран;
ввести одномерный массив целых чисел, определить сумму его отрицательных элементов, результат вывести на экран;
ввести одномерный массив целых чисел, определить его максимальный элемент, результат вывести на экран
ввести одномерный массив целых чисел, определить сумму его максимального и минимального элементов, результат вывести на экран
ввести одномерный массив целых чисел, из положительных элементов массива сформировать новый массив и вывести его на экран.
ввести одномерный массив целых чисел, определить номер первого отрицательного элемента, результат вывести на экран (использовать команду Break для прерывания цикла).
Переписать из листинга № 3 и отладить программу обработки двумерного массива целых чисел.
Листинг 3. Ввести двумерный массив целых чисел, найти максимальный элемент, результат вывести на экран
Program arr_2;
Uses CRT;
Const n = 4, m = 5;
Var A: array[1..n, 1..m] of integer;
i, j, max: integer;
BEGIN
ClrScr;
Write('Введите элементы двумерного массива размерности ',n, ' x ',m, ': ');
for i:=1 to n do
for j:=1 to m do
ReadLn (A[i,j]);
max := A[1,1];
for i:=1 to n do
for j:=1 to m do
if A[i,j] > max then
max := A[i,j];
Write('Максимальный элемент двумерного массива: ', max);
END.
По аналогии с предыдущим заданием, используя вложенные операторы цикла, написать и отладить программы:
ввести двумерный массив целых чисел; на его основе создать новый одномерный массив, каждый элемент которого - максимальное отрицательное число в каждой строке исходного массива (см. пример на рис. 2);
13 SHAPE \* MERGEFORMAT 1415
Рис. 2 поиск максимального отрицательного числа в двумерном массиве
ввести двумерный массив целых чисел; на его основе создать новый одномерный массив, каждый элемент которого - индекс наибольшего числа в каждой строке исходного массива (рис. 3);
13 SHAPE \* MERGEFORMAT 1415
Рис. 3. Поиск координаты максимального элемента в строках двумерного массива
Результат выполнения этапа: Вы научились записывать разработанные ранее алгоритмы обработки целых чисел в виде программ на алгоритмическом языке Pascal. Вы получили представление о структуре программы и назначении ее разделов. Вы узнали и проверили на практике, какими операторами языка записываются базовые алгоритмические структуры ветвления и цикла и как работает оператор присваивания. Вы научились обрабатывать одномерные и двумерные числовые массивы с помощью вложенных циклов.
Этап 2.3. Программы обработки символьных данных.
Вам предстоит, действуя по шаблонам, создать простейшие программы обработки символьных данных и сохранить их в виде файлов char_1.pas, char_2.pas.
Переписать из листинга № 4 и отладить программу вывода на экран букв латинского алфавита, расположив их в строку.
Листинг 4. Вывести на экран символы латинского алфавита, расположив их в строку, используя цикл For to
Program char_1;
USES CRT;
VAR i: char;
BEGIN
CLRSCR;
Write('Изучаем алфавит: ')
for i:= 'A' to 'Z' do
Write (i);
Writeln;
END.
По аналогии с предыдущим заданием написать и отладить программу вывода на экран символов латинского алфавита, расположив их в строку в обратном порядке, используя оператор цикла For downto
Переписать из листинга № 5 и отладить программу вывода на экран букв латинского алфавита, расположив их в строку в особом порядке.
Листинг 5. Вывести на экран символы латинского алфавита, расположив их в строку в следующем порядке: ABBCCCDDDD ZZZ Z
Program char_2;
USES CRT;
VAR i: char;
k, j: integer;
BEGIN
CLRSCR;
k:=1;
for i:= 'A' to 'Z' do
BEGIN
For j:=1 to k do
Write (i);
k:=k+1;
END;
END.
По аналогии с предыдущим заданием, используя оператор цикла, написать и отладить программы:
вывести в одну строку символы в следующем порядке: Z Y Y X X XA AA;
вывести символы в следующем порядке (число строк равно числу символов в алфавите):
A B C D Z
A B C D Z
A B C D Z

A B C D Z
вывести треугольник, состоящий из букв латинского алфавита, используя функцию SUCC(char), которая возвращает следующий символ после char:
A B C Z
B C Z
C Z
Z
Z
вывести треугольник другой конфигурации:
A B C Z
B C Z
C Z
Z
Z
Результат выполнения этапа: Вы ознакомились с приемами обработки символьных данных на примере латинского алфавита, узнали новые возможности организации цикла For, применили функцию-генератор следующего символа. Вы получили навыки форматированного вывода символов на экран.
Этап 2.4. Программы обработки строковых данных
Вам предстоит, действуя по шаблонам, создать простейшие программы обработки строковых (текстовых) данных и сохранить их в виде файлов str_1.pas, str_2.pas.
Переписать из листинга № 6 и отладить программу ввода и редактирования текста.
Листинг 6. Ввести текст с клавиатуры. Вывести его на экран до первого знака препинания.
Program str_1;
USES CRT;
VAR str: string;
k, i : integer;
m: set of char;
BEGIN
CLRSCR;
m:= ['.', ',', '!', '? ', ':', ';', '-'];
writeln ('Введите текст');
readln (str);
k:=length (str);
writeln ('Печатаем текст до первого знака препинания:');
for i:=1 to k do
If not (str[i] in m) then
write (str[i])
else
break;
END.
По аналогии с предыдущим заданием написать и отладить программы:
ввести текст с клавиатуры, вывести его на экран без знаков препинания;
ввести текст с клавиатуры, вывести его на экран без гласных букв, определив их первоначальное количество в тексте.
Переписать из листинга № 7 и отладить программу работы с текстовым файлом.
Листинг 7. Создать текстовый файл File1.txt, заполнить его текстом. Прочитать текст из файла и вывести его на экран.
Program file_1
USES CRT;
VAR F1: text;
str: string;
BEGIN
CLRSCR;
Assign (F1, 'File1.txt');
Reset (f1);
Read (f1, str);
Writeln('В файле записан текст: ');
Writeln (str);
Close(f1);
END.
По аналогии с предыдущим заданием написать и отладить программы:
создать текстовый файл File1.txt, записать в него текст «Hello, friend!». Прочитать текст из файла. Преобразовать его в вид: «Hello, my friend!». Использовать процедуру INSERT(Word:string, String:string, pos:integer), где Word – вставляемый текст, String – исходный текст, pos – позиция для вставки) и функцию POS(word:string, str:string):integer, где Word – символ, позицию которого в строке надо найти, str – строка, в которой ведется поиск.
создать текстовый файл File2.txt, записать в нем текст. Прочитать текст из файла. Ввести с клавиатуры строку текста. Вывести на экран объединение текста и введенной строки. Использовать функцию CONCAT(str1:string, str2:string):string – возвращает объединение строк.
создать текстовый файл File3.txt, записать в нем текст. Удалить из текста второе слово. Использовать процедуру DELETE(str:string, i:integer, j:integer), где str – строка, в которой надо произвести удаление, i – позиция, с которой начать удаление, j – количество удаляемых символов.
создать текстовый файл File4.txt, записать в нем текст. Прочитать текст из файла, вывести его на экран, разбив на слова по 5 символов.
создать текстовый файл File5.txt, записать в нем текст. Изменить текст в файле, разбив его на слова по 5 символов.
Результат выполнения этапа: Вы ознакомились с приемами обработки текстовых данных, вводимых с клавиатуры и из файла, поработали со специфическим типом данных «множество», освоили последовательность работы с файлом, применили функции и процедуры модификации текстовых данных.
Форма представления результатов лабораторной работы: файлы.
Лабораторная работа № 3
Технология структурного программирования
Цель работы – исследовать механизм вызова подпрограмм из основной программы и овладеть навыками описания и использования процедур и функций как разновидностей подпрограмм.
Вам предстоит, действуя по шаблону, создать программы вызова подпрограмм, передачи им фактических параметров и сохранить их в виде файлов CallPr_1.pas, CallPr_2.pas.
Переписать из листинга № 1 и отладить программу ввода, модификации и вывода числового массива.
Листинг 1. Программа ввода, модификации и вывода числового массива.
Program CallPr_1;
Uses CRT;
Const n = 2; m = 4; k = 5;
var
A: array[1..n] of Integer;
B: array[1..m] of Integer;
C: array[1..k] of Integer;
{Раздел описания процедур. Процедура ввода массива}
Procedure Inp (Var Mas: array of Integer; size: Byte);
Var i: byte;
begin
WriteLn (Введите ', size, ' целых чисел');
for i:=1 to size do
Read (Mas[i]);
end;
{Процедура модификации массива}
Procedure Replace(Var Mas: array of Integer; size: Byte);
Var i: byte;
begin
for i:=1 to size do
if Mas[i]>0 then
Mas[i]:=1
else
Mas[i]:=0;
end;
{Процедура вывода массива}
Procedure Outp (Var Mas: array of Integer; size: Byte);
Var i: byte;
begin
Write('Результат преобразования массива: ');
for i:=1 to size do
Write(Mas[i]:2:0);
WriteLn(' ');
end;
{Главная программа}
begin
ClrScr;
Inp (A, n);
Replace (A, n);
Outp (A, n);
Inp (B, m);
Replace (B, m);
Outp (B, m);
Inp (C, k);
Replace (C, k);
Outp (C, k);
end.
Переписать из листинга № 2 и отладить программу нахождения максимального элемента в числовом массиве.
Листинг 2. Программа поиска максимального элемента в числовом массиве.
Program CallPr_2;
Uses CRT;
Const n = 2; m = 4; k = 5;
var
A: array[1..n] of Integer;
B: array[1..m] of Integer;
C: array[1..k] of Integer;
Max:Integer;
{Раздел описания процедур. Процедура ввода массива}
Procedure Inp (Var Mas: array of Integer; size: Byte);
Var i: byte;
begin
WriteLn ('Введите ', size, ' целых чисел');
for i:=1 to size do
Read (Mas[i]);
end;
{Процедура поиска максимального элемента массива}
Function Findmax(Var Mas: array of Integer; size: Byte):Integer;
Var i: byte;
maxin: Integer;
begin
maxin := Mas[1];
for i:=2 to size do
if Mas[i]>maxin then
maxin := Mas[i];
Findmax := maxin;
end;
{Главная программа}
begin
ClrScr;
Inp (A, n);
Max:= Findmax (A, n);
Writeln ('Максимальный элемент массива: ', max);
Inp (B, m);
Max:= Findmax (B, m);
Writeln ('Максимальный элемент массива: ', max);
Inp (C, k);
Max:= Findmax (C, k);
Writeln ('Максимальный элемент массива: ', max);
end.

По аналогии с предыдущим заданием написать и отладить программы:
вычисления суммы отрицательных элементов в каждом из трех массивов;
вычисления разницы максимального и минимального элементов в каждом из трех массивов,
вычисления среднего арифметического элементов в каждом из трех массивов.
Результат выполнения лабораторной работы: Вы ознакомились с приемами структурного программирования как разработкой небольших логически законченных подпрограмм, работой которых управляет главная программа. Такой подход позволяет создавать библиотеки подпрограмм для их последующего многократного использования в различных приложениях.
Форма представления результатов лабораторной работы: папка с файлами.
Лабораторная работа № 4
Технология визуального программирования
Цель работы – овладеть навыками работы в визуальной среде программирования при создании приложения для операционной системы Windows, освоить приемы обработки некорректных действий пользователя при работе в приложением.
Запустить MS Visual Basic 6.0
Выбрать вид нового файла Standart.exe.
Разместить на форме элементы управления и определить значения свойства Name каждого элемента формы в соответствии рис. 4.
13 SHAPE \* MERGEFORMAT 1415

Рис. 4 Дизайн формы для проекта «АРМ экономиста»


Добавить к форме программный код обработки событий в соответствии с листингом 1.
Листинг 1. Коды приложения «АРМ экономиста»
Private Sub Command1_Click()
If Text1 = "" Then
MsgBox ("Введите сумму доходов")
Text1.SetFocus
GoTo m1
End If
If Text2 = "" Then
MsgBox ("Введите стоимость покупных товаров")
Text2.SetFocus
GoTo m1
End If
If Text4 = "" Then
MsgBox ("Введите коммерческие расходы")
Text4.SetFocus
GoTo m1
End If
If Text6 = "" Then
MsgBox ("Введите ставку налога на прибыль")
Text6.SetFocus
GoTo m1
End If
Text3 = Text1 - Text2
Text5 = Text3 - Text4
Text7 = Text5 * Text6 / 100
If Option1.Value = True Then
Text10 = Text5 * Text8 / 100
Text11 = Text5 * Text9 / 100
End If
m1: End Sub

Private Sub Command2_Click()
Text
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
MsgBox ("Введите ставку налога на прибыль")
Text8.Enabled = True
Text6.SetFocus
GoTo m2
End If
If Text8 = "" Then
MsgBox ("Введите ставку налога на прибыль в ФБ")
Text8.Enabled = True
Text8.SetFocus
GoTo m2
End If
m2: End Sub

Private Sub Option2_Click()
If Option3.Value = True Then
Option3.Value = False
End If
If Text12 = "" Then
MsgBox ("Введите имя файла")
Text12.SetFocus
End If
End Sub

Private Sub Option3_Click()
If Option2.Value = True Then
Option2.Value = False
End If
If Text12 = "" Then
MsgBox ("Введите имя файла")
Text12.SetFocus
End If
End Sub

Private Sub Text8_Change()
If Text9 = "" Then
Text9 = Text6 - Text8
End If
End Sub

Коды для Modulel
(General) (Declaration)
Type fil
d As String
t As String
k As String
s As String
sf As String
End Type
Dim w As fil
Протестировать приложение, моделируя различные действия пользователя, особенно обратить внимание на обработку некорректных ситуаций.
Результат выполнения лабораторной работы: Вы ознакомились с технологией визуального программирования при создании приложений для графической операционной системы. Научились создавать дизайн экранной формы приложения, определять значения свойств объектов формы, связывать с ними программные коды обработки событий, инициируемых пользователем. Вы получили навыки тестирования приложений с акцентом на обработку возможных некорректных действий пользователя.
Форма представления результатов лабораторной работы: папка с файлами проекта.
Лабораторная работа № 5
Технология объектно-ориентированного программирования
Цель работы – познакомиться на практике с основными концепциями объектно-ориентированного программирования и исследовать типовые операторы языка С++ (арифметические, логические, операторы управления ходом программы, операторы ввода-вывода), получить навыки работы со специфическими типами данных С++ (классы, объекты). Проверить области действия внутренних и внешних свойств и методов объектов.
Этап 5.1. Исследование типовых операторов языка С++
Вам предстоит, действуя по шаблонам и используя разработанные ранее алгоритмы, создать простейшие программы обработки числовых данных и сохранить их в виде файлов int_1.cpp, int_2.cpp и т.д. для простых чисел, arr_1.cpp, arr_2.cpp и т.д. для массивов.
Переписать из листинга № 1 и отладить программу суммирования двух целых чисел.
Листинг 1. Ввести два целых числа. Вычислить их сумму и вывести результат на экран.
#include
#include
void main (void)
{
int a,b,c;

cout<<"Введите два целых числа" < cin>>a>>b;
c=a+b;
cout<<"Результат сложения: "<}
По аналогии с предыдущим заданием написать и отладить программы:
ввести два целых числа. Найти их разницу и результат вывести на экран;
ввести два целых числа. Минимальное из них удвоить и результат вывести на экран.
Придумать 2 аналогичные задачи, записать решение их на языке С++ и отладить программу.
Переписать из листинга № 2 и отладить программу обработки массива целых чисел.
Листинг 2. Ввести одномерный массив целых чисел. Преобразовать его, заменив положительные элементы 1, отрицательные - 0. Результат вывести на экран.
#include ;
void main()
{
int A[4];
int i;
cout<<"Введите массив целых чисел" <for (i=0; i<=3; i++) //ввод массива
cin >> A[i];
for (i=0; i<=3; i++)
if (A[i]>0) A[i]=1;
else
A[i]=0;
cout<<"Результат преобразования массива" <for (i=0; i<=3; i++) //вывод результата
cout << A[i] << "\n";
}
Придумать 2 аналогичные задачи, записать алгоритм их решения на языке С++ и отладить программу.
Этап 5.2. Исследование механизма работы с подпрограммами
Переписать из листинга № 3 текст программы, исследовать ее работу, объяснить результат.
Листинг 3.
#include
void show(void)
{
сout<<"Функция show"<}
void main(void)
{
сout<<"Вызов функции show"<show();
cout<<"Boзврат в основную npoграмму"<}
Переписать из листинга № 4 текст программы, исследовать ее работу, объяснить результат.
Листинг 4.
#include
void max (float x, float у) //х, у - формальные параметры
{
if (x>y) cout<"<else cout<"<}
void main(void)
{
float a,b;
cin>>a>>b;
max(a,b); //a, b фактические параметры
max (20,10); //20, 10 фактические параметры-значения
max (2.71,3.14); //2.71, 3.14 - фактические параметры-значения
}
Переписать из листинга № 5 текст программы, исследовать ее работу, объяснить результат.
Листинг 5.
#include
float max(float x,float y)
{
float result;
if (x>y) result=x;
else result=y;
return (result);
}
void main(void)
{
float a,b;
cin>>a>>b;
соut<<"Наибольшее из двух чисел" <соut<<"Наибольшее из двух чисел 2.71 и 3.14: "<< max(2.71, 3.14)<}

Этап 5.3. Исследование сложных типов данных
Тип данных структура (struct) состоит из фиксированного числа элементов разных типов. Переписать из листинга № 6 текст программы, иллюстрирующий механизм доступа к элементам структуры, исследовать ее работу, объяснить результат. Придумать пример по аналогии.
Листинг 6. Работа с элементами структуры
#include
#include
struct date //описание структуры
{
int day;
char month[9] ;
int year;
}d; //объявление переменной d
void show_date(date d) //функция вывода даты
{
соut<<"Число: "<соut<<"Месяц: "<соut<<"Год: "<}
void main(void)
{
d.day=2;
strcpy(d.month,"август"); //копировать название месяца в строку
d.year=1953;
show date(d); //обращение к функции вывода даты
}

Этап 5.4. Исследование операторов работы с файлом
Переписать из листинга № 7 программу, иллюстрирующую механизм создания текстового файла и записи в него текста, исследовать ее работу, объяснить результат. Придумать пример по аналогии.
Листинг 7. Создать файл и записать в него текст
#include
void main(void)
{
ofstream out_file("filel.txt") ; //открытие файла
out_file<<"3aпись в файл. "<out_fi1е<<"Режим создания."<out_file.close(); //закрытие файла
};
Переписать из листинга № 8 программу, иллюстрирующую механизм добавления текста в существующий файл, исследовать ее работу, объяснить результат. Придумать пример по аналогии.
Листинг 8. Добавить текст в файл
#include
void main(void)
{
ofstream out_file ("filel.txt",ios::app);
out_file<<"Peжим добавления "<out_file.close();
}
Переписать из листинга № 9 программу, иллюстрирующую механизм ввода трех первых слов из строки текста, записанного в файле, исследовать ее работу, объяснить результат. Придумать пример по аналогии.
Листинг 9. Ввод трех первых слов текста из файла
#include
#include
void main(void)
{
char a[64],b[64],c[64];
ifstream in_file("filel.txt");
in_file>>a>>b>>c;
cout«"Первая строка файла filel.txt: "<in_file.close();
}
Переписать из листинга № 10 программу, иллюстрирующую механизм ввода трех первых строк текста, записанного в файле, исследовать ее работу, объяснить результат. Придумать пример по аналогии.
Листинг 10. Ввод первых трех строк текста из файла
#include
#include
void main(void)
{
char a[64],b[64],c[64];
ifstream in_file("filel.txt");
in_file.getline(a,sizeof(a));
in_file,getline(b,sizeof(b));
in_file.getline(c,sizeof(c));
cout<cout<cout<in_file.close();
}
Переписать из листинга № 11 программу, иллюстрирующую механизм ввода текста, записанного в файле, исследовать ее работу, объяснить результат. Придумать пример по аналогии.
Листинг 11. Ввод текста из файла
#include
#include
void main(void)
{
char a[64];
if stream in_file("filel.txt");
while(in_file.eof())
{
in_file.getline(a,sizeof(a));
cout<}
in_file.close();
}
Переписать из листинга № 12 и 13 программы, иллюстрирующие механизмы записи массива в файл и чтение его из файла, исследовать их работу, объяснить результат. Придумать пример по аналогии.
Листинг 12. Запись массива в файл
#include
void main(void)
{
int i,x[3]={10,20,30};
ofstream out_file("file2.dat");
for(i=0;i<3;i++)
out_file.write((char *) &x[i],sizeof(x [i]));
out_file.close();
}
Листинг 13. Чтение массива из файла с выводом на экран
#include
#include
void main(void)
{
int i, x[3];
ifstream in_file("file2.dat");
for(i=0;i<3;i++)
{
in_file.read((char *) &x[i] ,sizeof(x[i]));
cout<}
in_file.close();
}
Переписать из листинга № 14 и 15 программы, иллюстрирующие механизмы записи структуры в файл и чтение ее из файла, исследовать их работу, объяснить результат. Придумать пример по аналогии.
Листинг 14. Запись структуры в файл
#include
void main(void)
{
struct date
{
int day;
char month[9];
int year;
}d={25,"ноября", 1958};
ofstream out_file("file3.dat") ;
out_file.write((char *) &d,sizeof(date));
out_file.close();
}
Листинг 15. Чтение структуры из файла с выводом на экран
#include
#include
void main(void)
{
struct date
{
int day;
char month[9];
int year;
}d;
ifstream in_file("file3.dat");
in_file.read((char *) &d,sizeof(date));
cout<in_file.close();
}
Этап 5.5. Исследование операций с объектами и классами
Переписать из листинга № 16 программу, иллюстрирующую создание и инициализацию объектов класса, исследовать ее работу, объяснить результат. Придумать пример по аналогии.
Листинг 16. Создать объекты класса, присвоить начальные значения их свойствам. Обеспечить к ним доступ извне.
#include
#include
class date
{
public: char name[64];
int day;
char month[9];
int year;
void show_birthday(void)
{
соut<<"Имя: "<соut<<"День рождения :"<};
};

void main(void)
{
date father,mother,daughte; //объявление объектов
strcpy(father.name,"Юрий");
father.day=25;
strcpy(father.month,"ноября");
father.year=1958;
strcpy(mother.name,"Лидия");
mother.day=14;
strcpy(mother.month,"ноября");
mother.year=1956;
strcpy(daughte.name,"Юлия");
daughte.day=4;
strcpy(daughte.month,"мая");
daughte.year=l982;
father.show_birthday(); //вывод информации
mother.show_birthday();
daughte.show birthday();
}
Переписать из листинга № 17 программу, иллюстрирующую концепцию инкапсуляции данных как сокрытие части свойств путем объявления элементов класса частными (private), исследовать ее работу, объяснить результат. Придумать пример по аналогии.
Листинг 17. Пример инкапсуляции
#include
#include
class zp
{
private: //объявление частных элементов
char name[64];
float sal;
public: //объявление общих элементов
void in_dat(char *,float); //прототипы функций
void show_sal(void);
float change_sal(float);

void zp::in_dat(char *new_name,float old_sal) //определение функции
{
strcpy(name,new name);
sal=old_sal;
}

void zp::show_sal(void) //определение функции
{
cout<<"Оклад "<}

float zp::change_sal(float new_sal) //определение функции
{
if(new_sal<10000)
{
cout<<"Новый оклад "<return (0);
}
sal=new_sal;
return(1);
}

void main(void)
{
float new_sal;
zp father; //объявление объекта father
father.in_dat("Иванов И.А.",20000.0) ;
cout<<"Старый ";
fatner.show_sal() ;
сout<<"Введите новый оклад:";
cin>>new_sal;
if(father.change_sal(new_sal)!=0)
{
Сout<<"Новый ";
father.show sal();
}
}
Главной программе (main) известны лишь методы (in_dat, show_sal, change_sal), позволяющие работать с объектом (father). Свойства (name, sal) и способы их обработки скрыты от главной программы внутри объектов.
Результат выполнения лабораторной работы: Вы ознакомились с основами технологии объектно-ориентированного программирования и языка С++: типовыми действиями с простыми и сложными типами данных, операторами ввода-вывода. Вы получили представление об особенностях особого типа данных – класс как совокупность свойств и методов (функций), научились описывать объекты данного класса, инициализировать их свойства и использовать методы объектов для обеспечения доступа к свойствам объектов.
Форма представления результатов лабораторной работы: папка с файлами.


Основы программирования на языке Turbo Pascal
Структура программы представлена на рис. 3.8.

13 SHAPE \* MERGEFORMAT 1415

Рис. 3.8 Структура программы на языке TurboPascal


Классификация данных представлена на рис. 3.9
13 SHAPE \* MERGEFORMAT 1415

Рис. 3.9 Классификация типов данных в языке Turbo Pascal

Таблица 3.20 Тип данных целые числа
Тип
Диапазон
Формат
Размер в байтах

Shortint
-128 127
Знаковый
1

Integer
-32768 ... 32767
Знаковый
2

Longint
-2147483648 2147483647
Знаковый
4

Byte
0 255
Беззнаковый
1

Word
0 65535
Беззнаковый
2

Синтаксис описания целых переменных

VAR
X: integer;
i: byte;


Таблица 3.21 Тип данных вещественные числа
Тип
Диапазон
Число значащих цифр
Размер в байтах

Real
2.9*10-39 1.7*1038
11-12
6

Single
1.5*10-45 3.4*1038
7-8
4

Double
5.0*10-324 1.7*10308
15-16
8

Extended
3.4*10-4932 1.1*104932
19-20
10

Comp
-263+1263-1
19-20
8

Синтаксис описания вещественных переменных
VAR
X: real;
Y: single;


Таблица 3.22 Простые типы данных
Тип
Наименование
Размер в байтах
Значения
Синтаксис описания

Логический
Boolean
1
True, False
VAR
flag: Boolean;

Символьный
Char
1
ASCII - символы
VAR
letter: Char;

Перечисляемый
<имя типа>
-
Набор идентификаторов
TYPE
Season = («Зима», «Весна», «Лето», «Осень»);


Диапазон
<имя типа>
-
MinMax
TYPE
Temperature = (36..39);



Таблица 3.23 Структурированные типы данных
Тип
Наимено-вание
Назначение
Синтаксис описания

Массив
Array
Содержит фиксированное количество упорядоченных однотипных элементов, снабженных индексами. Бывает одномерным и многомерным.
TYPE
Matrix = array[1..3, 1..2] of Shortint;


Строка
String
Является разновидностью массива символов. Содержит произвольный текст.
VAR
Document: string[1200];
January: string[10] = Январь’;

Запись
Record
Включает набор полей разного типа.
TYPE
Data = record {тип – дата рождения}
Year: Integer;
Month: 1 .. 12;
Day: 1 .. 31;
end;

Множество
Set
Множество возможных сочетаний объектов исходного множества.
TYPE
Alfa = set of A’ .. Z’;
Count = set of (Plus, Minus, Mult, Divid);
Ten = set of 0 .. 9;
Number = set of 0’ .. 9’;


Файл
File
Последовательность элементов одного типа, расположенных на внешнем устройстве. Число элементов в файле не объявляется.
TYPE
Number = file of Integer;
Symbol = file of A’ .. Z’;



Таблица 3.24 Процедурные типы данных
Тип
Наимено-вание
Назначение
Синтаксис описания

Процедура
Procedure
Предназначена для выполнения законченной последовательности действий.
Procedure <имя процедуры> (<список формальных параметров>);

PROCEDURE Name_1 (VAR Symbol: Char; K: Integer);

Функция
Function
Предназначена для вычисления параметра.
FUNCTION Factorial(N: Byte): Longint;

X:=Factorial(5); {вызов функции}


Конструирование выражений
Выражение – это синтаксическая единица языка, определяющая способ вычисления некоторого значения. Выражения формируются из:
констант,
переменных,
функций,
знаков операций,
круглых скобок.
Константы
Константами называются параметры программы, значения которых не меняются в процессе ее выполнения.
CONST
<имя константы 1> = <значение 1>;
<имя константы 2> = <значение 2>;
<имя константы N> = <значение N>;
Переменные
Переменными называются параметры программы, значения которых могут изменяться в процессе ее выполнения. Все переменные должны быть определены с указанием их типов:
в разделе объявления переменных программы,
в разделе объявления переменных подпрограммы,
в разделе объявления переменных модуля,
в заголовке подпрограммы.
VAR
<список переменных 1>: <тип 1>;
<список переменных 2>: <тип 2>;
<список переменных N>: <тип N>;

Стандартные функции
Таблица 3.25 Стандартные арифметические функции
Функция
Назначение
Тип результата

Abs (X)
Абсолютное значение аргумента
Совпадает с типом X

Arctan (X)
Арктангенс аргумента
Вещественный

Cos (X)
Косинус аргумента
Вещественный

Exp (X)
Е в степени х
Вещественный

Frac (X)
Дробная часть числа
Вещественный

Int (X)
Целая часть числа
Вещественный

Ln (X)
Натуральный логарифм
Вещественный

Pi
Значение величины
Pi=3.1415926535897932385
Вещественный

Sin (X)
Синус аргумента
Вещественный

Sqr (X)
Квадрат аргумента
Совпадает с типом X

Sqrt (X)
Квадратный корень аргумента
Вещественный

Таблица 3.26 Функции преобразования типов
Функция
Назначение
Аргумент
Тип результата

Chr (X)
Преобразование ASCII-кода в символ
Целый тип в диапазоне (0..255)
Символ, соответствующий коду

High (X)
Получение максимального значения величины
Параметр или идентификатор
порядкового типа,
типа-массива,
типа-строки,
открытый массив
Макс. значение величины
Макс. значение индекса
Объявленный размер строки
Кол-во элементов массива минус 1

Low (X)
Получение минимального значения величины



Ord (X)
Получение индекса любого порядкового типа



Round (X)
Округление вещественного числа до ближайшего целого



Trunc (X)
Получение целой части вещественного числа




Таблица 3.27 Функции для величин порядкового типа
Функция
Назначение
Аргумент
Тип результата

Odd (X)
Проверка величины X на нечетность



Pred (X)
Определение предыдущего значения X



Succ (X)
Определение последующего значения X




Операции
арифметические;
логические;
операции с битами информации;
операции со строками;
операции отношения;
адресная операция @.
Арифметические операции (применимы только к величинам целых и вещественных типов).
Таблица 3.28 Арифметические операции
Знак
Операция
Типы операндов
Тип результата

+
Сложение
Целые
Хотя бы один вещественный
Целый
Вещественный

-
Вычитание
Целые
Хотя бы один вещественный
Целый
Вещественный

*
Умножение
Целые
Хотя бы один вещественный
Целый
Вещественный

/
Деление
Целые или вещественные
Вещественный

Div
Деление целых чисел
Целые
Целый

Mod
Остаток от деления целых чисел
Целые
Целый


Таблица 3.29 Операции отношений
Знак
Операция отношения

=
Равно

<>
Не равно

<
Меньше

<=
Меньше или равно

>=
Больше или равно

>
Больше


Операторы управления последовательностью программы
Операторы языка описывают алгоритмические действия, которые необходимо выполнить для решения задачи. Тело программы – последовательность операторов, разделенных точкой с запятой. Классификация операторов представлена на рис. 3.10
13 SHAPE \* MERGEFORMAT 1415
Рис. 3.10 Операторы управления последовательностью выполнения программы


Таблица 3.30 Структурированные операторы
Оператор
Наимено-вание
Назначение
Синтаксис описания

Составной
BEGIN-END
Объединяет последовательность операторов в логический блок (логические скобки)
BEGIN
<оператор 1>;
<оператор 2>;
<оператор N>
END;

Условный
IF
Реализует алгоритмическую конструкцию РАЗВИЛКА и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия
IF s THEN a
ELSE b; {полная развилка}

IF s THEN a; {укороченная развилка}


Условный
CASE
Реализует выбор варианта из любого количества вариантов
CASE s OF
C1: Instruction 1;
C2: Instruction 2;
CN: Instruction N;
ELSE Instruction
END;

Оператор цикла
REPEAT
Выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход – при истинности логического выражения
REPEAT
Instruction 1;
Instruction 2;

Instruction N
UNTIL s;


Оператор цикла
WHILE
Организует выполнение одного оператора неизвестное заранее число раз.
Выход – ложность логического выражения, которое проверяется в начале каждой итерации. Тело цикла может не выполняться ни разу.
WHILE s DO
Instruction;


Оператор цикла
FOR
Организует выполнение одного оператора заранее известное число раз.
FOR Param:=Start TO Finish DO Instruction;{если Start
FOR Param:=Start DOWNTO Finish DO Instruction; {если Start>Finish}






Таблица 3.31 Операторы ввода-вывода
Оператор
Наимено-вание
Назначение
Синтаксис описания

Ввод с клавиатуры
READ
Ввод числа с клавиатуры и сохранение его в x
Var x: Integer;
Read(x);

Вывод на экран
WRITE
Вывод содержимого переменной x на экран
Var x: Integer;
x:= 25;
Write (Значение переменной x=’, x)

Ввод (чтение) данных из файла в память
READ
Из файла “File.txt” вводятся три первые числа и запоминаются в переменных a, b, c
Var f:Text;
a, b, c: integer;
ASSIGN (f, “file.txt”);
RESET(f);
READ (f, a, b, c);
CLOSE (f);

Вывод (добавление) данных из памяти в файл
WRITE
В существующий файл “File.txt” добавляется “текст”
Var f:Text;
a, b, c: integer;
Assign (f, “File.txt”);
Append(f);
WriteLn (f, “текст”);
CLOSE (f);

Вывод (перезапись) данных из памяти в файл
WRITE
Создается файл “File.txt” и в него записывается “текст”. Если файл существовал, его содержимое заменяется на “текст”
Var f:Text;
a, b, c: integer;
Assign (f, “File.txt”);
Rewrite (f);
WriteLn (f, “текст”);
CLOSE (f);

Основы программирования на языке С++
Структура программы на языке С++ представлена на рис. 3.22
13 SHAPE \* MERGEFORMAT 1415

Рис. 3.22 Структура программы на языке С++

Классификация данных языка С++
Таблица 3.34 Базовые типы данных
Тип
Диапазон
Формат
Размер в байтах

Числовые типы данных

void

Пустой


unsigned
065535
Беззнаковый
2

int
-32768 ... 32767
Знаковый
2

long
-2147483648 2147483647
Знаковый длинный
4

float
-3,4E-383,4E+38
Знаковый с плавающей точкой
4

double
-1,7E-3081,7E+308
Знаковый с плавающей точкой двойной длины
8

Синтаксис описания числовых переменных

int i;
float x,y,z;

Символьный тип данных

char
-128127
Коды символов
1

Синтаксис описания символьных переменных
char c; //символ
char s[64]; // строка символов


Классификация данных в языке С++ представлена на рис. 3.23

13 SHAPE \* MERGEFORMAT 1415

Рис. 3.23 Классификация типов данных в языке С++
Таблица 3.35 Структурированные типы данных
Тип
Наимено-вание
Назначение
Синтаксис описания

Массив

Содержит фиксированное количество упорядоченных однотипных элементов, снабженных индексами. Бывает одномерным и многомерным.
int a[100] /*одномерный массив
/*целых чисел
float d[40][5] /*двумерный массив
/*вещественных чисел

Структу-ра
struct
Содержит фиксированное число элементов разного типа
struct имя_структуры
{
тип1 имя_элемента1;
...
TипN имя_элементаN;
}имя_переменной_типа_структуры;
ПРИМЕР
struct date
{
int day;
char month[9];
int year;
}d;

Объединение
union
Подобно структуре, но в каждый момент времени хранит значение только одного элемента
union имя_объединения
{
тип1 имя_элемента1;
...
TипN имя_элементаN;
}имя_переменной_типа_объединения;
ПРИМЕР
union time
{
int hour;
long second;
}t;

Файл
out_file

in_file

Последовательность элементов одного типа, расположенных на внешнем устройстве. Число элементов в файле не объявляется.
#include
ofstream out_file ("имя_файла.расширение"); //открытие файла в режиме создания и вывода данных в него

ifstream in_file ("имя_файла.расширение");
// открытие файла в режиме ввода данных из него

Класс
class
Структура, содержащая описание данных и функций
class имя_класса
{
тип1 имя_элемента1;
типN имя_элементаN;
описание_функции1;
описание_функцииN;
}
ПРИМЕР
class date
{
public: char name[64];
int day;
char month[9];
int year;
void show_birthday(void); //прототип функции
};


Таблица 3.36 Процедурные типы данных
Тип
Наимено-вание
Назначение
Синтаксис описания

Функция

Предназначена для выполнения действий и /или вычисления параметра.
void main(void) /*начало главной
/*функции

float name (float x, float y) /*описание функции с параметрами


Операторы языка С++ представлены на рис. 3.24


13 SHAPE \* MERGEFORMAT 1415

Рис. 3.24 Операторы управления последовательностью выполнения программы
Таблица 3.37 Арифметические операции
Знак
Операция
Знак
Операция

+
Сложение
.
Оператор выбора элемента

-
Вычитание
::
Разрешение области видимости

*
Умножение
++
Приращение

/
Деление
--
Уменьшение

=
Присваивание
*
Указатель на элемент


Таблица 3.38 Операции отношения
Знак
Операция отношения

= =
Равно

!=
Не равно

>=
Больше или равно

<
Меньше

<=
Меньше или равно

||
Логическое ИЛИ

&&
Логическое И

?:
Условный оператор сравнения.

Таблица 3.39 Простые операторы
Оператор
Наимено-вание
Назначение
Синтаксис описания

Присваивания

Записывает значение вычисленного выражения в именованную ячейку памяти
имя_переменной=выражение;
ПРИМЕР
F=3*c+2*sin(x);

Переход
goto
Программа переходит на выполнение операторов, следующих за помеченным меткой
goto метка;
ПРИМЕР
include
void main(void)
{
float a,b;
b=5;
goto ml;
...
ml: a=b*3;
...
}

Ввод данных из входного потока в память
сin>>
Операция извлекает данные из входного потока, присваивая значение указанным переменным
#include
cin>>xl>>...>>xN;

Вывод данных из памяти в выходной поток
cout<<
Операция вставляет данные в выходной поток
#include
cout<
Таблица 3.40 Специальные символы, используемые с оператором cout
Символ
Назначение


Звуковой сигнал динамика

\b
Символ возврата

\f
Символ перевода страницы

\n
Символ новой строки

\r
Возврат каретки

\t
Символ горизонтальной табуляции

\v
Символ вертикальной табуляции

\\
Символ обратный слеш

\?
Знак вопроса

\'
Одинарные кавычки

\"
Двойные кавычки

\0
Нулевой символ

Таблица 3.41 Структурированные операторы
Оператор
Наимено-вание
Назначение
Синтаксис описания

Условный
if
Реализует алгоритмическую конструкцию РАЗВИЛКА и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия
if (условие) оператор1; else оператор2;
ПРИМЕР
#include
void main(void)
{
float a,b,rl,r2;
cin>>a>>b;
cout<<"a="<...
}

Перегрузка операторов
Перегрузка операторов заключается в изменении смысла действия операторов при работе их с определенными классами. Например, в некотором классе можно описать функцию сложения двух символьных строк, которую компилятор C++ будет вызывать из этого класса для выполнения соответствующей операции. Если в программе используются, кроме того, операции сложения переменных типа int или float, то над ними будет выполнена стандартная операция сложения. Другими словами, смысл оператора сложения изменится только для элементов указанного класса.
Для перегрузки операторов в прототипе и в заголовке функции (метода) класса используется ключевое слово operator, после которого указывается символ перегружаемого оператора.
Пример.
class sum
{
private:
char word[256] ;
public:
sum(char *); //конструктор
void operator +(char *); //перегружаемый оператор (+)
void show_sum(void);
};
sum::sum(char *line) //описание конструктора
{
...
}
void sum::operator +(char *line) /*описание перегружаемого
{ /*оператора
...
}
void main(void)
{
sum statement("C++") ; //инициализация объекта statement
statement + " - удобный язык!";
}

Наследование и полиморфизм
Наследование – это возможность использования элементов класса, созданного для одной программы, в другой программе. Исходный класс называется базовым (родительским), построенный из ранее созданного класса называется производным.
Под простым наследованием понимается процесс создания одного производного класса, наследующего элементы базового класса.
Для создания производного класса нужно указать ключевое слово class, имя производного класса, двоеточие, режим доступа к элементам базового класса и имя базового класса. После этого надо определить элементы нового, производного класса.
Пример. Простое наследование
class zp //описание базового класса
{
private:
char name[64];
float sal;
public:
zp(char *,float);
void show_sal(void) ;
};

class zpp:public zp //описание производного класса
{
private: //определение элементов
float prize;
public:
zpp(char *,float,float);
void show_sal(void);
};

Множественное наследование
Под множественным наследованием понимается процесс создания производного класса из нескольких ранее созданных базовых классов.
class date //описание базового класса date
{
private:
char name[64];
char dat_birth[64];
public:
date(char *,char *);
void show_birth(void);
};
class zp //описание базового класса zp
{
private:
float sal;
public:
zp(float);
void show_sal (void);
};

При определении производного класса нужно указать ключевое слово class, имя производного класса, двоеточие, перечислить через запятую режимы доступа и имена базовых классов, а затем объявить элементы производного класса:

class date_sal:public date,puplic zp // описание производного
{ класса
private: /*описание элементов
float prize; /* производного класса
public:
date_sal(char *,char *,float,float);
void show_date_sal(void) ;
};

Понятие о полиморфизме и виртуальных функциях
Полиморфизм – это способность объекта изменять форму (поли – много, морфизм – изменение формы), возможность использовать одинаковые имена для методов, входящих в различные классы. Перегрузка функций и перегрузка операторов – это проявление полиморфизма во время компиляции программы на языке C++.
Полиморфизм во время выполнения программы обеспечивается использованием виртуальных функций базовых классов и применением указателей на объекты базовых классов. Для создания полиморфного объекта первоначально определяются виртуальные функции базовых классов при помощи ключевого слова virtual, размещаемого перед прототипами функций. В зависимости от того, на объект какого класса будет указывать указатель, определяется, какая виртуальная функция будет вызвана во время выполнения программы.
Создание указателя на объект базового класса выполняется в программе следующим образом:
Имя_базового_класса *указатель;

Для того чтобы изменить форму объекта, указателю присваивается адрес объекта производного класса:
указатель=(имя_базового_класса *)&имя_объекта_производного_класса;

Кроме перечисленных выше, в языке C++ существует еще один способ реализации полиморфизма – использование шаблонов функций и шаблонов классов.
Шаблон функции позволяет определить функции, возвращающие значения разных типов. Например, шаблон функции sqr, возвращающей значение переменной х, возведенное в квадрат, выглядит так:


templateТ sqr(Т х)
{
return(х*х);
} ;

После определения шаблона в программе можно использовать функцию sqr с различными типами параметров.
Шаблоны классов позволяют строить классы аналогично шаблонам функций.









13PAGE 15


13PAGE 1414415



Shape (фигура)

Label 1 (Метка 1)

Label 2 (Метка 2)

ListBox 1 (Список 1)

ListBox 2 (Список 2)

CommandButton (Кнопка)

-2 3 4 -8 -7

9 -5 -7 -12 -5

18 -19 -14 10 7

-15 8 -4 -10 17
























Дано: массив 4 х 5

Результат: массив 1 х 4

-8 -12 -19 -15
























Результат: массив 1 х 4

4 4 2 1
























Дано: массив 4 х 5

-2 3 4 20 -7

9 -5 -7 12 -5

18 19 -14 10 7

30 8 -4 -10 17
























text1

text2

РАСЧЕТ НАЛОГА НА ПРИБЫЛЬ

Распределить налог по бюджетам

text6

text5

Доходы

Стоимость покупных товаров

text3

Маржинальная прибыль

text4

Коммерческие расходы

Налогооблагаемая прибыль

Ввести данные из файла

Записать данные в файл

text12

Ввод/вывод

Ставка налога на прибыль (%)

text8

Ставка налога на прибыль в ФБ

text9

Ставка налога на прибыль в ТБ

text7

Налог на прибыль ИТОГО

text10

Налог на прибыль в ФБ

text11

Налог на прибыль в ТБ

Рассчитать

Очистить

Выход

Option1

Option3

Option2

Command3

Command1

Command2

Command4

Заголовок (Имя программы)

Раздел объявления меток

Раздел объявления констант

Раздел объявления типов

Раздел объявления переменных

Раздел объявления процедур
и функций


Тело программы

PROGRAM Name;

LABEL a, m;

CONSTANT n=10;

TYPE Boolean = (False, True);

VAR i:byte;

POCEDURE Name_1(par_1,,par_k);

BEGIN

END.

FUNCTION Name_2(par):type;

Программа на языке TurboPascal

Структура

Синтаксис (запись на языке)

Статические типы данных

Динамические типы данных

Процедура

Функция

Данные

Константы

Переменные

Процедурные типы данных

Простые типы

Вещественные

Целые

Символьный

Структурированные типы

Массив

Запись

Множество

Файл

Строка

Логический

Перечисляемый

Тип-диапазон

Shortint

Integer

Longint


Byte


Boolean

Char

имя = (idf1,idfN)

имя =minmax

Real

Single

Double

Extended

Array

String

Record

Set of

File of

Указатель

Procedure

Function

Word


Массив

Операторы

Простые
(не содержат других операторов)

Структурированные
(состоят из других операторов)

Оператор присваивания

Обращение к процедуре

Оператор безусловного перехода

Пустой оператор

Составной оператор begin-end

Условный оператор IF

Условный оператор CASE


Оператор цикла REPEAT

Оператор цикла WHILE

Оператор цикла FOR

Оператор над записями WITH

Имя функции

Объявление переменных

Описание функций

Тело программы

Программа на языке C++

Структура

Синтаксис (запись на языке)

Заголовок

#include

Тело функции

Операторы

Завершение

float Name(float R)

{

}

int i,j;

R=10;

return (R);

Начало

Конец

Имя функции

Объявление переменных

Главная

Тело функции

Операторы

Начало

Конец

void main(void)


{

}

int i,j; float A;

cout<

Статические типы данных

Динамические типы данных

Функция

Данные

Константы

Переменные

Процедурные типы данных

Простые типы

Вещественные

Целые

Символьный

Структурированные типы

Массив

Объединение

Файл

Структура

Пустой

unsigned

int


long


void

char

float

double

struct

union

Указатель

Класс

class

Операторы

Простые
(не содержат других операторов)

Структурированные
(состоят из других операторов)

Оператор присваивания

Обращение ввода-вывода

Оператор безусловного перехода

Условный оператор IF

Оператор варианта CASE


Оператор цикла-ПОКА WHILE

Оператор цикла-ДО DO WHILE

Оператор цикла с параметром FOR



 P’ж
·
·
·
·
·
·
·
·
·цRoot Entry

Приложенные файлы

  • doc 364117
    Размер файла: 593 kB Загрузок: 0

Добавить комментарий