Некоммерческое акционерное общество

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

Кафедра «Информационные системы»

 

 

 

ЯЗЫКИ И ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ

 Методические указания к выполнению расчетно-графических работ

(для студентов всех форм обучения  специальности 

5B060200 -Информатика)

  

 

Алматы 2012

Составитель: А.Г. Ни. Языки и технология программирования. Методические указания к выполнению расчетно-графических работ  (для студентов всех форм обучения  специальности 5B060200 -Информатика). – Алматы: АИЭС, 2012. – 42 с.

 

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

         Методические указания предназначены для студентов всех форм обучения  специальности 5B060200 -Информатика)

         Ил.7, библиогр. – 6 назв.

 

         Рецензент: канд.тех.наук,  проф. А.С. Байкенов

 

         Печатается по плану издания НАО «Алматинского университета энергетики и связи» на 2012 г.

 

 

© Алматинский университет энергетики и связи, 2012 г.

Содержание

 

Введение

4

1

Общие указания к выполнению расчетно-графических работ

 

1.1

Методические рекомендации по выполнению расчетно-графических работ

7

1.2

Требования к оформлению отчета

7

1.3

Требования к защите

7

2

Варианты заданий к расчетно-графическим работам

9

2.1

Расчетно-графическая работа №1. Разветвляющиеся и циклические процессы

9

2.2

Расчетно-графическая работа №2. Обработка массивов. Программирование алгоритмов сортировок элементов массивов.

18

2.3

Расчетно-графическая работа №3. Разработка программы создания базы данных

27

Заключение

36

Список литературы

37

Приложение А. Образец титульного листа  отчета по РГР

38

Приложение Б. Образец содержания

39

Приложение В. Образец схемы пользовательского интерфейса

40

Приложение Г.  Образец результата решения задачи

41

 

Введение

 

Дисциплина “Языки и технология программирования” входит в число базовых дисциплин специальности 5B060200 -Информатика.  При изучении дисциплины учебной программой предусмотрены две формы занятий: лекции и лабораторные. В связи с отсутствием в программе часов на проведение практических занятий написание расчетно – графической работы (РГР) является одной из основных форм самостоятельной работы по дисциплине «Языки и технология программирования».

Основная цель, которая ставиться студенту при выполнении задания - практическое освоение всех этапов разработки надежной программы для решения задачи на компьютере, начиная от анализа условия задачи и заканчивая сдачей отчета по написанной программе. Выполняя РГР студент приобретает практические навыки работы в процессе создания программы на языке С, который в общем разбивается на три этапа: спецификацию, проектирование и реализацию.  Работая над РГР, студент получает умения и навыки, которые будут полезными в будущем – при выполнении более сложных задач (дипломная работа, диссертация, научное исследование), в частности это:

- приобретение опыта работы с литературой и другими источниками информации;

- выработка умения применять информационные и компьютерные технологии для решения задач;

- развитие навыков овладения специализированным программным обеспечением.

Согласно рабочему учебному плану специальности 5B060200 –Информатика изучение дисциплины “Языки и технология программирования” предусматривает выполнение студентами трех РГР.

В настоящей работе разработаны  индивидуальные  задания к трем расчетно-графическим работам по следующим темам:

- программирование разветвляющихся и циклических процессов;

- обработка массивов. Программирование алгоритмов сортировок элементов массивов;

- обработка сложных типов данных.  Разработка программы создания базы данных.

Каждая РГР включает в себя два задания А и В, отличающиеся по уровню сложности. При выборе первого задания студент при защите может получить максимальный балл равный 80%, при защите второго задания – 100%. К  защите  второго задания студент допускается только при условии защиты  первого задания на максимальный балл.

В каждой РГР даются краткие методические указания и примеры решения подобных задач и затем приводятся индивидуальные для каждого задания варианты (всего разработано по 20 различных вариантов). Вариант задания выдается преподавателем.

 В настоящей работе также разработаны общие требования к выполнению РГР, которые включают в себя  требования к  содержанию и оформлению отчета, а также к защите отчета. 

С целью приобретения навыка работы с литературой и другими источниками информации при выполнении РГР студент должен самостоятельно провести теоретическое исследование литературных источников по теме РГР, результаты которого должны быть изложены в отчете.

Теоретический материал для выполнения заданий содержится в конспекте лекции по дисциплине, в методических указаниях к лабораторным работам  и в литературе, указанной в рабочей программе дисциплины. Часть теоретического материала, которым студенты могут  воспользоваться, находится в электронном виде на кафедре «Информационные системы».

 

1 Общие указания к выполнению расчетно-графических работ

 

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

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

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

На этапе реализации программы производится перевод пошагового алгоритма в пошаговую программу, записанную на языке программирования С/С++.

 

1.2 Содержание отчета

Отчет по РГР должен содержать следующие материалы, сброшюрованные в указанной последовательности:

- титульный лист;

- содержание с указанием страниц разделов;

- введение;

- теоретическая часть;

          - проектная часть;

- прикладная часть;

- заключение;

- список использованных источников.

Титульный лист оформляется по форме, представленной в приложении А.

В «Содержании» указываются номера разделов и номера  их начальных страниц. Образец содержания приведен в приложении Б.

Введение должно кратко характеризовать тему и задачу, решению которой посвящена  работа.

В теоретической части должен быть приведен краткий обзор литературы по теме расчетно-графической работы.

