Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №1 (Вариант 23).doc
Скачиваний:
9
Добавлен:
20.06.2014
Размер:
428.03 Кб
Скачать

2

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

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Лабораторная работа №1

по дисциплине

«Программирование на языке высокого уровня»

на тему:

«Указатели, динамическое выделение памяти, работа с файлом»

Студент

Ключанских А.С

подпись, дата

фамилия, инициалы

Группа

АС-10

Принял

Фарафонов А.С.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2011

  1. Задание кафедры

Программа должна предоставлять возможность нескольким пользователям работать с числовыми данными. Сведения о пользователях должны храниться в отдельном текстовом файле пользователей: для каждого пользователя указывается имя пользователя и пароль (пароль в файле должен храниться задом наперед). Числовые данные всех пользователей хранятся в одном файле данных.

  1. При запуске программы необходимо запросить имя пользователя и его пароль (при вводе пароля на экране отображать символы «*» вместо реально вводимых символов).

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

  3. Программа должна предоставлять пользователю следующие возможности по работе с числовыми данными:

  1. Вывод элементов массива X

  2. Добавление нового элемента в конец массива X

  3. Удаление элемента из массива X

  4. Расчет заданной функции F(X) над элементами массива X и вывод значения функции пользователю.

  5. Расчет элементов массива Y по формуле Yi=G(Xi) и вывод их пользователю в виде

y[1] = 3.543

y[2] = 6.422

y[3] = -14.223

…………

При выводе округлять значения Yi до 3-х знаков после запятой.

Вариант: 23

23

Произведение

  1. Краткие теоретические сведения

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

Общая форма объявления указателя следующая:

тип *имя;

Оператор & — это унарный оператор, возвращающий адрес своего операнда.

Оператор * — это унарный оператор, возвращающий значение переменной, расположенной по указанному адресу.

В языке С допустимы только две арифметические операции над указателями: суммирование и вычитание.

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

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

Прототип функции malloc() следующий:

void *malloc(size_t количество_байтов);

Функция free() имеет следующий прототип:

void free(void *p)

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

В языке С файлом может быть все что угодно, начиная с дискового файла и заканчивая терминалом или принтером. Если файл может поддерживать запросы на местоположение (указатель текущей позиции), то при открытии такого файла указатель текущей позиции в файле устанавливается в начало. При чтении из файла (или записи в него) каждого символа указатель текущей позиции увеличивается, обеспечивая тем самым продвижение по файлу.

Файловая система языка С состоит из нескольких взаимосвязанных функций. Самые распространенные: fopen() Открывает файл

fclose() - Закрывает файл

putc() - Записывает символ в файл

getc() - Читает символ из файла

fgets() - Читает строку из файла

fputs() - Записывает строку в файл