ЛЕКЦИЯ 4 МАССИВЫ И УКАЗАТЕЛИ

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "ЛЕКЦИЯ 4 МАССИВЫ И УКАЗАТЕЛИ"

Транскрипт

1 ЛЕКЦИЯ 4 МАССИВЫ И УКАЗАТЕЛИ 1. Массивы Массив это набор однородных элементов фиксированной длины. Память для массивов выделяется одним куском. При инициализации массива записывается тип элементов массива, его имя и количество элементов. Пример int a[10]. В языке С массивы измеряются с нуля. Работа с массивами чаще всего осуществляется через циклы. Рассмотрим пару примеров присваивания элементам массивов нулевых значений. int a [ 3 ] ; for ( i =0; i <3; i ++) a [ i ]=0; int m[ 3 ] [ 4 ] ; for ( i =0; i <3; i ++) for ( j =0; j <4; j++) m[ i ] [ j ]=0; При работе с массивами важно разделять понятия индекса и значения элемента. Индекс это номер элемента массива. Индекс пробегает значения от 0 до N-1, где N размер массива. Каждому индексу соответствует значение определенного элемента. Рассмотрим многомерные массивы. Пример инициализации двумерного массива был представлен в предыдущем фрагменте программного кода. В данном случае двумерный массив можно представить как поле элементов, которое пробегают два счетчика. В рассмотренном случае это счетчик i, пробегающий по строкам поля и счетчик j, пробегающий по его столбцам. Аналогичным образом трехмерный массив можно представить как распределение элементов в каком-либо трехмерном объекте, например, в кубе, а четырехмерный как распространение ударной волны по времени, т. е. фиксируются значения по трехмерным координатам волны и добавляется счетчик времени. Таких значений, как и самих размерностей массивов, может быть огромное количество.