В разделе «Проектная часть» должна быть сформулирована содержательная постановка задачи, разработана  блок-схема алгоритма решения задачи, описаны входные данные и разработана схема пользовательского интерфейса. Образец схемы пользовательского интерфейса приведен в приложении В.

В разделе «Прикладная часть» должен быть описан текст программы на языке программирования С/С++, комментарии к тексту программы, результат решения  задачи должен быть представлен в виде скриншота экрана с результатами работы программы.  Образец приведен в приложении Г.

В заключении приводится анализ результатов работы, полученных при выполнении РГР.

В списке использованных источников должны быть представлены литература и адреса сайтов, материалы которых были использованы при выполнении РГР.

 

1.2 Общие требования к оформлению отчета

 

Отчет должен быть выполнен печатным способом с использованием компьютера и принтера на одной стороне листа белой бумаги формата А4 через один интервал. Шрифт - обычный, кегль 14. Текст отчета следует печатать, соблюдая следующие размеры полей: левое - 30 мм, верхнее - 20 мм, правое – 1,5 мм и нижнее - 25 мм. Выравнивание - по ширине страницы.

Заголовки структурных элементов следует печатать прописными (заглавными) буквами в середине строки без точки.

Заголовки разделов, подразделов и пунктов следует печатать с абзацного отступа (1,25 см.) с прописной буквы без точки в конце, не подчеркивая. Если заголовок состоит из двух предложений, их разделяют точкой. Переносы слов в заголовках не допускаются.

Каждый структурный элемент  и раздел начинать с новой страницы.

Таблицы должны иметь заголовки и нумероваться. Блок-схемы и схемы пользовательского интерфейса должны иметь подписи и нумероваться.

Страницы отчета следует нумеровать арабскими цифрами, соблюдая сквозную нумерацию по всему тексту отчета. Номер страницы проставляют в центре нижней части листа без точки. Титульный лист включают в общую нумерацию страниц. Номер страницы на титульном листе не проставляют.

Отчет о выполнении РГР оформляется в электронном и печатном виде.

 

1.3 Общие требования к защите РГР

 

Студент допускается к защите РГР при выполнении следующих условий:

- прохождение собеседования с преподавателем по теме РГР;

- программа, реализованная на языке программирования С/С++, должна быть протестирована преподавателем;

- отчет по расчетно-графической работе должен быть оформлен соответственно вышеприведенным требованиям.

Дата защиты РГР назначается преподавателем. В случае несвоевременной защиты оценка снижается на 30 баллов.

2 Варианты заданий к расчетно-графическим работам

 

2.1 Расчетно-графическая работа №1. Разветвляющиеся и

циклические вычислительные процессы

         

Цель работы: закрепить навыки программирования на языке Си алгоритмов разветвляющихся и циклических вычислительных процессов.

Методические рекомендации. При выполнении задания изучить теоретический материал по теме расчетно-графической работы, разработать алгоритм решения задачи, построить блок-схему и оформить отчет в соответствии с требованиями, указанными в настоящих методических указаниях.

Задание А. Вычислить и вывести на экран значения функции F.

Пример

в остальных случаях.

 

при x >  0 и b = 0;

 

при x < 0 и b ¹ 0;

 
              

        На рисунке 2.1 приведена блок-схема решения задачи

Рисунок 2.1- Блок-схема задания А

Листинг программы решения задания

 

#include <stdio.h>

#include <math.h>

int main()

{

   float    a, b, c;

    float    x, F;

    printf("Введите:\n");

    printf("\ta = \n "); scanf("%f", &a);

    printf("\tb = \n "); scanf("%f", &b);

    printf("\tc = \n "); scanf("%f", &c);

    printf("\t x = \n "); scanf("%f", & x);

        /* Вычисляем значение функции F, исходя из заданных условий */

        if (x < 0 && b != 0)

            F = a * (float)pow(x, 2) + b;

        else if (x > 0 && b == 0)

            F = (x - a) / (x - c);

        else

            F = x / c;

            printf("x = %.2f\tF = %.2f\n", x, F);

        getch();      /*задержка экрана*/

        return 0;    /* Успешное завершение программы */

}

 

 

Результат выполнения программы:

 

Введите: 

          a = 3.5

          b = 8

          c = 293

          x = -4

         

x = -4.00       F = 64.00

  

Варианты задания А:

Вариант 1

 


               ax3       при х < 0  и b = 0;

F =          при х > 0  и b = 0;

                           в остальных случаях.

 

Вариант 2

                    при х + 5 < 0  и с = 0;

F =                 при х + 5 > 0  и с ¹ 0;

                      в остальных случаях.

Вариант 3

 


               ax2 + bx + c       при a < 0  и c ¹ 0;

F =         при a > 0  и b = 0;

              a(x + c)              в остальных случаях.

 

Вариант 4

 

 


             ax - c            при c < 0  и x ¹ 0;

F =                    при c > 0  и x = 0;

                        в остальных случаях.

 

Вариант 5

                 a -     при х < 0  и b ¹ 0;

F =                         при х > 0  и b = 0;

                3x +           в остальных случаях.

 

Вариант 6

 


              ax2 + b2x + c      при c < 0  и b ¹ 0;

F =                           при c > 0  и b = 0;

                                    в остальных случаях.

 

Вариант 7

 


 

 
                - ax2 - b         при х < 5  и с ¹ 0;

F =                    при х > 5  и с = 0;

                             в остальных случаях.

 

