ЯП Лекция 5.ppt
- Количество слайдов: 57
Элементы Языка СИ
Массивы и связные списки • Списки широко используются в реальных проектах - операционных системах, базах данных, но для работы с ними требуется знать, как устроена арифметика указателей. • Связные списки используются, когда требуется структура данных, размер которой заранее неизвестен.
Инициализация массива int my_array[100]; my_array[0]=1; my_array[1]=20; my_array[2]=100; Физически все 100 элементов располагаются в памяти последовательно, и индекс элемента - это смещение в блоке памяти от его начала, поэтому извлечение элемента по индексу выполняется крайне быстро. Это и есть адресная арифметика, но так как память для стандартного массива выделяется на этапе компиляции, то и модифицировать его впоследствии уже нельзя. Для выделения памяти для связного списка используется иной механизм, когда память выделяется динамически, во время работы программы. Данный тип памяти называется «куча» (heap) и добавляемые элементы физически могут располагаться в такой куче без всякого упорядочивания.
Создание связного списка на языке Си Элемент (узел) - это область памяти, в которой хранится ячейка связного списка. Узел односвязного списка состоит из 2 -х полей: в первом хранятся данные (это поле также называется ключом), а во втором - указатель на следующий узел. Существует специальный указатель head, указывающий на первый узел списка. Указатель head – это отдельная переменная, не принадлежащая списку. Последний узел в списке указывает на NULL, и для него тоже создается специальная переменная - указатель tail. Если первый элемент указывает на NULL, то это будет пустой список. В листинге 2 приведена структура для определения элемента списка: struct node { int data; struct node* next; };
Создание списка из трех элементов // объявить три указателя на элементы списка // указатель head ведет на первый элемент списка struct node* head = NULL; struct node* second = NULL; struct node* third = NULL; // выделить память под элементы // метод sizeof вычисляет размер элемента // метод malloc выделяет требуемое количество памяти // установить указатели на выделенные фрагменты памяти head = (struct node *)malloc(sizeof(struct node)); second = (struct node *) malloc(sizeof(struct node)); third = (struct node *)malloc(sizeof(struct node)); // инициализировать элементы списка и связать их между собой head->data = 1; head -> next = second; second -> data = 2; second -> next = third; third -> data = 3; third -> next = NULL;
Пример • Написать программу, которая считывает в список целые числа из текстового файла любой длины
Пример
Основы Delphi
Историческая справка • Конец 60 –х Николаус Вирт, Цюрихская высшая техническая школа • 1983 – основание Borland Int. (Turbo Pascal 1. 0) • 1990 - Turbo Pascal 6. 0 • 1992 - Turbo Pascal 7. 0 • 1995 – Delphi 1. 0 • 2002 - Delphi 7. 0 • 2005 - Delphi 8. 0
Основные окно среды Delphi
Создание консольного приложения
Вывод строки в консольном приложении
Сохранение проекта
Загрузка сохраненного проекта
Unicode (Windows NT) • 0000 -007 f ASCII • 0080 -00 ff Символы Лат. • 0400 -04 ff Символы Кир.
Вывод кириллицы в консольный приложениях
Вывод кириллицы в консольный приложениях
Организация ввода/вывода
Пример № 1
Основные процедуры и функции для работы со строками Trim(const S: string): string; Удаляет все пробелы и управляющие символы Compare. Text(const S 1, S 2: string): Integer; Сравнение двух строк, без учета регистра Upper. Case(const S: string): string; Возвращает строку в нижнем регистре Lower. Case(const S: string): string; Возвращает строку в верхнем регистре Int. To. Str(Value: Integer): string; Преобразует целое число в строку Int. To. Hex(Value: Integer; Digits: Integer): string; Преобразует целое число в строку, соответствующую его шестнад. представ. Delete(var S: string; Index, Count: Integer); Удаляет из строки cоunt символов начиная с Index Concat(s 1 [, s 2, . . . , sn]: string): string; Возвращает объединение 2 -х и более строк
Генератор равномерно распределенных случайных чисел (ГРРСЧ) Random(x) от 0 до х a+Random(b-a) от a до b
Основные процедуры и функции для работы со строками Copy(s; Index, Count: Integer): string; Возвращает субстроку из Count символов начиная с позиции Index. Insert(Source: string; var S: string; Index: Integer); Вставляет в строку S субстроку Source. Место вставки определяет Index Pos(Substr: string; S: string): Integer; Возвращает индекс первого вхождения символа Substr в строку S. Если такого символа в строке нет, то результат равен нулю. Lenght(S: string): Integer; Возвращает длину строки S
Перевод десятичного числа в шестнадцатеричную систему исчисления
Получение кода символа
Сравнить две строки. Произвести объединения строк, если они не совпадают.
Генерация псевдослучайной строки
Структурные типы данных • • • Массивы Записи Файлы Множества Классы Указатели на классы
Массивы
Даны два массива целых чисел. Необходимы переписать оба массива в 2 -d массив.
Стиль XP
Иконка (*. ico)
Иконка (*. ico)
Иконка (*. ico)
Компонента String. Grid
Компонента String. Grid
Компонента String. Grid Col. Count - число столбцов Row. Count - число строк Fixed. Cols Fixed. Rows go. Editing True
Компонента String. Grid
Компонента String. Grid. Ввод/выод данных.
Загрузка сохраненного проекта
Компонента String. Grid. Ввод/выод данных.
Записи. • Автор • Название • Количество страниц
Записи
Исходный текст
Структурные типы данных • • • Массивы Записи Файлы Множества Классы Указатели на классы
Три вида файлов • Типизированные • Текстовые • нетипизированные
Основные процедуры • • • procedure Assign. File(var F; File. Name: string); procedure Reset(var F [: File; Rec. Size: Word ] ); procedure Rewrite(var F: File [; Recsize: Word ] ); function Close. File(const File. Name: string): Boolean; function File. Exists(const File. Name: string): Boolean; function Eof [ (var F: Text) ]: Boolean;
Задание файлового типа • <имя> =File of <тип> • <имя> =Text. File • <имя> =File;
Графика. Построение графика функции. Компонента Paint. Box
Установка размеров области.
Вывод прямоугольника
Функция рекурсивна, если она содержит одно или несколько обращений к самой себе.
Иконка (*. ico)
Основные методы холста: • • Move. To(x, y) Line. To(x, y) Text. To(x, y, str) Pixels[x, y]