2 Явная инициализация элементов массива Значения массива можно инициализировать, указав его элементы в фигурных скобках, к примеру, следующим образом: int a [ 3 ] = { 2 3, 7, ; Если количество элементов в квадратных скобках не указано, то при аналогичной инициализации компилятор сам догадается о том, что в массиве будет находиться столько элементов, сколько находится в фигурных скобках. Аналогичным образом можно инициализировать массив размером 4: int a [ 4 ] = { 2 3, 7, ; Тогда последний элемент инициализируется либо «мусором», если его инициализация происходит в локальной памяти, либо нулевым значением, если инициализация происходит или в статической, или в глобальной памяти. А в случае, если тремя числами будет инициализироваться массив размером 2 (a[2]), то будет ошибка компиляции. При инициализации массива элементов типа char необходимо не забывать после прописывания всех элементов массива поставить символ окончания строки: char s t r [ ] = { H, e, l, l, o, \0 ; Однако данный массив можно инициализировать проще следующим образом: char s t r [ ] = H ello ; Говоря о строковых массивах, необходимо упомянуть о функции strlen, считывающей количество символов в строке. К примеру, подсчет символов в строке str будет выглядеть следующим образом: int x = s t r l e n ( s t r ) ; 2. Указатели Указатель это переменная, значением которой является индекс ячейки памяти, в которой хранится определенный элемент. В основном указатели используются для экономии памяти и оптимизации работы программ. Передавая указатель на переменную в функцию, программа не делает копию этой переменной, а редактирует ее напрямую. Это особенно важно в случаях, когда результатом функции является не одно число, а несколько к примеру, как в функции нормализации нескольких координат точки. Также указатели используются для динамического управления памятью. В таких случаях в динамической памяти выделяется место для их записи, и поэтому оказывается возможным по необходимости изменять размер массивов. Основные функции указателей в языке C это: 1. Передача переменной так, чтобы можно было изменить ее значение: s c a n f ( %d,&x ) ; 2. Работа с динамическими указателями размер массива определяется по време-

3 3 ни выполнения функции, а не компиляции, а также может изменяться во время выполнения. 3. Передача имени функции как аргумента: q s o r t ( a, 10, sizeof ( int ), cmp ) ; В данном случае для удобной сортировки всего массива с помощью стандартной функции qsort в нее передается массив, количество его элементов, ссылка на битовый адрес начала массива и заранее написанная функция сравнения двух элементов Вывод на печать различных аргументов функции инкрементирования Проанализируем следующий программный код. Listing 4.1: Функция инкрементирования с инициализацией локальной переменной. void i n c r ( int x ) { x++; int main ( ) { int i, x=1; for ( i =0; i <3; i ++) { i n c r ( x ) ; p r i n t f ( x=%d\ n, x ) ; return 0 ; Переменная x в main изначально инициализирована единицей. 3 раза вызываем функцию incr и после вызова функции печатаем x. Т. к. x инициализируется локально в main, то область его видимости только эта функция. Когда вызывается incr(x), то управление передается в эту функцию и создается своя переменная x, которая инициализируется значением аргумента при вызове. Значит, вызовется incr(1), а затем полученное значение разрушится, т. к. тип функции incr void. Итак, при выходе из функции incr идет переход в main, в которой инициализированный единицей x не меняется, и, таким образом, на консоль 3 раза выводится единица Вывод на печать различных аргументов функции инкрементирования в массиве Проанализируем программный код, в котором будет проводиться инкрементирование элементов массива. Listing 4.2: Функция инкрементирования с инициализацией локальной переменной. int a [ 1 0 ] = {2,7, 3,4,8; void i n c r ( int j ) {

4 4 a [ j ]++; int main ( ) { int i, j =1; for ( i =0; i <3; i ++) { i n c r ( j ) ; p r i n t f ( a[%d]=%d\ n, j, a [ j ] ) ; return 0 ; Внизу в main j проинициализирована единицей. Последние 5 элементов массива a инициализированы нулем, т. к. массив инициализирован глобально. Рассмотрим работу функции incr в данном случае. Изменение j в функции incr на изменение j в функции main никак влиять не будет. Происходит передача индекса в массиве данное действие заложено в указателях. У каждого байта есть свой адрес, двух байтов с одинаковым адресом не бывает. Если имеется номер байта, то можно сказать, где он лежит в памяти. Однако используемые переменные чаще всего занимают более 1 байта, кроме типа char элементы данного типа занимают ровно 1 байт. Для лучшего понимания работы указателей рассмотрим некоторые простые операции с ними. Пусть инициализируются 2 переменные и 1 массив: int x=1,y=2, z [ 1 0 ] ; Далее заводим новую переменную указатель int *ip, который будет означать область памяти, в которой располагается переменная x. Допустим, что переменная x лежит по 100-му адресу это первый байт, в котором лежит переменная (как говорилось ранее, под одну переменную может выделяться более одного байта), поэтому значение ip равно 100. Существует операция взятия адреса переменной, она обозначается с помощью символа &. При записи ip=&x происходит присвоение адреса переменной ip переменной x теперь переменная ip указывает на x. Обратная операция взятие значения по адресу переменной называется разыменование и записывается как y = *ip. Переменная *ip в данном случае имеет тип и значение взятой переменной x. Далее разберем действие *ip=0. Переменная ip находится по адресу, начиная с 100-го байта. Соответственно, по этому адресу передается значение 0. При работе с массивами присвоение адреса в массиве выглядит следующим образом: ip=&z[0]. Запись индекса можно опускать, т. к. массив последовательно занимает память, начиная как раз с первого элемента. Константа NULL для определенного адреса означает, что данный адрес не существует. При инициализации указателей важно ставить звездочку рядом со всеми переменными, которые планируется использовать в качестве указателей Передача в функцию адреса переменной Рассмотрим следующий программный код.

5 5 Listing 4.3: Передача адреса в функцию. void i n c r ( int *px ) { (* px)++; int main ( ) { int i, x=1; for ( i =0; i <3; i ++){ i n c r (&x ) ; p r i n t f ( x=%d\n, x ) ; return 0 ; В данном случае трижды происходит вызов функции incr и печатается x. В языке C в функциях аргументы всегда передаются по значению. В функции main есть переменная x, которая инициализируется единицей. Допустим, она лежит по 200-му адресу. Когда вызывается функция incr от &x, то в incr заводится переменная *px указатель на x и инициализируется значением при вызове, а значение при вызове это адрес переменной, равный 200. Далее происходит разыменование переменной и увеличение ее на единицу. Начальное значение переменной равно 1, поэтому повторение функции incr в теле main даст результаты 1, 2 и Ошибки при использовании указателей Во-первых, адрес переменной зачастую инициализируется как NULL, а затем проводятся попытки положить число по этому адресу. Данный подход неверен, т. к. подразумевается, что элемент в указателем NULL не имеет определенного адреса. Во-вторых, зачастую встречается ошибка некорректного использования указателей при выходе из функции. Рассмотрим функцию, осуществляющую переворот символьного массива функцию palindrom. Listing 4.4: Функция palindrom. char * palindrom ( char a [ ], int n ) { char b [ ], int i ; for ( i =0; i <n ; i ++){ b [ i ] = a [ n i 1]; return b ; В данном случае выполняется переворот первых n элементов массива. Для этого в цикле прописывается присваивание элементов исходного массива новому массиву в обратном порядке. Возвращаемым элементом будет являться адрес на массив b, т. к. по определению данной функции она имеет результат-указатель. Проблема заключается в том, что все переменные в функции локальные, и поэтому под них выделяется память, которая

6 6 после завершения функции сразу уничтожится. Соответственно, сославшись на адрес функции, можно сразу получить тот же кусок памяти, однако он может быть заполнен уже абсолютно другими элементами, т. к. используемые локальные переменные в функции уже уничтожились. Рассмотрим следующий фрагмент программного кода. int a [ 1 0 ] ; int *p ; p=&(a [ 1 0 ] ) ; p=a ; a=p ; //некорректная запись Listing 4.5: Копирование массивов. В данном случае происходит копирование массива a в массив p с помощью указателей. Обратная операция присваивания a=p была бы невозможна, т. к. p указывает на начало a, а в данном случае a это адрес массива, а он является неизменяемым. Можно сделать присваивание какого-либо из массива a, а обратную операцию провести нельзя. Рассмотрим копирование массивов подробнее. Пусть имеется 2 массива: int a [ 3 ] = { 1 0, 1 5, 6 ; int b [ 3 ] ; Было бы очень удобно выполнить копирование массива следующей командой: b=a. Однако возможен случай, что будут рассматриваться массивы разного размера и тогда элементы или некуда будет записывать, что вызовет ошибку, или в массиве останутся пустые места. Поэтому во избежание проблем данный функционал реализован не был. Однако проблему копирования можно решить либо с помощью функции memcpy (memory copy), речь о которой пойдет в дальнейшем, либо с помощью проведения копирования элементов массива в цикле Адресная арифметика Адресная арифметика подразумевает операции сложения или вычитания адресов переменных с целочисленными аргументами с целью упрощенного обращения к необходимым адресам памяти. Рассмотрим пример применения целочисленной арифметики. int *a [ 1 0 ] ; int *p ; p = &a [ 0 ] ; *( p+3) = a [ 3 ] ; //получение элемента Если p указывает на начало массива a, то можно быстро обратиться к любому элементу массива, например, к третьему. Допустим, переменная типа int лежит в 4 байтах, а рассматриваемый массив начинается с 100-го байта. Тогда адресация массива будет выглядеть следующим образом: Размер памяти для какого-либо элемента определяется с помощью ключевого слова sizeof. Т. е. размер массива a в байтах получается следующим образом: sizeof(a). Если бы адресной арифметики не было, то доступ к различным элементам, к примеру, к третьему элементу массива a, выглядел бы следующим образом:

7 7 Рис. 4.1 *( p + 3* sizeof ( int ) ) = 17 В данном случае был произведен доступ к третьему элементу и его разыменование. Однако данный код плохо читаем. Поскольку в языке C разрешена адресная арифметика, то функция sizeof(int) может опускаться. Также в языке C разрешено вешать указатель на указатель, т. е. допустима запись int **ipp = &ip, где ip указатель на какой-либо элемент x. Итак, возможные операции в адресной арифметике: 1. Адрес + целое = адрес, 2. Адрес - адрес = целое, 3. Адрес + адрес //ошибка, 4. Адрес «сравнить» адрес Печать символьного массива Рассмотрим программный код: Listing 4.6: Печать строкового массива в бесконечном цикле for ( i =0; ; i =( i +1)%4) p r i n t f ( \b%c, / \ [ i ] ) ; Разберем сначала функцию printf. В функции printf запись означает backspace, т. е. откат на один символ назад; %c печать символа. В кавычках прописаны 4 печатаемых символа. Допустим, массив начинался с адреса 100, тогда следующие элементы массива будут иметь адреса 101, 102 и 103. Тип строковой константы char * указатель на char. Если завести переменную char *p, содержащую печатаемый символьный массив, то в переменной p будет лежать число 100. С помощью аналогичных друг другу записей p[i] или *(p+i) можно продвигаться по массиву и записывать соответствующие значения символов. Далее рассмотрим работу счетчика i в цикле for: i = (i+1)%4 данная запись означает увеличение счетчика на 1 и взятие полученного числа по модулю 4. Таким образом, рассматривая печать массива из 4 символов, цикл напечатает данные символы, а затем при i=4 получится, что 4%4=0, и цикл начнет свою работу с i=0. Т. е. получится бесконечный цикл.

8 8 3. Строковые константы В данном разделе будет разобрана разница между обычным хранением массива char arr[] = "Word" из 5 элементов (+ конечный элемент символьного массива) и указателем на такой же массив, char *str[] = "Word". Массиву arr нельзя присваивать другие элементы, к примеру, arr = "Hello", т. к. массив уже занят другими элементами. Функция взятия нулевого элемента массива arr[0]='w' будет работать, т. к. нарушения целостности массива здесь нет. Обычно строковые константы ложатся в немодифицированную область памяти, которую можно только читать. Поэтому операция str[0]='w', скорее всего, работать не будет, т. к. при работе с указателями данная ситуация будет восприниматься как попытка модификации используемой памяти, чего делать нельзя. Рассмотрим функцию нахождения элементов в строке. Listing 4.7: Функция нахождения элементов в массиве без использования указателей int s t r l e n ( char s t r [ 1 0 ] ) { int n ; for ( n=0; s t r [ n ] = \0 ; n++) ; return n ; Для того чтобы не зайти за границы массива char, установим его размер равным 10. Условием окончания цикла будет символ окончания строки. Тогда значение счетчика и будет ответом задачи. Рассмотрим решение данной задачи с использованием указателей. Listing 4.8: Функция нахождения элементов в массиве с использованием указателей int s t r l e n ( char * s t r ) { char *p ; for ( p=s t r ; * p = \0 ; p++) ; return p s t r ; Во втором случае аргументом является указатель на массив char, т. е. адрес начала массива. Проводим аналогичную первому случаю операцию поиска значения счетчика. Возвращаемым функцией значением будет являться разность между адресом конца строки и адресом начала. Ответы в обоих случаях будут одинаковыми, т. к. элемент типа char занимает 1 байт.

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

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

Подробнее

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

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

Подробнее

Курс «Алгоритмы и алгоритмические языки» 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",

Подробнее

Одномерные массивы. Лабораторная работа 9

Одномерные массивы. Лабораторная работа 9 Лабораторная работа 9 Одномерные массивы Массивы. Ссылочные типы и null. Часто в программах требуется завести большое количество переменных одного и того же типа. Можно, конечно, написать большое количество

Подробнее

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 имеет своим множеством значений всевозможные адреса памяти,

Подробнее

IDK1031 Основы Click to edit Master title style программирования на языке С. Указатели и адреса. Арифметика указателей.

IDK1031 Основы Click to edit Master title style программирования на языке С. Указатели и адреса. Арифметика указателей. IDK1031 Основы Click to edit Master title style программирования на языке С Указатели и адреса. Арифметика указателей. Указатель Указатель переменная, значением которой является адрес. Указатели делают

Подробнее

В.Л. Тарасов Лекции по программированию на C++

В.Л. Тарасов Лекции по программированию на C++ 60 В.Л. Тарасов Лекции по программированию на C++ Лекция 4 Массивы и вектора Массив представляет собой набор последовательно пронумерованных элементов одного типа. Все элементы массива имеют одно имя,

Подробнее

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

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

Подробнее

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 Структуры Ранее мы рассмотрели методы определения и работы с массивами и перечислимыми типами. Теперь рассмотрим определение и использование структур. Структура в языке Си это объединение

Подробнее

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

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

Подробнее

спецификатор-типа описатель [константное - выражение];

спецификатор-типа описатель [константное - выражение]; Тема : знакомство с С (Си) МАССИВЫ и ФУНКЦИИ, упражнение Содержание: массивы упражнение Массивы Массивы - это группа элементов одинакового типа (double, float, int и т.п.). Из объявления массива компилятор

Подробнее

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

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

Подробнее

А следующая числами по порядку, при этом размер массива определяется автоматически:

А следующая числами по порядку, при этом размер массива определяется автоматически: 1 Одномерные массивы Массив есть средство для объединения некоторого количества однотипных переменных под одним именем, доступных по номеру. Главное достоинство массива по сравнению с отдельными переменными

Подробнее

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

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

Подробнее

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

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 9-го занятия по практике Указатели. Адреса и указатели. Указатель на void Указатели и массивы. Указатели и строки Диаграммы UML

Подробнее

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

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

Подробнее

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

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

Подробнее

Массивы в Java. Лекция 6

Массивы в Java. Лекция 6 Лекция 6 Массивы в Java Массив это конечная последовательность упорядоченных элементов одного типа, доступ к каждому элементу в которой осуществляется по его индексу. Размер или длина массива это общее

Подробнее

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

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

Подробнее

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

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

Подробнее

Компьютерная Академия Шаг Урок 12. Программирование на C. Оглавление

Компьютерная Академия Шаг Урок 12. Программирование на C. Оглавление Оглавление 1. Статическое и динамическое выделение памяти. 2. Указатели. 3. Указатели и массивы. 4. Указатели - аргументы функций. Передача аргументов по указателю. 5. Домашнее задание. 1 Статическое и

Подробнее

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

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

Подробнее

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

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

Подробнее

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ» МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ» Спеціальність 6.040302 Інформатика Дисципліна «Програмування» Підсумкова модульна контрольна

Подробнее

Лекция 9 Опасный код. Общие понятия. Основы использования указателей

Лекция 9 Опасный код. Общие понятия. Основы использования указателей Лекция 9 Опасный код Общие понятия С С# позволяет программистам писать то, что называется "опасный кодом" (unsafe code). Опасный код это код, который не плохо написан, а код, который не выполняется под

Подробнее

Ñîäåðæàíèå Предисловие Предисловие к первому изданию Введение Глава 1. Вводный урок Глава 2. Типы данных, операции и выражения

Ñîäåðæàíèå Предисловие Предисловие к первому изданию Введение Глава 1. Вводный урок Глава 2. Типы данных, операции и выражения Ñîäåðæàíèå Предисловие 11 Предисловие к первому изданию 13 Введение 15 Глава 1. Вводный урок 19 1.1. Первые шаги 19 1.2. Переменные и арифметические выражения 22 1.3. Оператор for 27 1.4. Символические

Подробнее

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

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

Подробнее

2.3. Область действия и время жизни переменных

2.3. Область действия и время жизни переменных 2.1. Строки Строки это последовательности символов, заключенные в кавычки. Символы внутри строк можно представлять их знаками или эскейп-последовательностями, например, abc\tabc\n123\0101\0102.строка символов

Подробнее

1. C-cтроки 1.1. Описание и инициализация строк

1. C-cтроки 1.1. Описание и инициализация строк 1. C-cтроки В C++ имеется два типа строк: встроенный тип, унаследованный от языка C (строки данного типа мы будем называть C-строками), и класс string из стандартной библиотеки C++. Класс string появился

Подробнее

Язык программирования Си. Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания.

Язык программирования Си. Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Язык программирования Си Бикулов Д.А., Иваницкая Н.В., Иванов А.П. Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Зачет проводится в практикуме и состоит из двух частей:

Подробнее

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

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

Подробнее

Средства автоматизации построения трансляторов. LEX генератор лексических анализаторов. YACC генератор синтаксических анализаторов

Средства автоматизации построения трансляторов. LEX генератор лексических анализаторов. YACC генератор синтаксических анализаторов Средства автоматизации построения трансляторов LEX генератор лексических анализаторов YACC генератор синтаксических анализаторов Генерация кода 1) Распределение памяти для данных и команд программы 2)

Подробнее

Использование двумерных массивов в С. Определение двумерного массива Основные приемы обработки статических массивов Некоторые классические алгоритмы

Использование двумерных массивов в С. Определение двумерного массива Основные приемы обработки статических массивов Некоторые классические алгоритмы Использование двумерных массивов в С Определение двумерного массива Основные приемы обработки статических массивов Некоторые классические алгоритмы Объявление двумерного массива Двумерные массивы, как

Подробнее

Содержание. Содержание 7

Содержание. Содержание 7 Содержание Об авторе 15 Благодарность 16 Введение 17 Актуален ли язык программирования C 17 Подход, используемый в данной книге 17 Как работает эта книга 18 Использованные пиктограммы 19 Мысли на бегу

Подробнее

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

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

Подробнее

13. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ

13. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ 13. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ Статическими называются такие данные, которые не меняют свои размеры в течение всего времени своего существования. Регулярный и комбинированный типы языка Pascal это пример

Подробнее

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

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

Подробнее

Урок 4. Циклы и массивы.

Урок 4. Циклы и массивы. Урок 4. Циклы и массивы. О чем урок: циклы while do-while for массивы функции для работы с массивами Смотреть урок: [marafon_4.mp4] Циклы Цикл управляющая конструкция, предназначенная для многократного

Подробнее

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

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

Подробнее

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

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

Подробнее

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Содержание Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Что такое язык программирования?...20 В чем различие между C и C++?.........................................21 Обязательно

Подробнее

«Утверждаю» Заведующий кафедрой /О.И.Наранович/ «29»_ г. Пр. 7

«Утверждаю» Заведующий кафедрой /О.И.Наранович/ «29»_ г. Пр. 7 «Утверждаю» Заведующий кафедрой /О.И.Наранович/ «29»_08 2016 г. Пр. 7 Вопросы к экзамену по дисциплине «Объектно-ориентированное программирование» по специальности «Информационные системы и технологии»

Подробнее

Выражения языка Си. Некоторые операции могут образовывать l-обозначения, другие нет.

Выражения языка Си. Некоторые операции могут образовывать l-обозначения, другие нет. Выражения языка Си А. А. Вылиток 1. Объекты и l-обозначения Объект это область памяти, в которую можно записывать определенную информацию и считывать ее оттуда. l-обозначение это выражение, означающее

Подробнее

Web-разработка на PHP-технологиях Курс лекций и семинаров для студентов, желающих научиться основам Web-разработки на PHP. Осень-Зима 2014.

Web-разработка на PHP-технологиях Курс лекций и семинаров для студентов, желающих научиться основам Web-разработки на PHP. Осень-Зима 2014. Web-разработка на PHP-технологиях Курс лекций и семинаров для студентов, желающих научиться основам Web-разработки на PHP Осень-Зима 2014 Лекция 3 PHP Синтаксис языка Переменные, константы, типы данных

Подробнее

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

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 8-го занятия по практике Строки. Строковые переменные. Считывание строк. Копирование строк Массивы строк. Стандартный класс string

Подробнее

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

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 2-го занятия по практике Циклы. Операции отношения. Циклы: for, while, do. Составление программ для циклического алгоритма с

Подробнее

Массивы. В ЯЗЫКЕ программирования Java массивы являются объектами ( 4.3.1), создаются динамически ГЛАВА 10

Массивы. В ЯЗЫКЕ программирования Java массивы являются объектами ( 4.3.1), создаются динамически ГЛАВА 10 ГЛАВА 10 Массивы В ЯЗЫКЕ программирования Java массивы являются объектами ( 4.3.1), создаются динамически и могут присваиваться переменным типа Object ( 4.3.2). Все методы класса Object можно вызывать

Подробнее

Указатели, функции и работа с файлами в C. Лекция 7 Информатика

Указатели, функции и работа с файлами в C. Лекция 7 Информатика Указатели, функции и работа с файлами в C Лекция 7 Информатика Типизированные указатели char *c; // указатель на char int *i, j; // указатель на int и просто int i=&j; // i присвоить адрес j *i=1; // разыменованный

Подробнее

(для тех, кто предпочитает Java, рекомендуем курс "Алгоритмы. Олимпиадное программирование" фирмы "1С", см.

(для тех, кто предпочитает Java, рекомендуем курс Алгоритмы. Олимпиадное программирование фирмы 1С, см. Массивы (для тех, кто предпочитает Java, рекомендуем курс "Алгоритмы. Олимпиадное программирование" фирмы "1С", см. http://club.1c.ru) При решении многих задач возникает необходимость хранить всю последовательность

Подробнее

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

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

Подробнее

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

Лабораторная работа 9 Лабораторная работа 9 Алгоритмизация и программирование ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ АВТОМОБИЛЬНО-ДОРОЖНЫЙ УНИВЕРСИТЕТ ФАКУ ЛЬТЕТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ И МЕХАТРОНИКИ Кафедра информационных технологий и мехатроники

Подробнее

Введение. 1. Объявление двумерного массива

Введение. 1. Объявление двумерного массива Введение... 2 1. Объявление двумерного массива... 2 2. Ввод прямоугольной матрицы... 3 3. Вывод прямоугольной матрицы в окно списка и в текстовое поле... 5 4. Поиск максимального элемента матрицы... 8

Подробнее

Массивы и их обработка

Массивы и их обработка Массивы и их обработка Линейные массивы. Двумерные массивы. Сортировка Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Массивы - основы Массив это структура данных,

Подробнее

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

Программирование в C++ Преподаватель Колотова Людмила Павловна Программирование в C++ Преподаватель Колотова Людмила Павловна 2 Содержание 7-го занятия по практике Массивы. Определение массивов. Доступ к элементам массивов. Среднее арифметическое элементов массива

Подробнее

Лабораторная работа 1 Программирование алгоритмов линейной структуры

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

Подробнее

Рис. 1. Интерфейс приложения.

Рис. 1. Интерфейс приложения. Лекция 25 Создание объектных приложений Прежде, чем приступать к решению задач по программированию, нужно создать вспомогательное Windows-приложение Модуль приложения содержит процедуры ввода вывода информации

Подробнее

Лабораторная работа 3. Таблицы идентификаторов

Лабораторная работа 3. Таблицы идентификаторов Лабораторная работа 3. Таблицы идентификаторов Теоретические сведения... 1 Выбор хэш-функции... 6 Мультипликативные хэш-функции... 6 Универсальные хэш-функции... 7 Устранение коллизий... 7 Метод цепочек...

Подробнее

о значениях и ссылках

о значениях и ссылках 8 Основные сведения о значениях и ссылках Прочитав эту главу, вы научитесь: ¾ объяснять разницу между типом значений и типом ссылок; ¾ изменять способ передачи аргументов в качестве параметров методов

Подробнее

Primes = [2, 3, 5, 7, 11, 13] Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

Primes = [2, 3, 5, 7, 11, 13] Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet'] Списки Большинство программ работает не с отдельными переменными, а с набором переменных. Например, программа может обрабатывать информацию об учащихся класса, считывая список учащихся с клавиатуры, при

Подробнее

Лабораторная работа 4 Обработка статических массивов

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

Подробнее

Урок 1. Знакомство со средой программирования Кумир. Понятие величины

Урок 1. Знакомство со средой программирования Кумир. Понятие величины Урок 1. Знакомство со средой программирования Кумир. Понятие величины Данная программная среда позволяет получить практические навыки построения и выполнения основных алгоритмических конструкций, применяемых

Подробнее

Министерство РФ по связи и информатизации. Поволжская Государственная Академия Телекоммуникаций и Информатики МЕТОДИЧЕСКИЕ УКАЗАНИЯ

Министерство РФ по связи и информатизации. Поволжская Государственная Академия Телекоммуникаций и Информатики МЕТОДИЧЕСКИЕ УКАЗАНИЯ Министерство РФ по связи и информатизации Поволжская Государственная Академия Телекоммуникаций и Информатики МЕТОДИЧЕСКИЕ УКАЗАНИЯ к лабораторным работам по дисциплине «Структуры и алгоритмы обработки

Подробнее

Практические задания по дисциплине «Программирование на языке высокого уровня» Cеместр 1

Практические задания по дисциплине «Программирование на языке высокого уровня» Cеместр 1 Федеральное агентство связи ФГОБУ ВПО «Сибирский государственный университет телекоммуникаций и информатики» Кафедра вычислительных систем Практические задания по дисциплине «Программирование на языке

Подробнее

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

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

Подробнее

4 Классы. 4.1 Основы классов

4 Классы. 4.1 Основы классов 4 Классы Класс центральный компонент Java. Поскольку класс определяет форму и сущность объекта, он является той логической конструкцией, на основе которой построен весь язык. Как таковой, класс образует

Подробнее

Язык программирования Си. Семинар 8. Пользовательские типы данных (enum, struct, union). Побитовые операторы.

Язык программирования Си. Семинар 8. Пользовательские типы данных (enum, struct, union). Побитовые операторы. Язык программирования Си Бикулов Д.А., Иваницкая Н.В., Иванов А.П. Семинар 8. Пользовательские типы данных (enum, struct, union). Побитовые операторы. 1 Структуры Структура это объединение нескольких переменных

Подробнее

Лабораторная работа 3 Работа с массивами

Лабораторная работа 3 Работа с массивами Лабораторная работа 3 Работа с массивами 1. Цель работы: 1) Получение практических навыков при работе с массивами. 2) Получение практических навыков при работе с указателями. 2. раткие теоретические сведения

Подробнее

Введение. Язык программирования Python

Введение. Язык программирования Python Введение. Язык программирования Python В рамках данного курса мы будем решать задачи по программированию на современном языке программирования Python 3. Его основные достоинства: 1. Кроссплатформенность

Подробнее

Полякова Ирина Николаевна

Полякова Ирина Николаевна Полякова Ирина Николаевна Сборник заданий по Си для практических занятий в компьютерном классе. Методическое пособие для студентов бакалавриата по направлению Прикладная математика и информатика, 2010.

Подробнее

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

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

Подробнее

Компьютерная Академия Шаг Урок 6. Программирование на C. Оглавление

Компьютерная Академия Шаг Урок 6. Программирование на C. Оглавление Оглавление 1. Необходимость группировки данных. 2. Создание массива и заполнение его данными. 3. Пример программы для нахождения суммы отрицательных элементов массива. 4. Пример программы для нахождения

Подробнее

Массивы. Массив множество однотипных элементов. Любой массив является производным от класса System.Array

Массивы. Массив множество однотипных элементов. Любой массив является производным от класса System.Array Массивы Массивом называют упорядоченную последовательность элементов одного типа. Каждый элемент массива имеет индексы, определяющие порядок элементов. Массив множество однотипных элементов. Любой массив

Подробнее

Лабораторная работа 3 Обработка одномерных массивов. Простые циклы

Лабораторная работа 3 Обработка одномерных массивов. Простые циклы Лабораторная работа 3 Обработка одномерных массивов. Простые циклы Данная работа выполняется с использованием интегрированной среды разработки приложений Delphi 7 (платная программа) или Turbo Delphi (бесплатная

Подробнее

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

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

Подробнее

Урок 2. Запись арифметических выражений. Операторы вывода и вывода. Для обозначения операций применяются следующие знаки:

Урок 2. Запись арифметических выражений. Операторы вывода и вывода. Для обозначения операций применяются следующие знаки: Урок 2. Запись арифметических выражений. Операторы вывода и вывода информации Запись арифметических выражений на языке КУМИР, как и на любом языке программирования, несколько отличается от обычной математической.

Подробнее

Денисова Э. В., Раков С. В. Программирование на языке СИ СПб; СПб ГИТМО (ТУ), с.

Денисова Э. В., Раков С. В. Программирование на языке СИ СПб; СПб ГИТМО (ТУ), с. Денисова Э. В., Раков С. В. Программирование на языке СИ СПб; СПб ГИТМО (ТУ), 2003. 74с. В пособии даются базовые сведения для программирования на алгоритмическом языке СИ. Большое количество примеров

Подробнее

Операторы в JAVA. Лекция 4

Операторы в JAVA. Лекция 4 Лекция 4 Операторы в JAVA Ввод информации с клавиатуры Проще всего вводить числа с клавиатуры, пользуясь классом Scanner. Этот класс принадлежит пакету java.util. Следовательно, чтобы использовать его

Подробнее

Лабораторная работа 2. Основы работы с MathCAD MathCAD, как и большинство других программ работает с документами. С точки зрения пользователя,

Лабораторная работа 2. Основы работы с MathCAD MathCAD, как и большинство других программ работает с документами. С точки зрения пользователя, Лабораторная работа 2. Основы работы с MathCAD MathCAD, как и большинство других программ работает с документами. С точки зрения пользователя, документ - это чистый лист бумаги, на котором можно размещать

Подробнее

class Student { public: int semesterhours; double gpa; double addcourse(int hours, double grade) { return 0.0; }; };

class Student { public: int semesterhours; double gpa; double addcourse(int hours, double grade) { return 0.0; }; }; Глава 13 Указатели на объекты В этой главе... ¾ ¾ ¾ ¾ Массивы объектов Указатели на объекты Строгая типизация Списки объектов П рограммисты на C++ постоянно создают массивы чего-либо. Формируются массивы

Подробнее

Языки и методы программирования. Электронные тесты промежуточного контроля знаний

Языки и методы программирования. Электронные тесты промежуточного контроля знаний МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ имени академика

Подробнее

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

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

Подробнее

Курс «Алгоритмы и алгоритмические языки» Лекция 24

Курс «Алгоритмы и алгоритмические языки» Лекция 24 Курс «Алгоритмы и алгоритмические языки» Лекция 24 Часть I - Формальные системы описания алгоритмов Задачи обработки информации и алгоритмы. Неформальное (интуитивное) определение алгоритма. Конечность

Подробнее

Лекция 10: Графические процессоры (ГП)

Лекция 10: Графические процессоры (ГП) Лекция 10: Графические процессоры (ГП) 1 Архитектура Большая часть логических элементов центральных процессоров (ЦП) отведена для кеширования памяти и контроллера. Это позволяет ядрам ЦП быстро выполнять

Подробнее

Лабораторная работа 9.

Лабораторная работа 9. Лабораторная работа 9. Функции пользователя Приёмы построения алгоритмов Для создания работающей программы разработчик должен пройти три основных этапа: проектирование построение алгоритма решения поставленной

Подробнее

ГЛАВА 3. Лексические анализаторы. Лексические анализаторы

ГЛАВА 3. Лексические анализаторы. Лексические анализаторы ГЛАВА 3. Лексические анализаторы ГЛАВА 3 Лексические анализаторы Лексические анализаторы (сканеры). Принципы построения сканеров Назначение лексического анализатора Прежде чем перейти к рассмотрению лексических

Подробнее

Вопрос 1 (25 баллов) n n log n log log a n n n n

Вопрос 1 (25 баллов) n n log n log log a n n n n 1 1 1 1 1 1 1 log c b 1... log n 1... 1 log a b= 2 3 n 4 9 16 25 log a 2 2 3 3 4 1 2... n n 1 4 9... n n 1 8 27... n n a1 an Sn n, an a1 d ( n -1), an an-1 d 2 c Вопрос 1 (25 баллов) Вычислите сложность

Подробнее

Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы

Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы Занятие 12 Статические и динамические массивы. Рекурсивные функции. Строки. Дополнительные материалы Программирование, численные методы и информатика Александр Валерьевич Позднеев Кафедра автоматизации

Подробнее

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

Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016. Лекция 24 Курс «Алгоритмы и алгоритмические языки» 1 семестр 2015/2016 Лекция 24 1 Хеш-таблицы Словарные операции: добавление, поиск и удаление элементов по их ключам. Организуется таблица ключей: массив Index[m]

Подробнее

Эта глава предлагает молниеносное турне на тему возможностей языка C#. Да,

Эта глава предлагает молниеносное турне на тему возможностей языка C#. Да, Глава 3 Краткий обзор языка C# Эта глава предлагает молниеносное турне на тему возможностей языка C#. Да, мы уже слышим ваши возражения: Но ведь просто невозможно сжать всю информацию о C# в одну главу!

Подробнее

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

Лабораторная работа 3 Цель работы: Лабораторная работа 3 Знакомство с массивами в языке Си. Алгоритмы сортировки и обработки двумерных массивов. 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 1.1. Массивы Массив - упорядоченная структура, предназначенная

Подробнее

ЛЕКЦИЯ 4. ТИПЫ ДАННЫХ

ЛЕКЦИЯ 4. ТИПЫ ДАННЫХ ЛЕКЦИЯ 4. ТИПЫ ДАННЫХ Общие сведения о типах... 1 Отсутствие объявлений типов переменных... 2 Автоматическое преобразование типов... 3 Простые типы... 3 Целые числа... 3 Числа с плавающей точкой двойной

Подробнее

Тема: Электронная таблица MS Excel

Тема: Электронная таблица MS Excel Коротко о главном Тема: Электронная таблица MS Excel адрес ячейки в электронных таблицах состоит из имени столбца и следующего за ним номера строки, например, C15 формулы в электронных таблицах начинаются

Подробнее

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

Лекции по курсу Алгоритмы и алгоритмические языки, 1 курс, 1 поток, 2010/2011 уч.год. Лекция 11 Сортировка 11.1. Сортировка. Постановка задачи. 11.1.1. Сортировка это упорядочение наборов однотипных данных, для которых определено отношение линейного порядка (например,

Подробнее

Пользовательские функции. Пользовательская функция; Область видимости переменной: локальные и глобальные переменные.

Пользовательские функции. Пользовательская функция; Область видимости переменной: локальные и глобальные переменные. Пользовательские функции Пользовательская функция; Область видимости переменной: локальные и глобальные переменные. (с) Чирюкина, 2007 Понятие функции При работе ранее Вам уже встречались некоторые функции,

Подробнее

Лекция 2. Основы программирования на языке С. Массивы и Списки. Описывается имя, даваемое программистом указанному типу.

Лекция 2. Основы программирования на языке С. Массивы и Списки. Описывается имя, даваемое программистом указанному типу. Лекция 2. Основы программирования на языке С. Массивы и Списки. Типы данных, определяемые программистом В языке C программист может давать любому типу свое имя с помощью описания типа (type definition

Подробнее

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

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

Подробнее

ЯЗЫК VBA ОБЗОР ТИПОВ ДАННЫХ VBA

ЯЗЫК VBA ОБЗОР ТИПОВ ДАННЫХ VBA ЯЗЫК VBA Язык VBA является объектно-ориентированным. Это значит, что многие его команды имеют особенный формат. Типичная команда VBA имеет вид: ..< >.

Подробнее

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

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

Подробнее

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

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

Подробнее