Вариант 8

 


 

 
              - ax2              при х < 0  и b ¹ 0;

F =                 при х > 0  и b = 0;

                             в остальных случаях.

 

 

Вариант 9

 


 

 
                 ax2 + b2x          при a < 0  и x ¹ 0;

F =           x -         при a > 0  и x = 0;

                 1 +               в остальных случаях.

 

Вариант 10

 


 

 
                 ax2 – bx + c       при х < 3  и b ¹ 0;

F =                          при х > 3  и b = 0;

                                      в остальных случаях.

 

Вариант 11

 

 

 

 
                  ax2 +          при х < 1  и c ¹ 0;

F =                  при х > 1,5  и c = 0;

                                   в остальных случаях.

 

Вариант 12

 


 

 
                 ax2 + b2 + c         при х < 0,6  и  b + c ¹ 0;

 

F =                            при х > 0,6  и  b + c = 0;

                 +                  в остальных случаях.

 

Вариант 13

 


 

 
                 ax2 + b       при x - 1 < 0   и  b - x ¹ 0;

F =                  при х – 1 > 0   и  b+x = 0;

                                в остальных случаях.

 

Вариант 14

 


 

 
                - ax2 - b              при x + c < 0   и  a ¹ 0;

F =                        при х + c > 0   и  a = 0;

                  +            в остальных случаях.

Вариант 15

 


 

 
               - ax2 + b               при x < 0   и  b ¹ 0;

F =         + 5,5        при х > 0   и  b = 0;

                                     в остальных случаях.

Вариант 16

 


 

 
                a(x + c)2 - b         при x < 0   и  b ¹ 0;

F =                           при х > 0   и  b = 0;

                a +                  в остальных случаях.

 

Вариант 17

 


 

 
                ax2 –  cx + b         при x + 10 < 0   и  b  ¹ 0;

F =                            при х + 10 > 0   и  b = 0;

                                  в остальных случаях.

 

 

Вариант 18

 


 

 
                ax3 + bx2           при x  < 0   и  b  ¹ 0;

F =                         при х  > 0   и  b  = 0;

                         в остальных случаях.

 

 

Вариант 19

 


 

 
                  a(x + 7)2 - b         при x  < 5   и  b ¹  0;

F =                          при х  > 5   и  b = 0;

                                          в остальных случаях.

 

Вариант 20

 


 

 
               -              при x  < 0   и  b ¹  0;

F =                          при х  > 0   и  b = 0;

               -  +          в остальных случаях.

 

Задание Б. Вычислить и вывести на экран значения функции F на интервале от xнач. до хкон. с шагом dх. a, b, c – действительные числа. Значения a, b, c, хнач., хкон., dх ввести с клавиатуры.

 

Пример задания Б:

в остальных случаях.

 

при x >  0 и b = 0;

 

при x < 0 и b ¹ 0;

 
              

 

На рисунке 2.2 приведена блок-схема решения задачи

              

Рисунок 2.2 - Блок-схема задания Б

 

Листинг программы решения задания

 

#include <stdio.h>

#include <math.h>

int main()

{

   float    a, b, c;

    float    StartX, EndX, dX;

    float    F;

    printf("Введите:");

    printf("\ta = "); scanf("%f", &a);

    printf("\tb = "); scanf("%f", &b);

    printf("\tc = "); scanf("%f", &c);

    printf("\tX нач. = "); scanf("%f", &StartX);

    printf("\tX кон. = "); scanf("%f", &EndX);

    printf("\tdX = "); scanf("%f", &dX);

 

    /* Выполняем цикл от начального значения Х до конечного значения Х с шагом dX */

    for (float x = StartX; x <= EndX; x += dX)

    {

        /* Вычисляем значение функции F, исходя из заданных условий */

        if (x < 0 && b != 0)

            F = a * (float)pow(x, 2) + b;

        else if (x > 0 && b == 0)

            F = (x - a) / (x - c);

        else

            F = x / c;

            printf("x = %.2f\tF = %.2f\n", x, F);

    }

 

    return 0;    /* Успешное завершение программы */

}

 

 

 

Результат выполнения программы:

 

Введите:  a = 3.5

          b = 8

          c = 293

          X нач. = -4

          X кон. = 2.5

          dX = 0.5

x = -4.00       F = 64.00

x = -3.50       F = 50.88

x = -3.00       F = 39.50

x = -2.50       F = 29.88

x = -2.00       F = 22.00

x = -1.50       F = 15.88

x = -1.00       F = 11.50

x = -0.50       F = 8.88

x = 0.00        F = 0.00

x = 0.50        F = 0.00

x = 1.00        F = 0.00

x = 1.50        F = 0.01

x = 2.00        F = 0.01

x = 2.50        F = 0.01

 

 

 

Варианты задания Б.

Варианты задания Б соответствуют вариантам задания А.

 

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

1) Как записывается и как работает оператор FOR?

2) Для организации каких циклов применим оператор FOR?

3) В чем отличие оператора WHILE от оператора                                                                              DO WHILE?

4) Как программируются циклические алгоритмы с явно заданным числом повторений цикла?

5) Как программируются циклические алгоритмы с заранее неизвестным числом повторений цикла?

6) Напишите оператор цикла, который не выполняется ни разу.

7) В каких случаях используются операторные скобки?

