МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №1
по дисциплине
«Программирование на языке высокого уровня»
на тему:
«Указатели, динамическое выделение памяти, работа с файлом»
|
Студент |
|
|
|
Ключанских А.С |
| ||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
| ||||||||
|
Группа |
|
АС-10 |
|
|
|
| |||||||
|
|
|
|
|
|
| ||||||||
|
Принял |
|
|
|
|
| ||||||||
|
|
|
|
|
Фарафонов А.С. |
| ||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2011
Задание кафедры
Программа должна предоставлять возможность нескольким пользователям работать с числовыми данными. Сведения о пользователях должны храниться в отдельном текстовом файле пользователей: для каждого пользователя указывается имя пользователя и пароль (пароль в файле должен храниться задом наперед). Числовые данные всех пользователей хранятся в одном файле данных.
При запуске программы необходимо запросить имя пользователя и его пароль (при вводе пароля на экране отображать символы «*» вместо реально вводимых символов).
Если имя пользователя найдено в файле пользователей и введенный пароль верен, то загружаются пользовательские числовые данные. В противном случае должно выдаваться сообщение об ошибке и завершение программы.
Программа должна предоставлять пользователю следующие возможности по работе с числовыми данными:
Вывод элементов массива X
Добавление нового элемента в конец массива X
Удаление элемента из массива X
Расчет заданной функции F(X) над элементами массива X и вывод значения функции пользователю.
Расчет элементов массива Y по формуле Yi=G(Xi) и вывод их пользователю в виде
y[1] = 3.543
y[2] = 6.422
y[3] = -14.223
…………
При выводе округлять значения Yi до 3-х знаков после запятой.
Вариант: 23
23 |
Произведение |
Краткие теоретические сведения
Указатель — это переменная, значением которой является адрес некоторого объекта (обычно другой переменной) в памяти компьютера. Например, если одна переменная содержит адрес другой переменной, то говорят, что первая переменная указывает (ссылается) на вторую.
Общая форма объявления указателя следующая:
тип *имя;
Оператор & — это унарный оператор, возвращающий адрес своего операнда.
Оператор * — это унарный оператор, возвращающий значение переменной, расположенной по указанному адресу.
В языке С допустимы только две арифметические операции над указателями: суммирование и вычитание.
Понятия указателей и массивов тесно связаны. В языке С существуют два метода обращения к элементу массива: адресная арифметика и индексация массива. Стандартная запись массивов с индексами наглядна и удобна в использовании, однако с помощью адресной арифметики иногда удается сократить время доступа к элементам массива.
Указатели используются для динамического выделения памяти компьютера для хранения данных. Динамическое распределение означает, что программа выделяет память для данных во время своего выполнения. Основу системы динамического распределения в С составляют функции malloc() и free().
Прототип функции malloc() следующий:
void *malloc(size_t количество_байтов);
Функция free() имеет следующий прототип:
void free(void *p)
Поскольку динамически распределяемая область памяти не бесконечна, при каждом размещении данных необходимо проверять, состоялось ли оно.
В языке С файлом может быть все что угодно, начиная с дискового файла и заканчивая терминалом или принтером. Если файл может поддерживать запросы на местоположение (указатель текущей позиции), то при открытии такого файла указатель текущей позиции в файле устанавливается в начало. При чтении из файла (или записи в него) каждого символа указатель текущей позиции увеличивается, обеспечивая тем самым продвижение по файлу.
Файловая система языка С состоит из нескольких взаимосвязанных функций. Самые распространенные: fopen() Открывает файл
fclose() - Закрывает файл
putc() - Записывает символ в файл
getc() - Читает символ из файла
fgets() - Читает строку из файла
fputs() - Записывает строку в файл