- •Оглавление
- •Лабораторная работа №1
- •Лабораторная работа №2 Форматный ввод-вывод
- •Лабораторная работа №3 Составление алгоритма решения задачи и его реализация
- •1. Изучить:
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №4 Программирование алгоритмов циклической структуры
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №5 Обработка одномерных массивов
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №6 Обработка двумерных массивов
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №7 Типовые приемы алогитмизации
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №8 Обработка символьных данных
- •1. Изучить:
- •Пример выполнения работы
- •1. Изучить:
- •Пример выполнения работы
- •Пример выполнения работы
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №12 Работа с файлами на верхнем уровне
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №13 Организация работы в графическом режиме
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №14 Создание графика
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №15 Организация перемещения объекта по заданной траектории
- •1. Изучить:
- •Пример выполнения работы
- •Лабораторная работа №16 Организация работы в текстовом режиме
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
- •Лабораторная работа №17 Создание светового меню
- •1. Изучить:
- •Контрольные вопросы
- •Лабораторная работа №18 Динамическое распределение памяти, создание списка
- •1. Изучить:
- •Пример выполнения работы
- •Контрольные вопросы
Лабораторная работа №16 Организация работы в текстовом режиме
Цель работы – овладение навыками работы в текстовом режиме, использования стандартных функций для работы в текстовом режиме.
Задания для самостоятельной подготовки:
1. Изучить:
- особенности работы в текстовом режиме в изучаемом языке программирования;
- возможности стандартных функций для работы в текстовом режиме.
2. Разработать алгоритм решения в соответствии с заданием.
3. Составить программу решения задачи.
Задание к работе:
Составить и выполнить на ЭВМ программу, иллюстрирующую работу изученных стандартных функций для работы в текстовом режиме.
Пример выполнения работы
Задание. Составить и выполнить на ЭВМ программу, иллюстрирующую работу изученных стандартных функций для работы в текстовом режиме.
Программа решения задачи имеет вид:
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
void main() {
textbackground(7); //установка цвета фона
clrscr(); //очистка экрана
window(2,2,78,24); //задание окна
textbackground(1);
clrscr();
window(4,3,76,22);
textbackground(4);
clrscr();
textcolor(3); // установка цвета символов
cprintf(" Russian color "); //вывод на экран
window(7,5,70,19);
textbackground(0);
clrscr();
textattr(6+7*16); // установка цвета фона и символов
clrscr();
cprintf(" !!!!!!!!!!! \r\n");
textattr(1+7*16);
highvideo(); //установка повышенной яркости
cprintf(" !!!!!!!!!!! \r\n");
lowvideo(); //установка пониженной яркости
cprintf(" !!!!!!!!!!! \r\n");
getch();
gotoxy(2,2); //перемещение курсора
getch();
gotoxy(7,4);
getch();
movetext(8,6,13,6,10,20); //перемещение области экрана
getch();
movetext(8,5,60,5,10,23);
getch();
movetext(8,5,60,5,10,21);
getch();
movetext(8,5,60,5,10,22);
getch();
movetext(8,5,60,5,10,24);
getch();
gotoxy(1,1);
delline(); //удаление строки
getch();
gotoxy(1,1);
insline(); //вставка строки
getch();
return;
}
Контрольные вопросы
Перечислить особенности работы в текстовом режиме.
Перечислить возможности работы в текстовом режиме.
Пояснить, как работают рассмотренные функции для работы в текстовом режиме.
Лабораторная работа №17 Создание светового меню
Цель работы – овладение навыками алгоритмизации и программирования алгоритмов с использованием переменной структура (запись) и объединение, создания светового меню средствами изучаемого языка программирования.
Задания для самостоятельной подготовки:
1. Изучить:
-основную терминологию, связанную с переменной объединение: определение, элемент объединения;
- организацию доступа к элементам объединения;
- функции для обработки нажатия клавиши на клавиатуре;
- принципы организации вывода и управления светового меню.
2. Разработать алгоритм решения в соответствии с заданием.
3. Составить программу решения задачи.
4. Подготовить тестовый вариант исходных данных. Выполнить на ЭВМ программу с тестовым вариантом.
Задание к работе:
Написать программу, осуществляющую вывод и управление меню с подсветкой. Главное меню должно содержать пункты:
1. Ввод информации
2. Вывод информации
3. Выход
При выборе первого пункта осуществить ввод информации в массив структур (согласно варианту из таблицы 15). При выборе второго пункта осуществить вывод меню второго уровня (согласно варианту из таблицы 15).
Таблица 15
Вариант задания |
Условия задачи |
1 |
Поля структуры: ФИО, год рождения, номер группы. Структура меню второго уровня:
|
2 |
Поля структуры: номер поезда, маршрут, время отправления. Структура меню второго уровня:
|
3 |
Поля структуры: наименование товара, оптовая цена, розничная цена. Структура меню второго уровня:
|
4 |
Поля структуры: ФИО предпринимателя, название предприятия, сумма налога. Структура меню второго уровня:
|
Продолжение таблицы 15
Вариант задания |
Условия задачи |
5 |
Поля структуры: наименование, адрес банка, номер счета. Структура меню второго уровня:
|
6 |
Поля структуры: ФИО, номер водительского удостоверения, марка автомобиля. Структура меню второго уровня:
|
7 |
Поля структуры, тема реферата, дата сдачи. Структура меню второго уровня:
|
8 |
Поля структуры: ФИО рабочего, табельный номер, средняя заработная плата. Структура меню второго уровня:
|
9 |
Поля структуры: ФИО владельца, порода собаки, номер амбулаторной карты. Структура меню второго уровня:
|
10 |
Поля структуры: ФИО студента, номер группы, средний балл за последнюю сессию. Структура меню второго уровня:
|
11 |
Поля структуры: название города, численность населения, площадь. Структура меню второго уровня:
|
12 |
Поля структуры: шифр детали, количество на складе, стоимость. Структура меню второго уровня:
|
Пример выполнения работы
Задание.
Написать программу, осуществляющую вывод и управление меню с подсветкой. Главное меню должно содержать пункты:
1. Ввод информации
2. Вывод информации
3. Выход
При выборе первого пункта осуществить ввод в массив структур информации
- ФИО рабочего;
- год рождения;
- табельный номер.
При выборе второго пункта осуществить вывод меню второго уровня
Вывод ФИО рабочего и года рождения
Вывод ФИО рабочего и табельного номера
Вывод всей информации
Выход.
Программа решения задачи имеет вид:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<graphics.h>
#include<math.h>
#include<dos.h>
#include<bios.h>
struct pass //структура
{
char fio[30]; int god; int tabn; //fio[30]-фамилия, god-год рождения, tabn-табельный номер
};
void menu(int j, int c1, int c2, int ys, char *textmenu[]) //функция вывода подпунктов меню
//j-количество пунктов меню, c1-номер цвета текста, с2-номер цвета фона
//ys-координата по у начала первого пункта меню, textmenu[]-содержание пунктов меню
{ int i;
textcolor(c1); //функция задаёт цвет текста
textbackground(c2); //функция задаёт цвет фона
for(i=0;i<j;i++) //цикл осуществляет вывод пунктов меню
{
gotoxy(1,ys); //функция позиционирует курсор по указанным координатам
clreol(); //функция очищает строку,на которой находится курсор
cprintf("%s",textmenu[ys/2-1]); //вывод пункта меню
ys+=2;
}
return;
}
int winmenu(char* u[]) //функция задаёт интерфейс меню
//u[]- массив пунктов меню
{int y,predy; //координаты пункта меню по у
union //объединение для считывания кода клавиши
{
int p;
unsigned char b[2];
}key;
textbackground(0);
clrscr(); //очистка экрана
window(7,3,73,22); //задание размеров окна
textbackground(15);
clrscr();
window(10,4,70,21);
textbackground(2);
clrscr();
y=2;
predy=2;
menu(3,0,2,2,u); //вызов функции меню, где 3-количество пунктов меню
// 0-номер цвета текста 2-номер цвета фона
// 2-координата начала первой строки меню по у в заданном окне u-массив пунктов меню
menu(1,15,0,2,u); // установить подсветку на пункте меню
for(;;)
{
key.p=bioskey(0);
switch (key.b[1])
//выполнение одной из альтернатив, в зависимости от того, какая клавиша нажата
{
case 72: y-=2; //нажата стрелка вверх
if(y<2) y=6;
break;
//оператор разрыва, передаёт управление следующему за switch оператору
case 80: y+=2; //нажата стрелка вниз
if(y>6) y=2;
break;
case 28: return y/2; //нажата клавиша Enter
}
menu(1,0,2,predy,u); //убрать подсветку на пункте меню
menu(1,15,0,y,u); // установить подсветку на пункте меню
predy=y;
}
}
int vvod(struct pass mas[]) //функция ввода данных
{
int kol;
int i; //kol-количество жителей
clrscr();
cprintf("Введите кол-во жителей:");
scanf("%d",&kol); //функция считывает введённые с клавиатуры данные
for(i=0;i<kol;i++) //цикл ввода данных
{
cprintf("\r\n");
cprintf("Введите ФИО: ");
scanf("%s", &mas[i].fio);
cprintf("\r\nВведите год рождение: ");
scanf("%d", &mas[i].god);
cprintf("\r\nВведите его табельный номер: ");
scanf("%d", &mas[i].tabn);
}
return kol; //функция возвращает количество жителей
}
void vivod(int k,struct pass mas[],int de) //функция вывода введённых данных
{
int i; //i-переменная цикла
clrscr();
for(i=0;i<k;i++) //цикл вывода данных на экран
switch(de) //в зависимости о пункта меню de вывод требуемых данных
{
case 1:cprintf("ФИО:%20s\r\nГод рождения:%5d\r\n",mas[i].fio,mas[i].god); break;
case 2:cprintf("ФИО:%20s\r\nТабельный номер:%d\r\n",mas[i].fio,mas[i].tabn); break;
case 3:cprintf("ФИО:%20s\r\nГод рождения:%5d\r\n\
Табельный номер:%d\r\n",mas[i].fio,mas[i].god,mas[i].tabn);
}
getch(); //останов выполнения программы до нажатия любой клавиши
return;
}
void main()
{
struct pass s[30];
int koll,R=1,P=1; //koll-количество жителей
char *textmenu1[]={"1.Ввод инфо","2.Вывод инфо","3.Выход"};
char *textmenu2[]={"1.Вывод ФИО и год рождения",
"2.Вывод ФИО и табельный номер","3.Вывод всей инфо"};
clrscr();
_setcursortype(_NOCURSOR); //убирает курсор с экрана
while(R!=3) //пока пользователь не выбрал последний пункт меню “Выход”
{ R=winmenu(textmenu1); //номер пункта в главном меню
switch(R)
{
case 1: koll=vvod(s); break; //ввод данных
case 2: P=winmenu(textmenu2); //номер пункта в меню второго уровня
vivod(koll,s,P); break; //вывод данных
case 3: clrscr(); textcolor(4); cprintf("Программа завершила работу"); getch();
//выход
}
}
return;
}