8) Как работают операторы управления циклом?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 Расчетно-графическая работа №2. Обработка массивов. Программирование алгоритмов сортировок элементов массивов

         Цель работы: закрепить навыки программирования на языке Си алгоритмов обработки массивов. Изучить методы сортировок: простого обмена, простой выборки, простой вставки.

Методические рекомендации. При выполнении задания изучить теоретический материал по теме расчетно-графической работы, разработать алгоритм решения задачи, построить блок-схему и оформить отчет в соответствии с требованиями, указанными в настоящих методических указаниях.

Задание А. Дана действительная квадратная матрица. Заполнить элементы матрицы, используя функцию генерации случайных чисел.

Пример.

Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

На рисунке 2.3 приведена блок-схема решения задачи

Рисунок 2.3 - Блок-схема задания А

 

Листинг программы

 

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<math.h>

#define N 5

void main()

{ int a[N][N],min,i,j;

for (i=0;i<N;i++)

   { for(j=0;j<N;j++)

    a[i][j]=rand()%10;

  }

    printf("n\n Сгенерированная матрица имеет вид" );

    for (i=0;i<N;i++)

    {

      for(j=0;j<N;j++)

      printf("%d  " , a[i][j]);

      printf("\n");

    }

   min=a[0][N-1];

   for (i=0;i<N;i++)

   {

     for(j=N/2;j<N;j++)

     if ((j+i)>N&&(i<=j)&&(min>a[i][j]))

    min=a[i][j];

   }

   printf("n\n Минимальный элемент в заштрихованной области" );

printf("\n\n min_element=%d " , min);

getch();

}

 

Результат выполнения программы:

 

Сгенерированная матрица имеет вид

2 7 2 7 1

1 0 7 6 0

2 7 1 8 1

9 2 8 5 2

7 1 1 3 9

 

    Минимальный элемент в заштрихованной области

   min_element=0

 

Варианты задания А.

 

1) Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера n x n:

 

                  

2) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

                                            

 

3) Дана действительная квадратная матрица порядка МхМ. Получить новую матрицу, переставляя ее блоки размера n x n, где n =М/2.

 

                                            

 

 4) Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера n x n:

 

                                            

                           

5) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

                                            

 

6) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

                                              

 

7) Дана действительная квадратная матрица порядка n. Найти количество положительных  элементов, расположенных в заштрихованной части матрицы.

 

8) Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной части матрицы и поменять их местами.

                                             

 

9) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

 

10) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

 

11) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

 

12) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

 

13) Дана действительная квадратная матрица порядка n. Найти количество ненулевых  элементов, расположенных в заштрихованной части матрицы.

 

14) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

 

15) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

 

 

16) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

 

17) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

 

18) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.

 

19) Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы и поменять их местами.

 

                                             

 

20) Дана действительная квадратная матрица порядка n. Поменять значения элементов, расположенных в заштрихованной части матрицы.

 

Задание Б.

Разработать блок-схему и составить программу сортировки элементов матрицы: а) элементы побочной диагонали отсортировать методом простого обмена; б) элементы главной диагонали отсортировать методом простой выборки; в) элементы первой строки отсортировать методом простой вставки.

Пример.

Условия задачи те же, что и в задании А, но добавляется соответственно заданию Б новое условие: элементы главной диагонали отсортировать методом простой вставки.

На рисунке 2.4 приведена блок-схема решения задачи

Рисунок 2.4 - Блок-схема задания Б

 

Листинг программы

 

#include<conio.h>

#include<math.h>

#define N 5

void main()

{ int a[N][N],min,i,j,tmp;

for (i=0;i<N;i++)

   { for(j=0;j<N;j++)

    a[i][j]=rand()%10-1;

  }

 printf("n\n Сгенерированная матрица имеет вид" );

    for (i=0;i<N;i++)

   { for(j=0;j<N;j++)

   printf("%d " , a[i][j]);

   printf("\n");}

   min=a[0][N-1];

   for (i=0;i<N;i++)

   { for(j=N/2;j<N;j++)

 if ((j+i)>N&&(i<=j)&&(min>a[i][j]))

             min=a[i][j];

}   printf("n\n Минимальный элемент в заштрихованной области" );

printf("\n\n min_element=%d " , min);

printf("\n");

        for (i = 1; i < N; ++i) // цикл проходов, i - номер прохода

    {

         tmp = a[i][i];

         //for (j = i - 1; j >= 0 && a[j][j] > tmp; --j) // поиск места элемента в готовой последовательности

for (j = i - 1; j >= 0; --j)

      if(a[j][j] > tmp)

             a[j + 1] [j + 1] = a[j] [j];    // сдвигаем элемент направо, пока не дошли

         a[j + 1] [j + 1]  = tmp; // место найдено, вставить элемент

    }

printf("n\n Отсортированные элементы главной диагонали " );

         printf("\n");

    for (i=0;i<N;i++)

   { for(j=0;j<N;j++)

   printf("%d  " , a[i][j]);

   printf("\n");

}

getch();

}

Результат выполнения программы:

 

    Сгенерированная матрица имеет вид

 

1  7  4  0  9

4  8  8  2  4

5  5  1  7  1

1  5  2  7  6

1  4  2  3  2

 

Минимальный элемент в заштрихованной области

 

min=1

 

Отсортированные элементы главной диагонали

1  7  4  0  9

4  1  8  2  4

5  5  2  7  1

1  5  2  7  6

1  4  2  3  8

 

Варианты  задания Б.

