Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Программирование_1.doc
Скачиваний:
8
Добавлен:
19.11.2019
Размер:
501.25 Кб
Скачать

Задание к работе

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

  2. Пользователь вводит с клавиатуры слово (не больше 19 букв). Его нужно распечатать вертикально, выводя по одной букве в строке. Ввод пользователем слова в массив символов a можно реализовать следующей командой: scanf("%s", a); (для объяснения того, как она работает, потребовался бы еще не пройденный материал, поэтому объяснения пока пропустим). При выводе строки на экран нужно иметь в виду, что количество символов в строке неизвестно, но известно, что последний символ – '\0'. При написании программы подумайте, как можно сократить количество операций в ней.

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

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

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

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

  1. Что такое массив?

  2. Как объявить массив?

  3. Сколько элементов и с какими индексами содержит массив?

  4. Что означает ошибка выхода за границы массива?

  5. Что такое операции индексирования?

  6. Что такое строка, как она создается и используется?

  7. Что такое структура, как она создается и используется?

Лабораторная работа 6 Указатели

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

Теоретические сведения

6.1.Указатели

Нам нужно написать программу, которая работает со списком сотрудников организации. У сотрудников есть начальники. Предположим, что пользователь вводит имя сотрудника, а нам требуется напечатать его начальника, начальника его начальника и так всех начальников вплоть до руководителя предприятия.

Для каждого сотрудника должна быть структура, в которой хранится его имя, фамилия и его непосредственный начальник. Какого типа должно быть поле, в котором храниться начальник сотрудника?

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

В языке С тип данных, который указывает адрес в памяти переменной, массива или структуры называется указатель. Указатель занимает объем памяти, необходимый для того, чтобы сохранить адрес любой ячейки памяти в компьютер. В 32-битной операционной системе указатель занимает 4 байта.

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

Указатель объявляется с помощью символа «*», который записывается после типа переменной, на которую он указывает. Например, так можно объявить указатель на переменную целого типа:

int* a;

В рассматриваемом выше примере структура сотрудника должна содержать указатель на другую структуру типа сотрудник, который является начальником:

struct employee

{

char name[20];

char fam[20];

employee* chief;

};

Третье поле в это структуре указывает на другую структуру того же типа.

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