ФГБОУ ВПО «Воронежский государственный технический университет»
Кафедра систем информационной безопасности
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к лабораторным работам по дисциплине «Технология и методы программирования» для студентов специальности
090303 «Информационная безопасность автоматизированных систем»
очной формы обучения
Воронеж 2014
Составители: канд. техн. наук Д.О. Карпеев, канд. техн. наук С.С. Куликов
УДК 004.056.5
Методические указания к лабораторным работам по дисциплине «Технология и методы программирования» для студентов специальности 090303 «Информационная безопасность автоматизированных систем» / ФГБОУ ВПО «Воронежский государственный технический университет»; сост. Д.О. Карпеев, С.С. Куликов. Воронеж, 2014. 33 с.
Методические указания содержат материал для студентов по выполнению 4 лабораторных работ по следующим темам: «Динамические массивы», «Структуры», «Односвязные списки», «Двусвязные линейные списки».
Методические указания подготовлены в электронном виде в текстовом редакторе MS Word 2013 и содержатся в файле Куликов_ЛР_Технология и методы программирования.pdf.
Библиогр.: 7 назв.
Рецензент д-р техн. наук, проф. А.Г. Остапенко
Ответственный за выпуск зав. кафедрой д-р техн. наук, проф. А.Г. Остапенко
Издается по решению редакционно-издательского совета Воронежского государственного технического университета
© ФГБОУ ВПО «Воронежский государственный технический университет», 2014
Лабораторная работа №1 Динамические массивы
Цель работы - научиться выделять и использовать динамическую память в процессе работы программы.
Задания для самостоятельной подготовки :
1. Изучить:
а) правила использования динамической памяти; б) указатель и его назначение; в) формат определения указателя;
г) способы инициализации указателя; д) операции над указателями; е) связь массива с указателем;
ж) способы доступа к элементам массива через указатель;
з) оператор косвенного доступа.
2.Разработать алгоритм решения в соответствии с за-
данием.
3.Составить программу решения задачи.
4.Подготовить тестовый вариант программы и исходных данных.
Контрольные вопросы :
1.Указать основные правила организации вложенных
циклов.
2.Указать способы выхода из внутреннего цикла.
3.Как организовать вывод матрицы в общепринятом
виде?
4.Как организовать вывод нижней треугольной матрицы в в общепринятом виде?
5.Как организовать ввод матрицы размером N x M эле-
ментов?
6.Что такое указатель?
7.Как объявить указатель заданного типа с именем p?
8.Можно ли инициализировать указатель кодом int *p
= 0 ?
9.Можно ли инициализировать указатель кодом int *p
=NULL ?
10.Дан код int *p. Объясните результат выполнение ди-
рективы p = new int;
11.Дан код int *p. Объясните результат выполнения ди-
ректив:
p = new int; p = new int; p = new int; p = new int; p = new int;
12.Дан код int *p. Можно ли записать следующий оператор: p = p + 5;
13.Дан код int *p. Объясните результат выполнения ди-
рективы cout << *p.
14.Чем отличается указатель типа int от указателя типа
float.
15.Дан код int x = 2; Можно ли записать директиву cout << *(&x) и если да, то какой результат появится на экране.
16.Дан код int x[10]. Объясните результат выполнения кода cout << x.
17.Дан код int x[10]. Можно ли записать выражение x – &x[5] и если да, чему равно значение данного выражения.
18.Дан код int *p, x[10]; Можно ли записать p = x.
19.Даны коды int *p, x[10]; p = x; Можно ли записать
p++, x++.
20.Дан код int x[10], i. Объясните результат выполне-
ния кода cout << (x+i).
21.Дан код int x[10], i. Чему равен результат выражения
*(x+i) == x[i].
22.Дан код int x[10], i. Чему равен результат выражения
*(x+i) < x[i]
2
23.Дан код int *p. Объясните результат выполнения ди-
рективы cout << p.
24.Дан код int x[10], i.Чему равен результат выражения
(x+i) < &x[i]
25.Дан код int *x[10]. Объясните результат выполнения данного кода.
26.Как связано понятие указателя с понятием косвенного доступа к информации?
27.Связь двумерного массива с указателем.
28.Дан код int a[9][9], i. Можно ли в тексте программы использовать выражение a < a[i].
29.Являются ли однотипными значения переменных *a[i] и a[i][k] при допустимых значениях i и k.
30.Дан код int a[5][5]. Можно ли использовать в тексте выражение a == a[0] и если да, чему равно значение данного выражения.
31.Дан код int a[5][5]. Можно ли записать выражение a < a[3] и если да чему равно значение данного выражения.
32.Дан код int a[9][9]. Что определяет код a[2]+7?
33.Дан код int a[9][9]. Что определяет код *(a[3]+5)?
34.Дан код int a[9][9]. Равны ли значения переменных
(a +3*9 +4), (a[3]+4), &a[3][4].
35.Дан код int a[9][9]. Можно ли записать выражение a[5]+4 -&a[6][4] и если да, чему будет равно значение этого выражения.
36.Дан код a[n][m]. Идентичны ли записи &a[i][j], a[i]+j, a+i*m+j?
37.Дан код a[n][m]. Что определяет значение перемен-
ной &a[i][j]?
38.Дан код a[n][m]. Что определяет значение перемен-
ной a[i] + j?
39.Дан код a[n][m]. Что определяет значение перемен-
ной a +m*i + j?
40.Дан код a[n][m]. Что определяет значение перемен-
ной *(a[i] + j)?
3