Варианты  задания Б соответствуют вариантам  задания А.

 

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

1) Что понимается под сортировкой массива?

2) Чем отличается сортировка по убыванию от сортировки по невозрастанию?

3) Сформулировать идею сортировки массива методом простого выбора.

4) Сформулировать идею сортировки массива методом простого обмена.

5) Сформулировать идею сортировки массива методом простой вставки.

6) Почему время выполнения одного шага прямо пропорционально размеру неупорядоченной части массива?

7) Как поменять местами два элемента массива?

8) Что такое вложенные циклы?

9) В чем сходство и отличие методов простого выбора и простого обмена?

 

2.3 Расчетно-графическая работа №3. Обработка сложных типов данных.  Разработка программы создания базы данных

 

Цель работы: приобретение практических навыков разработки программы, создающей и управляющей базой данных, на языке программирования Си, изучить синтаксис и правила создания и обработки  статических и динамических переменных типа структура.

Методические рекомендации. При выполнении задания изучить теоретический материал по теме расчетно-графической работы, схематично представить базу данных в виде таблицы,  и оформить отчет в соответствии с требованиями, указанными в настоящих методических указаниях.

Задание А.

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

Пример.

Создать базу данных "Анкета", включающую: возраст, пол, вопрос анкеты, ответ на который либо ДА, либо НЕТ. Количество записей в базе должно быть не менее 7. Программа должна обеспечить начальный ввод данных и предусматривать выдачу:

- количество мужчин старше 40 лет, имеющих высшее образование, ответили ДА на вопрос анкеты;

- количество женщин моложе 30 лет, имеющих среднее образование, ответили НЕТ на вопрос анкеты;

- количество мужчин моложе 25 лет, имеющих начальное образование, ответили ДА на вопрос анкеты;

- вывод всех анкет и ответов на вопросы.

На рисунке 2.5 приведена табличная  база данных «Анкета», представляющая собой перечень объектов (анкет), каждый из которых содержит данные о возрасте, о принадлежности к мужскому или женскому полу, ответы на вопрос. 

 

возраст

пол

ответ

48

M

ДА

41

M

ДА

25

Ж

НЕТ

18

M

ДА

16

M

ДА

27

Ж

НЕТ

17

Ж

НЕТ

 

Рисунок 2.5.- Табличная  база данных «Анкета»

 

 

Листинг программы

 

#include <stdio.h>

#include <stdlib.h>

struct Form

{

    int Age;

    int Sex;        /* 0 - мужчина; 1 – женщина */

    int Question;   /* 0 - НЕТ; 1 – ДА */

}dannie[3];

int main()

{ int     i,k1, k2, k3;

                printf("\nВведите данные:\n");

            for(i=0; i <3;i++)

           { printf("\tВозраст: ");

           scanf("%d", &dannie[i].Age);

            printf("\tПол (0 - М; 1 - Ж): ");

           scanf("%d", &dannie[i].Sex);

           printf("\tВы курите? (0 - НЕТ; 1 - ДА): ");

            scanf("%d", &dannie[i].Question);

            printf("\n ");

          }

            k1 = k2 = k3 = 0;

         for (i = 0; i < 3; i++)

          {

          if (dannie[i].Sex == 0 &&   /* мужчина.*/

              dannie[i].Age > 40 &&  /* старше 40 лет.*/

              dannie[i].Question == 1)  /* ответивший ДА.*/

              k1++;

          if (dannie[i].Sex == 1 &&     /* женщина.*/

              dannie[i].Age < 30 &&    /* моложе 30 лет...*/

              dannie[i].Question == 0)   /* ответившая НЕТ. */

              k2++;

          if (dannie[i].Sex == 0 &&      /* мужчина... */

              dannie[i].Age < 25 &&  /* моложе 25 лет.*/

              dannie[i].Question == 1)   /* ответивший ДА... */

                    k3++;

            }

            printf("\n курящие мужчины > 40 лет: %d\n", k1);

            printf("\n некурящие женщины <30 лет: %d\n", k2);

            printf("\n некурящие мужчины <25 лет: %d\n", k3);

          /* Вывод всех анкет */

            printf("\nВсе анкеты:\n");

            printf("=======================================\n");

           printf( "     Возраст             Пол                 Ответ\n");

            printf("=======================================\n");

            for (i = 0; i < 3; i++)

            {

             printf("\t%d  \t %s \t %s     \n", dannie[i].Age,

                    ((dannie[i].Sex) ? " Ж " : " M "),

                    ((dannie[i].Question) ? " ДА " : " НЕТ "));

            printf("______________________________________________\n");

            }

    system("PAUSE");    

  return 0;

}

Результат выполнения программы:

 

Введите данные:

        Возраст: 48

        Пол (0 - М; 1 - Ж): 0

        Вы курите? (0 - НЕТ; 1 - ДА): 1

 

        Возраст: 41

        Пол (0 - М; 1 - Ж): 0

        Вы курите? (0 - НЕТ; 1 - ДА): 1

 

        Возраст: 25

        Пол (0 - М; 1 - Ж): 1

        Вы курите? (0 - НЕТ; 1 - ДА): 0

 

        Возраст: 18

        Пол (0 - М; 1 - Ж): 0

        Вы курите? (0 - НЕТ; 1 - ДА): 1

 

        Возраст: 16

        Пол (0 - М; 1 - Ж): 0

        Вы курите? (0 - НЕТ; 1 - ДА): 1

 

       Введите данные:

        Возраст: 27

        Пол (0 - М; 1 - Ж): 1

        Вы курите? (0 - НЕТ; 1 - ДА): 0

 

        Возраст: 17

        Пол (0 - М; 1 - Ж): 1

        Вы курите? (0 - НЕТ; 1 - ДА): 0

 

