ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ"

Транскрипт

1 ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 2 Время жизни и области видимости программных объектов (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем Юрьевич

2 Характеристики программных объектов Программные объекты Переменные Функции Тип Время жизни Область видимости Расположение в памяти Расположение в программе 2

3 Организация памяти программы Команды процессора, формируемые компилятором Внешние и статические переменные существуют до завершения программы 1. Выделяется в любой момент времени 2. Освобождается явно 3. Рост снизу-вверх Код и данные потоков Код и данные используются несколькими процессами одновременно 1. Хранение стековых кадров 2. Локальные переменные функций 3. Рост сверху-вниз Память ядра ОС 3

4 Структура данных стек Стек (англ. stack стопка) структура данных, в которой доступ к элементам организован по принципу LIFO. Принцип LIFO (англ. last in first out, «последним пришёл первым вышел»). Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно снять верхнюю. 4

5 Пример использования стека вызовов Уменьшение адресо ов Регистры (addr2) r 0xfe i j Регистры (addr1) r Адрес возврата i СТЕК addr3 addr2 addr1 0xfe int sum(int i,int j) { int r = i + j; 3 return r; 4 int mulby4(int i) { int r; r = sum(i, i); r = sum(r, r);

6 Динамическая память Динамическое распределение памяти способ выделения оперативной памяти компьютера для объектов в программе в процессе ее исполнения: объекты размещаются в «куче» (англ. heap); при создании объекта указывается размер памяти; в случае успеха, выделенная область памяти «изымается» из кучи и недоступна при последующих операциях выделения памяти; память занятая ранее под какой-либо объект может быть освобождена; освобождаемая память возвращается в кучу и становится доступной при дальнейших операциях выделения памяти. 6

7 Динамическая память (язык СИ) В языке Си существует четыре функции для динамического распределения памяти: malloc (от англ. memory allocation, выделение памяти), calloc (от англ. clear allocation, чистое выделение памяти) realloc (от англ. reallocation, перераспределение памяти). free (англ. free,освободить) Функции malloc, calloc, realloc обеспечивают выделение памяти; Функция free освобождение памяти, возвращенной любой из функций ее выделения. 7

8 Динамическая память (язык СИ) Прототипы (объявления/описания) динамической памятью: #include <stdlib.h> void *malloc (size_t size); функций работы с void *calloc (size_t num, size_t size); void *realloc(void *block, size_t size); void *free(void *block); Возвращаемое значение обобщенный указатель (void*). Его использование позволяет выделять память для произвольных объектов. 8

9 Пример использования динамической памяти int *func1(int size){ int *p = (int*)malloc(size); int i; for(i=0;i<size;i++) *(p+i) = i+1; return p; int func2(){ int *ptr = func1(6); free(ptr); Куча (heap) 9

10 Расположение объектов в программе Область видимости Переменные Функции Тело функции Локальный Внешний Файл Локальный Глобальный 10

11 Многофайловые программы Для структурирования исходного кода программы ее текст может быть распределен по нескольким файлам. Минимальные неделимые единицы разбиения программы: функции и внешние переменные. Только один файл может содержать функцию main Программные объекты могут быть локальными в рамках файла. В этом случае они не доступны из функций, расположенных в других файлах. Локальными являются функции и внешние переменные, имеющие класс памяти static. Программные объекты могут быть глобальными, т.е. доступными из любой точки программы. Глобальными являются функции и внешние переменные с классом памяти extern. 11

12 Пример многофайловой программы int sumsub(int *i,int j) { int k = *i *i = k - j; return k + j; sumsub.c int sumsub(int*,int); int main(){ int s, m=3; s = sum(&m, 5); printf("%d",m); main.c gcc Wall o sum sumsub.c main.c 12

13 Классы памяти переменных Время жизни и область видимости переменной в языке Си определяется классом памяти переменной. Существуют следующие классы: auto - локальные переменные, память для которых выделяется при входе в составной оператор, и освобождается при выходе из него (располагаются в стеке). register аналогичен классу auto, но, если это возможно, переменная будет размещена в процессорном регистре. static переменные (локальные или внешние), существующие в течение всего выполнения программы. extern глобальные переменные, используются для связи между функциями, в том числе независимо скомпилированными, которые могут находиться в различных файлах. 13

14 Класс памяти auto и register Расположение Время жизни Область видимости Стек вызовов / регистры процессора В рамках блока операторов В рамках блока операторов int f(int i) { int r = i; auto int k = 0; register int m; CPU m Регистры CPU k r Адрес возврата i 14

15 Расположение Время жизни Область видимости Класс памяти static (локальные переменные) Сегмент данных Все время исполнения программы В рамках блока операторов int f(int i) { static int r; static int m = 0;... 15

16 Расположение Время жизни Класс памяти static (внешние переменные) Сегмент данных Все время исполнения программы Область видимости В рамках файла, начиная с объявления static int r; int f(int i) { r = i;... 16

17 Глобальные переменные (внешние без класса памяти) Расположение Время жизни Сегмент данных Все время исполнения программы Область видимости 1. В рамках текущего файла, начиная с места объявления 2. Область видимости может быть рас-- пространена на другие файлы с использованием класса памяти extern. int glob = 18; void f(){ 17

18 Расположение Время жизни Класс памяти extern (внешние переменные) Сегмент данных Все время исполнения программы Область видимости В рамках файла, начиная с объявления int glob = 18; void f(); void f(){ extern int glob; printf("gv=%d",glob); int main(){ glob++; printf("1:%d",glob); return; f(); printf("2:%d",glob); functions.c main.c 18

19 Расположение Время жизни Область видимости Класс памяти extern (локальные переменные) Сегмент данных Все время исполнения программы В рамках блока операторов int glob = 18; int f2(){ void f(){ extern int glob; func1.c func2.c 19

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

21 int i = 18; static int k = 8; Разрешение конфликтов имен переменных (Пример) extern int i = 1; static int k = 2; void f(){ int i; if(){ extern int i; int f1(){ int k = 18; { int k = 19; file1.c file2.c 21

22 Классы памяти функций В связи с тем, что время жизни функции всегда равно времени выполнения программы, количество классов для функций меньше, чем для переменных: extern класс памяти по умолчанию, указывать не обязательно; static класс памяти, предусматривающий ограничение области видимости функции в рамках одного файла. 22

23 Функции класс памяти extern int i = 18; static int k = 8; void f(){ int i; if(){ extern int i; extern int i = 1; static int k = 2; int f1(){ int k = 18; { int k = 19; file1.c file2.c 23

24 Литература 1. Подбельский В.В, Фомин С.С. Программирование на языке Си: Учеб. пособие. - 2-е доп. изд. - М.: Финансы и статистика, с. 2. Керниган Б., Ритчи Д., Фьюер А. Язык программирования Си. Задачи по языку Си: Пер. с англ. - М.: Финанасы и статистика,,

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем Юрьевич Бинарные файлы Бинарные файлы

Подробнее

Концепции языков программирования

Концепции языков программирования Распределение памяти Распределение памяти 1 Статическое выделение пямяти 2 3 Распределение памяти 1 Статическое выделение пямяти 2 3 Статическое выделение пямяти Выделение памяти на этапе загрузки программы

Подробнее

struct circle { double x, y, r; int c; }; struct circle c1; struct foo { struct bar { double x; }; int y; struct bar z; }; struct bar t;

struct circle { double x, y, r; int c; }; struct circle c1; struct foo { struct bar { double x; }; int y; struct bar z; }; struct bar t; 1 Занятие 6 1.1 Структуры Ранее мы рассмотрели методы определения и работы с массивами и перечислимыми типами. Теперь рассмотрим определение и использование структур. Структура в языке Си это объединение

Подробнее

ЛЕКЦИЯ 3. КЛАССЫ ХРАНЕНИЯ, СВЯЗЫВАНИЕ И УПРАВЛЕНИЕ ПАМЯТЬЮ

ЛЕКЦИЯ 3. КЛАССЫ ХРАНЕНИЯ, СВЯЗЫВАНИЕ И УПРАВЛЕНИЕ ПАМЯТЬЮ ЛЕКЦИЯ 3. КЛАССЫ ХРАНЕНИЯ, СВЯЗЫВАНИЕ И УПРАВЛЕНИЕ ПАМЯТЬЮ Содержание 1. Область видимости... 1 2. Длительность хранения.. 3 3. Связывание... 5 4. Классы хранения... 6 4.1. Автоматические переменные...

Подробнее

4.13. Строки. 10 символов char string[11]; "строка в кавычках" Строковая константа - char str[ ] = Counted by compiler! ;

4.13. Строки. 10 символов char string[11]; строка в кавычках Строковая константа - char str[ ] = Counted by compiler! ; -одномерные массивы типа char, заканчивающийся нулевым байтом - '\0 или '\x0 10 символов char string[11]; 4.13. Строки Строковая константа - "строка в кавычках" добавляется '\0 char str[ ] = Counted by

Подробнее

ЛАБОРАТОРНАЯ РАБОТА 2

ЛАБОРАТОРНАЯ РАБОТА 2 ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ БЮДЖЕТНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ»

Подробнее

int *p, c; char *strdup(char *ptr); int *aptr[20]; p = &c;

int *p, c; char *strdup(char *ptr); int *aptr[20]; p = &c; 1 Занятие 5 1.1 Указатели Рассмотрим важнейший производный тип указательный. Если base это некоторый базовый тип, то тип указателя на тип base имеет своим множеством значений всевозможные адреса памяти,

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на языках Лекция 17. Стандарты и реализации Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Основные стандарты и реализации Язык

Подробнее

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 5 Структуры данных (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем Юрьевич Кардинальные числа типов данных Общим свойством

Подробнее

Языки программирования и методы трансляции

Языки программирования и методы трансляции Языки программирования и методы трансляции Имена, связывание, области видимости 1 Время связывания 2 3 Статические области видимости Динамические области видимости Имя, область видимости и связывание Имя

Подробнее

Подсистема управления памятью.

Подсистема управления памятью. Лекция 4. Подсистема управления памятью. Каждый процесс выполняется в своем собственном адресном пространстве. Состояние процесса в каждый момент времени описывается его контекстом, в который включаются

Подробнее

Лекция 4. Динамическая память

Лекция 4. Динамическая память http://compscicenter.ru 1/21 Александр Смаль CS центр 1 октября 2014 Санкт-Петербург http://compscicenter.ru 2/21 Зачем нужна динамическая память? Стек программы ограничен. Он не предназначен для хранения

Подробнее

Содержание: указатели массивы и указатели динамическое размещение массивов глобальные переменные

Содержание: указатели массивы и указатели динамическое размещение массивов глобальные переменные Тема : знакомство с С (Си) УКАЗАТЕЛИ и МАССИВЫ (динамическое размещение) Содержание: указатели массивы и указатели динамическое размещение массивов глобальные переменные Указатели Указатель это адрес памяти,

Подробнее

Язык Си. Реализация списков с помощью цепочек динамических объектов

Язык Си. Реализация списков с помощью цепочек динамических объектов Язык Си. Реализация списков с помощью цепочек динамических объектов А. А. Вылиток В языке Си нет встроенных типов данных и операций для работы со списками. Программируя на языке Паскаль (в котором также

Подробнее

Тема 1.1 Функции в С. Понятие функции

Тема 1.1 Функции в С. Понятие функции Тема 1.1 Функции в С Понятие функции Опыт показывает, что для написания больших программ лучше пользоваться функциями. В таком случае программа будет состоять из отдельных фрагментов кода. Такой отдельный

Подробнее

Сборка программы на языке C

Сборка программы на языке C А. Г. Фенстер, fenster@fenster.name 9 февраля 2010 г. 1 Сборка программы из нескольких файлов Программы на языке C обычно состоят из нескольких файлов с исходным кодом. Рассмотрим этапы сборки программы

Подробнее

Лекция 2. Как выполняются программы на C++

Лекция 2. Как выполняются программы на C++ http://compscicenter.ru 1/21 Лекция 2. Как выполняются программы на C++ Александр Смаль CS центр 15 сентября 2016 Санкт-Петербург http://compscicenter.ru 2/21 Типы данных Целочисленные: 1. char (символьный

Подробнее

Язык программирования Си++ Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки.

Язык программирования Си++ Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки. Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 2. Массивы объектов. Массивы переменной длины. Операторы new, delete. Указатели. Ссылки. 1. Массивы объектов Встроенное в язык Си++ понятие

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на Лекция 13. Области действия и времена жизни Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Основные понятия Область действия

Подробнее

Обнаружение некорректных обращений к памяти в куче средствами вызова mprotect и обработки сигнала SIGSEGV

Обнаружение некорректных обращений к памяти в куче средствами вызова mprotect и обработки сигнала SIGSEGV УДК 004.4 Обнаружение некорректных обращений к памяти в куче средствами вызова mprotect и обработки сигнала SIGSEGV Шушлин В.В., студент Россия, 105005, г. Москва, МГТУ им. Н.Э. Баумана, кафедра Программное

Подробнее

2017 МГУ/ВМК/СП. Лекция F. 1 апреля

2017 МГУ/ВМК/СП. Лекция F. 1 апреля Лекция F 1 апреля Управление динамической памятью #include void *calloc(size_t nmemb, size_t size); void *malloc(size_t size); void free(void *ptr); void *realloc(void *ptr, size_t size); Приложение

Подробнее

ЛАБОРАТОРНАЯ РАБОТА 3

ЛАБОРАТОРНАЯ РАБОТА 3 ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ БЮДЖЕТНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ»

Подробнее

Лекция 3. Использование динамической памяти

Лекция 3. Использование динамической памяти Название Виды памяти Лекция 3. Использование динамической памяти Метапрограммирование в C ++ 17 февраля 2017 г. Лекция 3 1 / 30 Название Виды памяти Виды памяти в программе на C ++ Название Хранимые объекты

Подробнее

Модульное программирование

Модульное программирование Дисциплины "ЯЗЫКИ ПРОГРАММИРОВАНИЯ" "ПРОГРАММИРОВАНИЕ" Модульное программирование Преподаватель: Перышкова Евгения Николаевна Подпрограмма Уже в первом программируемом компьютере (аналитической машине

Подробнее

2017 МГУ/ВМК/СП. Лекция февраля

2017 МГУ/ВМК/СП. Лекция февраля Лекция 5 22 февраля Организация вызова функций Вопросы Передача управления и возвращение обратно Вычисление значений фактических параметров и их размещение Передача возвращаемого значения Размещение автоматических

Подробнее

Программы из нескольких файлов

Программы из нескольких файлов 102 В.Л. Тарасов Лекции по программированию на C++ Лекция 8 Программы из нескольких файлов Как правило, исходные тексты программ на C++ размещают в нескольких файлах. Это удобно, так как небольшой код

Подробнее

Лабораторная работа 2 Разработка и отладка алгоритмов и программ с использованием указателей

Лабораторная работа 2 Разработка и отладка алгоритмов и программ с использованием указателей Лабораторная работа 2 Разработка и отладка алгоритмов и программ с использованием указателей 1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков работы с указателями. 2. ОСНОВНЫЕ ПОНЯТИЯ Указатель это переменная,

Подробнее

Язык программирования Си

Язык программирования Си Язык программирования Си Бикулов Д.А., Иваницкая Н.В., Иванов А.П. Семинар 6. Указатели. Передача параметра в функцию по указателю. Функции работы с динамической памятью. Динамические массивы. Указатель

Подробнее

Распределение памяти

Распределение памяти Распределение памяти Распределение памяти - это процесс, в результате которого отдельным элементам исходной программы ставятся в соответствие адрес, размер и атрибуты области памяти, необходимой для размещения

Подробнее

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы ООП. С++. Вопросы для проверки и закрепления знаний. 1. Проанализируйте ранее разработанные Вами программы и ответьте на вопрос: в каких из них наблюдается слабая связь между структурой данных и функционированием

Подробнее

Объявление функций в С/С++

Объявление функций в С/С++ Объявление функций в С/С++ Описание функций в отдельных файлах В С++ существует возможность поместить объявления функций в отдельный файл, тогда необходимо будет подключать файл с функциями, как в случае

Подробнее

ЛАБОРАТОРНАЯ РАБОТА 29 Создание приложения с разветвленным меню. Динамические массивы

ЛАБОРАТОРНАЯ РАБОТА 29 Создание приложения с разветвленным меню. Динамические массивы ЛАБОРАТОРНАЯ РАБОТА 29 Создание приложения с разветвленным меню. Динамические массивы Цели: научиться применять указатели; научиться работать с динамическими массивами; закрепить умение по обработке ошибок;

Подробнее

ЛЕКЦИЯ 5 ДИНАМИЧЕСКИЕ МАССИВЫ И ПРИМЕРЫ РАБОТЫ С УКАЗАТЕЛЯМИ

ЛЕКЦИЯ 5 ДИНАМИЧЕСКИЕ МАССИВЫ И ПРИМЕРЫ РАБОТЫ С УКАЗАТЕЛЯМИ ЛЕКЦИЯ 5 ДИНАМИЧЕСКИЕ МАССИВЫ И ПРИМЕРЫ РАБОТЫ С УКАЗАТЕЛЯМИ 1. Функция суммирования элементов массива 1.1. Реализация функции суммирования без использования указателей Имеется массив a из 5 элементов.

Подробнее

Функции ref out определении вызове Main()

Функции ref out определении вызове Main() Функции Функции представляют собой блоки кода, позволяющие выполнять одни и те же операции над различными значениями данных. Функции определяются один раз и могут вызываться из любой точки приложения.

Подробнее

Лекция 12. Динамические структуры данных

Лекция 12. Динамические структуры данных Лекция 12. Динамические структуры данных Понятие динамических структур данных Функции выделения/освобождения памяти Динамический массив Стандартные контейнеры Операции над контейнерами 1 Понятие динамических

Подробнее

Тема 14. Динамическая память и указатели.

Тема 14. Динамическая память и указатели. Тема 14. Динамическая память и указатели. 14.1. Динамическая память Большинство элементов программы в программировании в Object Pascal подразделяются на динамические и статические. Статические элементы,

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 13

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 13 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017 Лекция 13 1 Схема раздельной компиляции Исходная программа file1.c file2.c file3.c 1 Препроцессор 1 Препроцессор 1 Препроцессор 2 Компилятор

Подробнее

Лекция 1. Динамические массивы и некоторые структуры данных.

Лекция 1. Динамические массивы и некоторые структуры данных. Лекция 1. Динамические массивы и некоторые структуры данных. План лекции Массивы Динамические массивы в С Динамические массивы в С++ Вектор Стек и Очередь и Дек и 2 Массивы

Подробнее

Динамическое выделение памяти и исключения в С++

Динамическое выделение памяти и исключения в С++ Лабораторная работа 4 Динамическое выделение памяти и исключения в С++ Цель работы: 1) изучить менеджер памяти С++ 2) изучить различные способы обработки исключений; 3) получить практические навыки программирования

Подробнее

Управление памятью в языке C

Управление памятью в языке C Управление памятью в языке C Способы управления памятью: 1 Статические переменные (static) создаются и существуют на протяжении всего времени выполнения программы 2 Автоматические переменные (auto) создаются

Подробнее

МГТУ МИРЭА. КУРСОВОЙ ПРОЕКТ по дисциплине «Процедурное программирование»

МГТУ МИРЭА. КУРСОВОЙ ПРОЕКТ по дисциплине «Процедурное программирование» МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Московский государственный технический университет радиотехники, электроники и

Подробнее

Лекция 5. Система поддержки времени исполнения (Run-time system, RTS)

Лекция 5. Система поддержки времени исполнения (Run-time system, RTS) Лекция 5 Система поддержки времени исполнения (Run-time system, RTS) Содержание Что такое RTS Определение и примеры RTфункций Общие принципы проектирования и оптимизации RTS Механизмы управления памятью

Подробнее

ЛЕКЦИЯ 8 СТРУКТУРЫ ДАННЫХ. СТЕК

ЛЕКЦИЯ 8 СТРУКТУРЫ ДАННЫХ. СТЕК ЛЕКЦИЯ 8 СТРУКТУРЫ ДАННЫХ. СТЕК На этой лекции речь пойдёт о структурах данных. Теперь, когда синтаксис языка хорошо изучен, можно приступать к более сложным вещам. Задача Дана строка, состоящая из открывающих

Подробнее

Лекция 1. Использование динамической памяти

Лекция 1. Использование динамической памяти Название Лекция 1. Использование динамической памяти Проектирование ПО на C ++ 25 сентября 2010 г. Лекция 1 1 / 13 Виды памяти в программе на C ++ Виды памяти Виды динамической памяти Название Хранимые

Подробнее

Вопросы для самопроверки

Вопросы для самопроверки Вопросы для самопроверки Программирование на языке С 11 ноября 2014 г. Лекция 1. Вводная 1. Какие существуют аспекты разработки ПО? Подходы к разработке? 2. Какие признаки характеризуют любительский подход?

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016. Лекция 4

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016. Лекция 4 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016 Лекция 4 1 Нормальные алгоритмы Маркова Определение нормального алгоритма Маркова (НАМ) V алфавит основных символов V алфавит маркеров σ, σ

Подробнее

1981г. - MDA (Monochrome Display Adapter) для IBM PC 1996 г. - 3dfx Voodoo - первые графические ускорители 2000 г. - DirectX 8.0 и первые шейдеры с

1981г. - MDA (Monochrome Display Adapter) для IBM PC 1996 г. - 3dfx Voodoo - первые графические ускорители 2000 г. - DirectX 8.0 и первые шейдеры с Введение в CUDA 1981г. - MDA (Monochrome Display Adapter) для IBM PC 1996 г. - 3dfx Voodoo - первые графические ускорители 2000 г. - DirectX 8.0 и первые шейдеры с аппаратной поддержкой 2004 г. - OpenGL

Подробнее

Введение в программирование Урок 9: Указатели и массивы

Введение в программирование Урок 9: Указатели и массивы Введение в программирование Урок 9: Указатели и массивы 1 Введение: массив как тип Рассмотрим два следующих определения: int a[5], b[6]; Каков тип a и b? Мы ожидаем, что типом будет 'массив int-ов', т.е.

Подробнее

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы.

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. 1. Статическая (static) переменная класса Добавим в определение класса статическую переменную: private: // double x;

Подробнее

Параллельные технологии, информационная поддержка 413 НОВЫЙ ПОДХОД К БЫСТРОМУ ВЫДЕЛЕНИЮ ПАМЯТИ В ПРОГРАММАХ НА ЯЗЫКЕ C++

Параллельные технологии, информационная поддержка 413 НОВЫЙ ПОДХОД К БЫСТРОМУ ВЫДЕЛЕНИЮ ПАМЯТИ В ПРОГРАММАХ НА ЯЗЫКЕ C++ Параллельные технологии, информационная поддержка 413 НОВЫЙ ПОДХОД К БЫСТРОМУ ВЫДЕЛЕНИЮ ПАМЯТИ В ПРОГРАММАХ НА ЯЗЫКЕ C++ Веретенников А.Б. Управление выделением динамической памяти является одной из ключевых

Подробнее

4. Понятие класса. Программа 7. Класс Box

4. Понятие класса. Программа 7. Класс Box 4. Понятие класса Класс определяет новый тип данных, используя который можно определять переменные этого типа, которые называются объектами или экземплярами класса. Объявление класса имеет вид: class classname

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2017/2018. Лекция 23

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2017/2018. Лекция 23 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2017/2018 Лекция 23 1 Алгоритмы перебора множеств Перестановка некоторого набора элементов это упорядоченная последовательность из этих элементов. Например,

Подробнее

Программирование в C++ Преподаватель Колотова Людмила Павловна

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 4-го занятия по практике Работа с функциями. Простые и библиотечные функции Передача аргументов в функцию Значение, возвращаемое

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 8

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 8 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017 Лекция 8 1 Указатели & - операция адресации * - операция разыменования int a = 1; int *p; p = &a; *p = 2; printf ("Значение переменной a = %d\n",

Подробнее

Функции. Функция поименнованная часть программы, которая может вызываться из других частей программы неограниченное число раз.

Функции. Функция поименнованная часть программы, которая может вызываться из других частей программы неограниченное число раз. Функции Функция поименнованная часть программы, которая может вызываться из других частей программы неограниченное число раз. Это отдельная подпрограмма, управляемая входами и возвращающая что-то на выходе.

Подробнее

Алгоритмизация и программирование

Алгоритмизация и программирование Алгоритмизация и программирование Программирование на С/С++ (ч.12 указатели) Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Указатели Указатель переменная, значением

Подробнее

Алгоритмы, структуры данных и прогр-ие_рус_3рк_зим_шайдуллина_ис(2к3,4г очн)

Алгоритмы, структуры данных и прогр-ие_рус_3рк_зим_шайдуллина_ис(2к3,4г очн) Алгоритмы, структуры данных и прогр-ие_рус_3рк_зим_шайдуллина_ис(2к3,4г очн) Автор теста: Шайдуллина Динара Ташеновна Название курса: Алгоритмы, структуры данных и программирование Название теста: Алгоритмы,

Подробнее

МАССИВЫ В ЯЗЫКЕ C# тип [] имя; new тип [размер];

МАССИВЫ В ЯЗЫКЕ C# тип [] имя; new тип [размер]; МАССИВЫ В ЯЗЫКЕ C# Массив - это составной объект, состоящий из элементов одного типа. Простейшей разновидностью массива является одномерный массив, который можно рассматривать как информационную модель

Подробнее

Программная модель CUDA

Программная модель CUDA Программная модель CUDA Храмченков Э.М. 1,2 1. Казанский федеральный университет 2. НИИСИ РАН CUDA CUDA - Compute Unified Device Architecture CUDA CUDA - Compute Unified Device Architecture Программная

Подробнее

Структуры и алгоритмы обработки данных (СиАОД) Курс ведут: Лобанов Александр Анатольевич Шмелева Дарья Викторовна

Структуры и алгоритмы обработки данных (СиАОД) Курс ведут: Лобанов Александр Анатольевич Шмелева Дарья Викторовна Структуры и алгоритмы обработки данных (СиАОД) Курс ведут: Лобанов Александр Анатольевич Шмелева Дарья Викторовна Рекомендуемая литература Материал курса опирается на знания студентов, полученные ранее

Подробнее

Задание 1. Ваша программа должна выполнять следующие действия:

Задание 1. Ваша программа должна выполнять следующие действия: Задание 1. Цель: Конструирование пользовательского типа данных структур, создание массива структур в динамической памяти, ввод исходных данных из файла, запись результатов работы в файл. Задание: Создать

Подробнее

Вводная лекция. Дисциплины "ЯЗЫКИ ПРОГРАММИРОВАНИЯ" "ПРОГРАММИРОВАНИЕ" Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич

Вводная лекция. Дисциплины ЯЗЫКИ ПРОГРАММИРОВАНИЯ ПРОГРАММИРОВАНИЕ Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Дисциплины "ЯЗЫКИ ПРОГРАММИРОВАНИЯ" "ПРОГРАММИРОВАНИЕ" Вводная лекция Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич Кафедра вычислительных

Подробнее

Какие типы вы бы использовали?

Какие типы вы бы использовали? C++ - занятие 2 1 Какие типы вы бы использовали? age // возраст salary // зарплата за месяц (в рублях) grade // средний балл char short long int unsigned long long float double Я бы написал так: int age;

Подробнее

Лекции по курсу Алгоритмы и алгоритмические языки, 1 курс, 1 поток, 2010/2011 уч.год.

Лекции по курсу Алгоритмы и алгоритмические языки, 1 курс, 1 поток, 2010/2011 уч.год. Лекция 8 Массивы и указатели 8.1. Указатели 8.1.1. Организация памяти в компьютере массив последовательно пронумерованных (адресуемых) ячеек, которые можно обрабатывать по отдельности, либо группами. Указатель

Подробнее

Управления памятью в языке C

Управления памятью в языке C Управления памятью в языке C Способы управления памятью: 1 Статические переменные (static) создаются и существуют на протяжении всего времени выполнения программы 2 Автоматические переменные (auto) создаются

Подробнее

Лекция 18 Тема: Двумерные динамические массивы

Лекция 18 Тема: Двумерные динамические массивы Лекция 18 Тема: Двумерные динамические массивы Под двумерным массивом понимается одномерный массив, элементами которого являются одномерные массивы. Другими словами, это набор однотипных данных, имеющий

Подробнее

Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам

Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам Шаблоны 2013 Шаблоны ( template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию)

Подробнее

РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА по дисциплине «Системное программирование»

РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА по дисциплине «Системное программирование» МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ «МАТИ» РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ им. К. Э. ЦИОЛКОВСКОГО Кафедра «Моделирование систем и информационные технологии» «УТВЕРЖДАю»

Подробнее

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

Лабораторная работа 1 ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем ПРОГРАММИРОВАНИЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лабораторная работа 1 Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич Кафедра вычислительных систем

Подробнее

Лекция 3. Операции и функции свободной памяти

Лекция 3. Операции и функции свободной памяти Название Лекция 3. и функции свободной памяти Проектирование ПО на C ++ 25 сентября 2010 г. Лекция 3 1 / 33 Объявления функций, использующих исключения Реализация функций выделения памяти Реализация обработчика

Подробнее

2016 МГУ/ВМК/СП. Лекция 0xC. 19 марта

2016 МГУ/ВМК/СП. Лекция 0xC. 19 марта Лекция 0xC 19 марта Далее Функции Соглашение CDECL Рекурсия Различные соглашения о вызове функций cdecl/stdcall/fastcall, отказ от указателя фрейма Соглашение вызова для x86-64 Что происходит в Си-программе

Подробнее

NVIDIA CUDA И OPENACC ЛЕКЦИЯ 2. Перепѐлкин Евгений

NVIDIA CUDA И OPENACC ЛЕКЦИЯ 2. Перепѐлкин Евгений NVIDIA CUDA И OPENACC ЛЕКЦИЯ 2 Перепѐлкин Евгений СОДЕРЖАНИЕ Лекция 2 Иерархия памяти на GPU Регистры и локальная память Глобальная память Шаблон работы с глобальной памятью Использование pinned-памяти

Подробнее

Операционная система Linux. Лекция 12

Операционная система Linux. Лекция 12 Операционная система Linux Лекция 12 1 Компиляция нескольких файлов Раздельная компиляция трансляция частей программы по отдельности с последующим объединением их компоновщиком в единый загрузочный модуль.

Подробнее

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ»

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ» ВАРІАНТ 1 1. Операторы описания типов данных, констант и пользовательских типов данных в системах программирования на языке BASIC и FORTRAN. 2. Написать программу поиска среднего значения элементов заданного

Подробнее

Алгоритмизация и программирование Программирование на С/С++ (ч.7 функции)

Алгоритмизация и программирование Программирование на С/С++ (ч.7 функции) Алгоритмизация и программирование Программирование на С/С++ (ч.7 функции) Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Функции в С/С++ Опытные программисты знают,

Подробнее

ПРАКТИЧЕСКАЯ РАБОТА 4. ОДНОМЕРЫЕ И МНОГОМЕРНЫЕ МАССИВЫ НА С Организация массива Память под массив может выделяться автоматически или

ПРАКТИЧЕСКАЯ РАБОТА 4. ОДНОМЕРЫЕ И МНОГОМЕРНЫЕ МАССИВЫ НА С Организация массива Память под массив может выделяться автоматически или ПРАКТИЧЕСКАЯ РАБОТА 4. ОДНОМЕРЫЕ И МНОГОМЕРНЫЕ МАССИВЫ НА С++ 4.1. Организация массива Память под массив может выделяться автоматически или динамически. Автоматическое выделение памяти используют, когда

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2017/2018. Лекция 12

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2017/2018. Лекция 12 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2017/2018 Лекция 12 1 Динамическое распределение памяти Функция void *malloc (size_t size); выделяет область памяти размером size байтов и возвращает

Подробнее

Эффективность различных конструкций языка C++ (по мотивам книги «Optimizing software in C++» by Agner Fog)

Эффективность различных конструкций языка C++ (по мотивам книги «Optimizing software in C++» by Agner Fog) Эффективность различных конструкций языка C++ (по мотивам книги «Optimizing software in C++» by Agner Fog) Различные способы хранения переменных Переменные и объекты хранятся в различных частях памяти

Подробнее

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН. Казахский национальный технический университет имени К.И.Сатпаева

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН. Казахский национальный технический университет имени К.И.Сатпаева МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН Казахский национальный технический университет имени К.И.Сатпаева Институт информационных и телекоммуникационных технологий Кафедра информационных

Подробнее

Иерархия памяти. Храмченков Э.М. 1,2. 1. Казанский федеральный университет 2. НИИСИ РАН. Computer Science клуб, Казань, , 2015 г.

Иерархия памяти. Храмченков Э.М. 1,2. 1. Казанский федеральный университет 2. НИИСИ РАН. Computer Science клуб, Казань, , 2015 г. Иерархия памяти Храмченков Э.М. 1,2 1. Казанский федеральный университет 2. НИИСИ РАН Память GPU Организация памяти и работы с ней на CPU и GPU существенно отличаются Память GPU Организация памяти и работы

Подробнее

1. Определение пространства имен 2. Анонимные пространства имен

1. Определение пространства имен 2. Анонимные пространства имен Лекция 16 Тема: Пространства имен План: 1. Определение пространства имен 2. Анонимные пространства имен 3. Стандартное пространство имен 4. Оператор разрешения области видимости 5. Объявление using 6.

Подробнее

ГОУ ВПО Российско-Армянский (Славянский) университет. Ученое звание, ученая степень, Ф.И.О ЕРЕВАН

ГОУ ВПО Российско-Армянский (Славянский) университет. Ученое звание, ученая степень, Ф.И.О ЕРЕВАН ГОУ ВПО РОССИЙСКО-АРМЯНСКИЙ (СЛАВЯНСКИЙ) УНИВЕРСИТЕТ Составлен в соответствии с государственными требованиями к минимуму содержания и уровню подготовки выпускников по направлению ПМИ и Положением «Об УМКД

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2013/2014. Лекция 14

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2013/2014. Лекция 14 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2013/2014 Лекция 14 1 Динамические структуры данных Стек (stack) это динамическая последовательность элементов, количество которых изменяется, причем

Подробнее

Модель программирования CUDA

Модель программирования CUDA Центр микро- и наномасштабной динамики дисперсных систем Модель программирования CUDA Марьин Д. Ф. Уфа, 2011г. 1 Архитектура Tesla 10 Архитектура Tesla 20 Вычислительная конфигурация Общая архитектура

Подробнее

UNIX. Лекция 4 UNIX. Л.4 1

UNIX. Лекция 4 UNIX. Л.4 1 UNIX Лекция 4 UNIX. Л.4 1 ПРОЦЕССЫ ОС UNIX Процесс - это задание в ходе его выполнения. П - образ программы, включающий отображение в памяти исполняемого файла, полученного в ходе компиляции, сегментов

Подробнее

СибГУТИ Кафедра ВС Программирование на языке высокого уровня (ПЯВУ), семестр учебный год Поляков А.Ю.

СибГУТИ Кафедра ВС Программирование на языке высокого уровня (ПЯВУ), семестр учебный год Поляков А.Ю. СибГУТИ Кафедра ВС Программирование на языке высокого уровня (ПЯВУ), семестр 1 2009 2010 учебный год Поляков А.Ю. Лабораторная работа 1. Среда программирования ОС Linux. Цель работы: Познакомиться с программным

Подробнее

Введение в ООП на C++: классы, объекты, поля, методы, операторы

Введение в ООП на C++: классы, объекты, поля, методы, операторы Введение в ООП на C++: классы, объекты, поля, методы, операторы А. Г. Фенстер, fenster@fenster.name 17 сентября 2010 г. Конспект семинара 1 по объектно-ориентированному программированию. Пожалуйста, не

Подробнее

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ "Последовательные программы"

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ Последовательные программы ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем ПРОГРАММИРОВАНИЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ ПРАКТИЧЕСКОЕ ЗАНЯТИЕ "Последовательные программы" Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич

Подробнее

Операционные системы:

Операционные системы: Нижегородский государственный университет им. Н.И.Лобачевского Факультет Вычислительной математики и кибернетики Операционные системы: аспекты параллелизма Процессы и потоки Линёв А.В. Тема обсуждения

Подробнее

Проектирование больших систем на C++

Проектирование больших систем на C++ Проектирование больших систем на C++ Коноводов В. А. кафедра математической кибернетики ВМК Лекция 6 13.10.2017 Операторы new и delete Зачем они нужны? #include class C { public: int arr[100];

Подробнее

Матрицы. Шокуров Антон В. 8 апреля 2017 г. Версия: 0.10

Матрицы. Шокуров Антон В.  8 апреля 2017 г. Версия: 0.10 Матрицы Шокуров Антон В. shokurov.anton.v@yandex.ru 8 апреля 2017 г. Версия: 0.10 Аннотация Показаны различные традиционные способы задания матриц, как двумерных, так и многомерных. Цель. Научится работать

Подробнее

Язык программирования Си

Язык программирования Си Язык программирования Си Бикулов Д.А., Иваницкая Н.В., Иванов А.П. Семинар 4. Функции, передача параметров по значению. Рекурсия. Глобальные и статические переменные, правила видимости переменных. Модульный

Подробнее

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 17

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017. Лекция 17 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2016/2017 Лекция 17 1 Постановка задачи Сортировка это упорядочение наборов однотипных данных, для которых определено отношение линейного порядка (например,

Подробнее

Стеки и очереди. Лекция 3. Курносов Михаил Георгиевич

Стеки и очереди. Лекция 3. Курносов Михаил Георгиевич Лекция 3 Стеки и очереди Курносов Михаил Георгиевич к.т.н. доцент Кафедры вычислительных систем Сибирский государственный университет телекоммуникаций и информатики http://www.mkurnosov.net/teaching Стек

Подробнее

Лекция 4: Стек. Очередь. КурносовМихаил Георгиевич к.т.н. доцент Кафедры вычислительных систем Сибирский государственный университет телекоммуникаций и информатики http://www.mkurnosov.net Контроль 1.

Подробнее

FreeRTOS операционная система для микроконтроллеров

FreeRTOS операционная система для микроконтроллеров микроконтроллеры компоненты 97 Продолжение. Начало в 2`2011 FreeRTOS операционная система для микроконтроллеров Андрей Курниц kurnits@stim.by В этой статье будет продолжено изучение FreeRTOS операционной

Подробнее

Методы взаимодействия прикладного приложения и ядра ОС

Методы взаимодействия прикладного приложения и ядра ОС Санкт Петербургский Государственный Университет Математико механический факультет Кафедра системного программирования Методы взаимодействия прикладного приложения и ядра ОС Курсовая работа студента 344

Подробнее

2012 МГУ/ВМиК/СП. Лекция марта

2012 МГУ/ВМиК/СП. Лекция марта Лекция 12 21 марта Промежуточные итоги Типы данных языка Си: скалярные типы, составные типы Вычисление выражений Управляющие операторы Машинные типы данных Арифметические, логические, битовые команды Условная

Подробнее