- •Е. А. Альтман основы языка с омск 2012
- •Введение
- •Лабораторная работа 1 Изучение среды программирования
- •Теоретические сведения
- •1.1.Среда программирования
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 2 Переменные и операции над ними
- •Теоретические сведения
- •2.1.Основные определения
- •2.2.Операции над целыми числами
- •2.3.Вещественные числа и операции над ними
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 3 Конструкция выбора, логические и другие операции
- •Теоретические сведения
- •3.1.Конструкция выбора и составная инструкция
- •3.2.Операторы отношения и логические операторы
- •3.3.Остальные операторы
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 4 Конструкции циклов
- •Теоретические сведения
- •4.1.Цикл while
- •4.2.Цикл for
- •4.3.Конструкция в конструкции
- •Задание к работе
- •5.2.Свойства массивов
- •5.3.Строки
- •5.4.Структуры
- •Задание к работе
- •6.2.Операции с указателями
- •6.3.Указатели и массивы
- •6.4.Указатели и структуры
- •Задание к работе
- •7.2.Использование указателей для передачи результата и аргумента
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •644046, Г. Омск, пр. Маркса, 35
Задание к работе
Создать массив из 50 чисел, значения которых равны значению функции от индекса элемента. Функции взять из второго задания предыдущей лабораторной работы. Распечатать значения этого массива.
Пользователь вводит с клавиатуры слово (не больше 19 букв). Его нужно распечатать вертикально, выводя по одной букве в строке. Ввод пользователем слова в массив символов a можно реализовать следующей командой: scanf("%s", a); (для объяснения того, как она работает, потребовался бы еще не пройденный материал, поэтому объяснения пока пропустим). При выводе строки на экран нужно иметь в виду, что количество символов в строке неизвестно, но известно, что последний символ – '\0'. При написании программы подумайте, как можно сократить количество операций в ней.
Объявить структуру, содержащую строки, соответствующие имени и фамилии человека. Создать массив из 10 таких структур, инициализировать их именами и фамилиями любых известных людей. Напечатать список людей, чье имя совпадает с именем, которое ввел пользователь.
Содержание отчета
Отчет должен содержат текст всех программ с подробными комментариями, результаты работы этих программ.
Контрольные вопросы
Что такое массив?
Как объявить массив?
Сколько элементов и с какими индексами содержит массив?
Что означает ошибка выхода за границы массива?
Что такое операции индексирования?
Что такое строка, как она создается и используется?
Что такое структура, как она создается и используется?
Лабораторная работа 6 Указатели
Цель работы: Изучение указателей, операций над ними, операций с указателями на массивы и структуры.
Теоретические сведения
6.1.Указатели
Нам нужно написать программу, которая работает со списком сотрудников организации. У сотрудников есть начальники. Предположим, что пользователь вводит имя сотрудника, а нам требуется напечатать его начальника, начальника его начальника и так всех начальников вплоть до руководителя предприятия.
Для каждого сотрудника должна быть структура, в которой хранится его имя, фамилия и его непосредственный начальник. Какого типа должно быть поле, в котором храниться начальник сотрудника?
Это поле должно давать нам информацию о структуре, которая описывает данные о начальнике (включая начальника начальника). Другими словами, ссылаться на структуру начальника, или указать, как обратиться к структуре начальника.
В языке С тип данных, который указывает адрес в памяти переменной, массива или структуры называется указатель. Указатель занимает объем памяти, необходимый для того, чтобы сохранить адрес любой ячейки памяти в компьютер. В 32-битной операционной системе указатель занимает 4 байта.
Для переменной типа указатель строго задается тип переменной, на которую он указывает. Это делается для того, чтобы случайно не выполнить некорректную операцию. Например, если над расположенным в памяти вещественным числом выполнить операцию целочисленного деления, то результат будет не верным.
Указатель объявляется с помощью символа «*», который записывается после типа переменной, на которую он указывает. Например, так можно объявить указатель на переменную целого типа:
int* a;
В рассматриваемом выше примере структура сотрудника должна содержать указатель на другую структуру типа сотрудник, который является начальником:
struct employee
{
char name[20];
char fam[20];
employee* chief;
};
Третье поле в это структуре указывает на другую структуру того же типа.
Указатели играют очень важную роль в языке С. Они служат для организации сложных структур данных (как в рассмотренном примере), для работы с динамической памятью, передаче параметров функций, быстрым операциям с памятью и многих других аспектов программирования, которые будут рассмотрены в дальнейшем.