некурящие мужчины > 40 лет: 2

некурящие женщины <30 лет: 3

курящие мужчины< 25 лет: 2

 

 

Все анкеты:

==============================================

    Возраст             Пол                  Ответ

==============================================

          48                 M                        ДА

____________________________________________________

          41                 M                        ДА

____________________________________________________

          25                 Ж                       НЕТ

____________________________________________________

          18                  M                       ДА

____________________________________________________

          16                  M                       ДА

____________________________________________________

          27                  Ж                      НЕТ

____________________________________________________

           17                  Ж                      НЕТ

____________________________________________________

 

Варианты  задания А.

1)  Создать базу данных "Студенты ", включающую ФИО, номер группы, оценки по трем дисциплинам. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

-   списка студентов в алфавитном порядке;

-   данных студентов, средний балл которых выше среднего балла группы.

2)  Создать базу данных "Студенты ", включающую ФИО, номер группы, оценки по трем дисциплинам. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

-   списка студентов, упорядоченных  по возрастанию среднего балла;

-   данных студентов, имеющих оценки 4 и 5.

3)  Создать базу данных "Студенты ", включающую ФИО, номер группы, оценки по трем дисциплинам. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

-   списка студентов, упорядоченных  по возрастанию номера группы;

-   данных студентов, имеющих хотя бы одну оценку 2.

4)  Создать базу данных "Студенты ", включающую ФИО студента, дата рождения студента, место рождения студента. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

-   списка группы по убыванию года рождения студента;

-   данных студентов, одного года рождения.

5)  Создать базу данных "Студенты ", включающую ФИО студента, название пяти предметов и баллы, полученные по каждому предмету. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

-   списка студентов, упорядоченных  по возрастанию среднего балла;

           - фамилии студентов, аттестованных по всем предметам.

6)  Создать базу данных "Библиотека ", включающую: ФИО автора, название книги, название издательства, год издания, дата поступления книги в библиотеку. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- сведений о книгах, изданных издательством “Мир”, которые поступили в библиотеку за последние пять лет;

-   списка книг, упорядоченных  по дате поступления.

7)  Создать базу данных "Кубик", включающую: номер кубика, размер, его цвет, материал. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- количества кубиков определенного материала с ребром, превышающим 3 см;

         - списка кубиков по возрастанию их номера.

8)  Создать базу данных "Кубик", включающую: номер кубика, размер, его цвет, материал. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- количества кубиков каждого из перечисленных цветов и их

суммарный  объем;

         - списка кубиков по возрастанию их размера.     

9)  Создать базу данных " Фирма ", включающую: ФИО сотрудника, год рождения, адрес, номер телефона. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

-   списка ФИО сотрудников в алфавитном порядке;

- сведений о сотрудниках, одного года рождения.

10)  Создать базу данных " Фирма ", включающую: ФИО сотрудника, год рождения, адрес, номер телефона. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

-   списка сотрудников по убыванию года рождения;

- сведений о сотрудниках, проживающих в одном городе.

11)  Создать базу данных "Библиотека ", включающую: ФИО автора, название книги, название издательства, год издания, дата поступления книги в библиотеку. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- сведений о книгах какого-либо автора;

-   списка книг, упорядоченных  по году издания.

12)  Создать базу данных "Библиотека ", включающую: ФИО автора, название книги, название издательства, год издания, дата поступления книги в библиотеку. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- сведений о книгах, которые поступили в библиотеку за прошлый год;

-   списка книг, упорядоченных  по ФИО автора.

13)  Создать базу данных "Автомобиль", включающую: ФИО владельца, стоимость, марка и номер автомобиля. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- сведений об автомобилях по возрастанию фамилий владельцев;

- количество  автомобилей одной марки по запросу.

14)  Создать базу данных "Студенты ", включающую: ФИО студента, названия четырех предметов и  оценки, полученные по каждому предмету. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- списка группы по убыванию общего балла;

- среднего балла студента по запросу.

15)  Создать базу данных "Студенты ", включающую: ФИО студента, названия четырех предметов и  оценки, полученные по каждому предмету. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- списка группы по убыванию среднего балла;

- фамилии студентов, балл по определенному предмету которых

превышает средний балл по предмету на 0.5 балла.

16)  Создать базу данных "Экспорт", включающую: название страны, импортирующей товар, наименование товара и объем поставляемой партии в штуках Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- страны, в которые экспортируется данный товар и общий объем его

экспорта;

- списка стран по убыванию объема поставляемой партии;

17)  Создать базу данных "Экспорт", включающую: название страны, импортирующей товар, наименование товара и объем поставляемой партии в штуках. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- сведений об экспорте товаров в определенные страны;

- сведений об экспорте товаров по убыванию объема экспорта определенного товара.

18)  Создать базу данных " Фирма ", включающую: ФИО сотрудника, год рождения, адрес, номер телефона. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

- сведений о сотрудниках, возраст которых не превышает средний

возраст сотрудников;

 - списка сотрудников по убыванию год рождения .

