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

Презентация:



Advertisements
Похожие презентации
Сравнение реализаций пользовательских типов переменных в языках высокого уровня. typedef struct tagStack{ double data; struct tagStack* prev; }*stack;
Advertisements

Списки Лекция 10. Списки Список – структура данных, представляющая собой конечную последовательность элементов. Элемент списка: Данные Связь.
Лекция 14 Динамические данные. Виды памяти Существует три вида памяти: статическая, стековая и динамическая. Статическая память выделяется еще до начала.
1 Лекция 5 Абстрактные структуры данных. 2 Таблицы Таблица – это набор элементов, содержащих ключ – отличительный признак для поиска элементов, и тело.
Лабораторная работа 4. Подпрограммы. Задание на лабораторную работу Написать программу, реализующую хранение информации, указанной в вариантах индивидуальных.
Сложные структуры данных Связные списки. Структуры, ссылающиеся на себя struct node { int x; struct node *next; };
Основы информатики Лекция. Массивы. Указатели. Заикин Олег Сергеевич
Распределение памяти. Динамическое выделение памяти.
МАССИВЫ 4 Определение 4 Описание 4 Обращение к элементам массива 4 Связь массивов с указателями 4 Примеры программ.
Лекция 14 Динамические данные. Виды памяти Существует три вида памяти: статическая, стековая и динамическая. Статическая память выделяется еще до начала.
Основы информатики Массивы. Указатели. Заикин Олег Сергеевич
Двумерные динамические массивы. Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы. Другими словами, это набор.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
Лабораторная работа 7. Работа с динамической памятью, строками и файлами.
Лекция 10 Структуры. Классификация типов данных Простые Целые, вещественные, void, перечисления Являются атомарными не состоят из других типов Адресные.
Знакомство с языком Паскаль. Язык Pascal был создан в начале 70-х годов XX века Никлаусом Виртом. Основой для этого языка послужил широко распространенный.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
Структуры и алгоритмы обработки данных Лекция. Структуры. Связные списки. Заикин Олег Сергеевич zaikin.all24.org.
Лекция 2 С => C++ => C# Большие и маленькие буквы различаются (main, Main, MAIN, mAin – разные имена) После каждого оператора ставится точка с запятой.
Основы алгоритмизации Алгоритмы. Типы алгоритмов. Алгоритмы. Типы алгоритмов. Блок-схемы. Вопросы и задания. Вопросы и задания.
Транксрипт:

В языках высокого уровня обращение к ячейкам памяти происходит не через числовые адреса, а посредством описательных имен. Такие имена называются переменными. При объявлении переменной, принадлежащей к некоторому типу данных на стадии компиляции определяется адрес (относительный) размещения данных, размер данных и их формат. Кроме того, в строго типизированных языках, тип данных определяет диапазон допустимых значений переменных и набор допустимых операций. Структуры данных Алгоритмы + Структуры данных = Программы - Н. Вирт

Простые (базовые) типы данных: целый, вещественный, булевский, символьный Новый (пользовательский) простой тип данных, например: Тип действ вещ Тип день=( Понед, Вторник, Среда, Четверг, Пятница, Суббота, Воскресенье) Тип пол=(муж, жен) день d d=Среда //OK d=9 //Error d=4 // Зависит от компилятора d=(день) 4 //OK пол man hb=муж //OK hb= 3 //Error hb=1 // Зависит от компилятора hb=(пол) 1 //OK [литералы, символьные константы]

Составные типы данных (структуры данных): массивы, структуры (записи). Массив состоит из компонент одного типа, расположенных последовательно в памяти. Последнее обстоятельство позволяет ввести индексацию («адресацию») массива. Структура (запись) состоит из компонент разного типа, расположенных последовательно в памяти. Пример: целый a(5) a(0)=12 //OK a(2)=187 //OK a(5)=21 //Error a(1)=2.54 //Error a(1)=(целый)2.54 //OK Структура Моя_Стр целое a символ b вещ с Конец-структура Моя_Стр->a=456 Моя_Стр->b='d' Моя_Стр->c=1.785 Пример:

вещ X(5) символ a символ b(7) целое d1, d2 a='S' b(0)='S' b(1)='t' b(6)='g' b(7)=0 X(0)=0.87 X(1)= X(4)= d1.785

0 C:5 97A4F010 целый (у)a a=0 целый (у)a=Выделить(2) a(0)=0x97A4 a(1)=0xF010 или (зн)a=0x97A4 (зн)(a+1)=0xF010 При объявлении переменной посредством указателя память для этой переменной может выделяться динамически во время исполнения программы.

Рекурсивные типы данных: линейные списки (односвязные и двусвязные), деревья и т.д. Внутреннее представление Диаграмма Стек Дек (Deq) Дерево

Структура Тест целое a Тест (у)p Конец-структура Тест (у)Stack=0 Реализация рекурсивных типов данных.

Тест (у)tmp=Выделить(3) tmp->a=41846 tmp->p=Stack Stack=tmp

Структура Тест (у)tmp=Выделить(3) tmp->a=0x1012 tmp->p=Stack Stack=tmp

Процедура push(целое с) Тест (у)tmp=Выделить(3) tmp->a=с tmp->p=Stack Stack=tmp Возврат Конец-прцедура Вызов push(0x112A)

Вызов push(0x2011)

Тест (у)tmp tmp=Stack Stack=Stack->p Освободить(tmp) Процедура Тест pop() Тест (у)tmp tmp=Stack Stack=Stack->p Освободить(tmp) Возврат Конец-процедура

Вызов pop()

#include struct tagStack{ double data; struct tagStack *prev; }*stack=0; void push(double d){ struct tagStack* s; s=malloc(sizeof(struct tagStack)); s->prev=stack; s->data=d; stack=s; } Упражнение: переведите программу на язык Pascal

void pop(){ struct tagStack* tmp; fprintf(stdout, "%g\n", stack->data); tmp=stack; stack=stack->prev; free(tmp); } int main(){ double x; for(x=0.0; x