19)  Создать базу данных "Автомобиль ", включающую: ФИО владельца, стоимость, марка и номер автомобиля. Количество записей в базе должно быть не менее 10. Программа должна предусматривать выдачу:

-сведений об автомобилях по возрастанию стоимости автомобиля;

- количества автомобилей каждой марки.

20)  Создать базу данных "Календарь", включающую: число, месяц, год. Количество записей в базе должно быть не менее 10. Программа должна обеспечить начальный ввод данных и предусматривать выдачу:

- даты, группируя их по временам года (сначала весенние даты и т.д.);

- самой поздней даты.

 

Задание Б.

Написать  программу для создания и обработки базы данных с заранее неопределенным количеством записей в базе.

Пример.

Содержание задачи то же, что и в задании А.

 

Листинг программы

 

#include <stdio.h>

#include <stdlib.h>

struct Form

{  int Age;

    int Sex;        /* 0 - мужчина; 1 – женщина */

    int Question;   /* 0 - НЕТ; 1 – ДА */

};

int main()

{    int     vibor, i;

    struct Form    *pdannie = NULL;

    int     j = 0;

    int     k1, k2, k3;

    printf("М Е Н Ю\n-------------------\n");

    printf("1. Добавить запись\n");

    printf("2. Анализ анкет\n");

    printf("3. Вывод всех анкет\n");

    printf("4. Выход");

    while (1)

    {  printf("\n\nВаш выбор: ");

        scanf("%d ", & vibor);

        switch (vibor)

        {

        case 1: /* Добавить запись */

        pdannie = (struct  Form*)realloc(pdannie, (j + 1) * sizeof(struct Form));

            printf("\nВведите данные:\n");

            printf("\tВозраст: "); scanf("%d", & pdannie [j].Age);

            printf("\tПол (0 - М; 1 - Ж): ");

           scanf("%d", & pdannie [j].Sex);

            printf("\tВы курите? (0 - НЕТ; 1 - ДА): ");

            scanf("%d", & pdannie [j].Question);

           j++;

            break;

        case 2: /* Анализ анкет */

            k1 = k2 = k3 = 0;

         for (i = 0; i < j; i++)

          {

          if (pdannie [i].Sex == 0 &&   /* мужчина.*/

              pdannie [i].Age > 40 &&  /* старше 40 лет.*/

              pdannie [i].Question == 1)  /* ответивший ДА.*/

              k1++;

          if (pdannie [i].Sex == 1 &&     /* женщина.*/

              pdannie [i].Age < 30 &&    /* моложе 30 лет...*/

              pdannie [i].Question == 0)   /* ответившая НЕТ. */

              k2++;

          if (pdannie [i].Sex == 0 &&      /* мужчина... */

              pdannie [i].Age < 25 &&  /* моложе 25 лет.*/

              pdannie [i].Question == 1)   /* ответивший ДА... */

                    k3++;

            }

            printf("\n курящие мужчины > 40 лет: %d\n", k1);

            printf("\n некурящие женщины <30 лет: %d\n", k2);

            printf("\n некурящие мужчины <25 лет: %d\n", k3);

            break;

        case 3: /* Вывод всех анкет */

            printf("\nВсе анкеты:\n");

            printf("==================================================\n");

            printf("Возраст            Пол                  Ответ\n");

            printf("==================================================\n");

            for (i = 0; i <j; i++)

            {

                printf("%d           %s            %s           %s\n", pdannie [i].Age,

                    ((pdannie [i].Sex) ? "Ж" : "M"),

                    ((pdannie [i].Question) ? "ДА" : "НЕТ"));

                printf("____________________________________________________\n");

            }

            break;

        case 4: // Выход

            free(pdannie);

            exit(0);

            break;

        }

    }

 

    free(pdannie);

    return 0;

}

 

Результат выполнения программы:

 

М Е Н Ю

-------------------

1. Добавить запись

2. Анализ анкет

3. Вывод всех анкет

4. Выход

 

Ваш выбор: 1

Введите данные:

        Возраст: 48

        Пол (0 - М; 1 - Ж): 0

         Вы курите? (0 - НЕТ; 1 - ДА): 1

 

Ваш выбор: 1

Введите данные:

        Возраст: 41

        Пол (0 - М; 1 - Ж): 0

        Вы курите? (0 - НЕТ; 1 - ДА): 1

 

Ваш выбор: 1

Введите данные:

        Возраст: 25

        Пол (0 - М; 1 - Ж): 1

        Вы курите? (0 - НЕТ; 1 - ДА): 0

 

Ваш выбор: 1

Введите данные:

        Возраст: 18

        Пол (0 - М; 1 - Ж): 0

        Вы курите? (0 - НЕТ; 1 - ДА): 1

Ваш выбор: 1

Введите данные:

        Возраст: 16

        Пол (0 - М; 1 - Ж): 0

        Вы курите? (0 - НЕТ; 1 - ДА): 1

 

Ваш выбор: 1

Введите данные:

        Возраст: 27

        Пол (0 - М; 1 - Ж): 1

        Вы курите? (0 - НЕТ; 1 - ДА): 0

 

Ваш выбор: 1

Введите данные:

        Возраст: 17

        Пол (0 - М; 1 - Ж): 1

        Вы курите? (0 - НЕТ; 1 - ДА): 0

 

Ваш выбор: 2

некурящие мужчины > 40 лет: 2

некурящие женщины <30 лет: 3

курящие мужчины< 25 лет: 2

 

Ваш выбор: 3

Все анкеты:

==============================================

    Возраст             Пол                  Ответ

==============================================

          48                 M                        ДА

____________________________________________________

          41                 M                        ДА

____________________________________________________

          25                 Ж                       НЕТ

____________________________________________________

          18                  M                       ДА

____________________________________________________

          16                  M                       ДА

____________________________________________________

          27                  Ж                      НЕТ

____________________________________________________

           17                  Ж                      НЕТ

____________________________________________________

 

Ваш выбор: 4

 

Варианты  задания Б.

Варианты задания Б соответствуют вариантам задания А.

 

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

1) Запишите структуру для хранения имени, возраста и места работы

сотрудника.

2) Как задаются переменные на структуры?

3) Как задаются массивы структур?

4) Запишите инициализацию структуры хранения книг.

5) Для чего предназначена функция malloc()? 

6) Для чего предназначена функция free()?

7) Для чего предназначена функция realloc()?

8) Для чего предназначена функция calloc() ?

 

Заключение  

 

В представленной разработке основной акцент сделан на самостоятельную работу студентов при выполнении ими расчетно-графических работ. Содержащиеся в начале каждой РНР подробные примеры решения задач позволяют самостоятельно изучить материал и успешно выполнить задания по предмету.

Каждая РГР включает в себя два задания А и В по 20 вариантов каждого из заданий, отличающиеся по уровню сложности. При выборе первого задания студент при защите может получить максимальный балл равный 80%, при защите второго задания – 100%. К  защите  второго задания студент допускается только при условии защиты  первого задания на максимальный балл.

С целью приобретения навыка работы с литературой и другими источниками информации при выполнении РГР студент должен самостоятельно провести теоретическое исследование литературных источников по теме РГР, результаты которого должны быть изложены в отчете.

Выполнение заданий РГР способствует выработке у студентов навыков разработки алгоритмов решения задач и их реализации на языке программирования Си.

  

 

Список литературы

 

1.  Эпштейн М.С. Программирование на языке С.-М.: «Академия», 2011.

2. Эпштейн М.С. Практикум по программированию на языке С.-М.: «Академия», 2007.

3. Уэйт М и др. Язые Си. Руководство для начинающих.-М.: «Мир», 1988.

4. Керниган Б. Язык программировния Си.-М.: «Финансы и статистика», 1992.

5. Вирт Н. Алгоритмы и структуры данных.-М.: «Мир», 1989.

6. Березин Б.И. Начальный курс С и С++.-М.: «Диалог-Мифи», 2004.

7. Архангельский А.Я. Язык С++ в С++ BUILDER.-М., 2008.

8. Ишкова Э.А. С++ начала программирования.-М.: «Бином», 2011.

9. Коплиен Дж. Программирование на С++.-СПб., 2005.

10 Либерти Дж. Освой самостоятельно С++ за 21 день.-М., 2007.

11. Павловская Т.А. С/С++. Структурное  программирование. -СПб.: «Питер», 2010.

12. Подбельский В.В. Программирование на языке Си. – М., 2000.

13. Полубенцева М. С/С++ процедурное программирование.- СПб., 2008.

14. Культин Н. С/С++ в задачах и примервх.-СПб.: «БХВ-Петербург» , 2011.

 

 

 

Приложение А

Образец титульного листа  отчета по РГР

 

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РЕСПУБЛИКИ КАЗАХСТАН

НАО «АЛМАТИНСКИЙ  УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ»

 

Факультет «Информационные технологии»

Кафедра «Информационные системы»

 

                                                                                 

 

 

 

 

 

 

 

 

ОТЧЕТ

по расчетно-графической работе №1

по дисциплине «Языки и технология программирования»

тема: «Разветвляющиеся и циклические процессы»

вариант № 1

 

                                                                                   

 

 

 

 

 

 

 

 

 

                                                                      Выполнил ст.гр. БИ-11-2

                                                                               Петров И.И.

        Проверил к.т.н., доцент                                                                                 

  _______________Ни А.Г.

“______”__________2012

 

 

 

 

 

Алматы 2012

 

Приложение Б

Образец содержания

 

 

Содержание

 

Введение

1 Теоретическая часть

2 Проектная часть

2.1Содержательная постановка задачи

2.2 Блок-схема алгоритма решения задачи

2.3 Описание входных данных

2.4 Описание пользовательского интерфейса

3 Прикладная часть

3.1 Листинг программы

3.2 Результат решения задачи

3.3 Результат тестирования

Заключение

Список использованных источников

 

 

 

Приложение В

Образец схемы пользовательского интерфейса

 

 

На рисунке В.1 приведена схема пользовательского интерфейса 

 

Расчетно-графическая работа №2

по дисциплине «Технология программирования»

по теме: «Обработка массивов и функций»

вариант № 13

 

Для смещения вправо введите - 1, чтобы вниз – 2

Ввод ->

Введите число смещения

Ввод ->

Введите 1 для выполнения Задания А, 2 для выполнения

Задания Б. 

Ввод - >

 

Начальный массив

 

Результат

Вывод->

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок В.1 – Схема пользовательского интерфейса

 

 

Приложение Г 

Образец результата решения задачи

 

На рисунках Г.1 и Г.2 приведены результаты решения  задачи

 

 

Рисунок Г.2 - Результат решения вторым способом

 

 

Рисунок Г.1 – Результат решения по первому методу