Куда указывают указатели...
Любой начинающий программист однажды становится перед выбором: всё бросить и забыть, или перейти на новый профессиональный уровень.
И переход на профессиональный уровень невозможен без понимания сути использования указателей и динамических структур данных. Без этого невозможно эффективно использовать функции операционных систем, объектно-ориентированное программирование, сложные алгоритмы… Без этого нельзя использовать все возможности языка программирования. Не использовать в программировании динамические структуры и указатели также нелепо, как иметь Феррари, и ездить на ней со скоростью 20 км/час… Перейти к ценам >>> |
7 причин изучить указатели
и динамические структуры данных
- Чтобы более полно использовать возможности языка программирования.
- Чтобы использовать функции операционных систем и библиотек (таких, например, как .NET Framework).
- Чтобы использовать все возможности объектно-ориентированного программирования.
- Чтобы экономить память, выделяемую вашей программе.
- Чтобы выйти на новый уровень знаний в программировании.
- Чтобы не “тупить” и не паниковать, когда вы встретите в чужом исходном коде значки
^, @, *, &
или что-то в этом роде. - Чтобы успешно решать контрольные по информатике и программированию (если вы ещё учитесь).
Разумеется, есть и другие причины. Думаю, что из описания курса вы их увидите и поймёте.
Кстати, я же до сих пор вам не сказал, что предлагаю вам на этой странице!
Это новая книга и видеокурс
>>> Куда указывают указатели >>>
Почему такое странное название? Узнаете из книги )))
Впрочем, не буду вас мучить и скажу здесь.
Указатели - это переменные специального типа, которые хранят адреса блоков памяти.
И указывают они, соответственно, на какое-то место в памяти компьютера.
Вот и всё? Интрига раскрылась? Дальше можно не читать?
Ну это кому как. Если вы заглянули на эту страницу исключительно из простого любопытства, то да - теперь её можно закрыть. Ну а если не из простого любопытства, а из профессионального, то тогда не торопитесь.
Потому что из этого курса вы узнаете:
- Что такое указатели и почему они так важны для программирования.
- Как работать с указателями и как данные размещаются в памяти компьютера.
- Способы работы с памятью.
- Как указатели передаются в функции и процедуры.
- Что такое динамические структуры данных, почему, где и как их надо использовать.
- Что такое:
- Односвязный список.
- Двусвязный список.
- Дерево и бинарное дерево.
- Стеки и очереди.
- Динамические массивы.
- Что такое обратная польская запись.
- Как создать стековый калькулятор, который обрабатывает и вычисляет целые выражения, а не простые операции с двумя числами.
Книга и видеокурс
В чём ещё прелесть этого курса?
Кто-то любит читать книги, а кто-то - смотреть видеокурсы.
Но, к сожалению, почти всегда авторы выпускают либо то, либо другое.
Но в данном случае всё не так!
Эти уроки представлены как в виде книги, так и в форме видеокурса!
Причём вы можете выбрать из двух вариантов:
- Приобрести только книгу.
- Приобрести видеокурс вместе с книгой.
Разумеется, к обоим вариантам также прилагаются исходные коды примеров программ.
Зачем вам именно этот курс?
Я просто не знаю видеокурсов по программированию (их вообще довольно мало), где бы так подробно и доступно была раскрыта тема указателей и динамических структур данных.
Есть довольно много книг по программированию, где имеются разделы об указателях. Но обычно в таких разделах сведения очень краткие, либо они просто теряются в большом объёме книги и читатели не уделяют им должного внимания. Книг, посвящённых исключительно работе с указателями я также не встречал.
Кроме того, я гарантирую, что книга и видеокурс созданы лично мной, все примеры программ проверены и отлажены, и что вы получите всё это сразу после оплаты (все материалы в электронном виде).
И ещё… Многие авторы курсов хвастаются высоких разрешением видео. Для меня же это скорее недостаток, чем преимущество. Почему? Потому что видеокурс - это не художественный фильм. А для видео с высоким разрешение требуется хороший компьютер и хороший монитор. Если же вы будете смотреть его на слабеньком нетбуке, да ещё пытаться в то же время применять знания на практике (то есть запускать другие тяжеловесные программы), то вас будет раздражать медленная работа компьютера и подвисание видео.
Кроме того, объёмные видеокурсы, записанные в высоком разрешении, занимают довольно много места на диске.
Поэтому почти все видеоуроки моего курса записаны в разрешении 640х480. Этого вполне достаточно для того, чтобы увидеть и понять материал (качество самого видео хорошее), и в то же время общий размер видео получился относительно небольшим, а его просмотр не захватит ресурсы вашего компьютера на 100%.
Зачем покупать, если можно найти информацию в Интернете?
Да, можно. Но почему же вы до сих пор этого не сделали? А если и находили, то почему не изучили?
Ответ простой:
халява ≠ мотивация
или чем больше халявы, тем меньше мотивации.
У вас есть информация, но,
- Она очень сумбурная и плохо структурирована.
- Вы не знаете с чего начать и как продолжить.
- И, наконец, она бесплатная, поэтому пусть полежит на задворках вашего жёсткого диска до лучших времен.
Однако лучшие времена никогда не наступят.
Совсем другое дело, когда вы заплатили за информацию деньги. Вам просто не терпится её изучить, посмотреть, что же там такого, за что же вы заплатили. Это мотивация, и мотивация очень сильная. Поэтому платные системы обучения работают во много раз лучше, чем бесплатные. Это давно доказано (и не мной).
Ну а теперь самое интересное…
Я говорю о цене. Хотя, конечно, я немного слукавил ))) Ничего особо интересного в цене, потому что всё интересное в книге и видеоуроках. Лично я всегда смотрю на цену в последнюю очередь. Потому что сначала я отвечаю на вопрос: надо ли мне это. Если да, то цена значения не имеет (правда, иногда приходится думать, где взять денег - но это уже другая история )))
Итак, цена…
Если вы когда-нибудь покупали видеокурсы по программированию, то вы наверняка знаете, что стоимость таких курсов обычно начинается от 3000 рублей. Но может доходить до 10000, до 30000 и даже выше (если не верите - пишите в личку - дам ссылки на такие курсы)))
Я в этот раз для определения цены решил не отталкиваться от ценности курса. Потому что у каждого она своя. Кому то эта информации жизненно необходима (например, завтра надо сдавать курсовую по теме указателей а студент в этой теме “не ухом не рылом”). Кому-то она нужна постольку поскольку. В общем, я отталкивался от другой цифры.
Я когда-то проводил опрос о том, какая стоимость книги или курса для людей приемлема. Ответы были разные - от 0 до 3000 (и даже выше). Но самый распространённый ответ был 1000 рублей. Поэтому я и решил, что мой курс будет стоить не более 1000.
Я считаю, что такие расходы может себе позволить каждый студент, а тем более работающий человек. А с учётом того, что на самом деле это никакие не расходы, а вложение денег в собственное развитие, то и обсуждать эту сумму дальше нет смысла. К тому же в итоге она получилась даже меньше, а именно:
Уровень*: | Опытный | Начинающий | Новичок |
В комплекте: | |||
Исходные коды примеров программ. | + | + | + |
Куда указывают указатели (книга). | + | + | + |
Куда указывают указатели (видеокурс). | + | + | |
Основы программирования (книга с видеоприложениями и исходными кодами примеров программ) | + | ||
Экономия, руб.** | 0 | 0 | 130 |
Цена, руб. | 460 | 960 | 1060 |
Перейти на страницу заказа >>> | Заказать | Заказать | Заказать |
* Уровень - это ваш уровень квалификации в текущее время.
** Экономия - эта ваша экономия по сравнению с приобретением книг из комплекта по отдельности.
Немного подробнее об уровнях:
- Новичок. Это нулевой уровень. То есть уровень среднего пользователя компьютера, который хочет стать программистом.
- Начинающий. Это уровень программиста, который знает основы программирования и умеет создавать несложные программы на таком языке, как Паскаль.
- Опытный. Это тоже начинающий программист, но у которого уже есть кое-какой опыт и ему достаточно для обучения книги без подробных видеоуроков.
Что внутри курса?
Курс состоит из четырёх основных разделов. Почти в каждом разделе есть подразделы.
Введение. 1. Динамические структуры данных. |
|
Общие сведения. Динамическая и статическая память. Структуры данных. Что такое адрес. Динамически распределяемая память ("куча"). | |
2. Что такое указатель. | |
Что такое указатель. Что такое ссылочный тип данных. Что хранят указатели. Как связываются указатели с памятью компьютера. Адреса. | |
2.1. Типизированные и нетипизированные указатели. | |
Типизированные и нетипизированные указатели. Что такое такое типизированные и нетипизированные указатели. Зачем вообще этот урок. | |
2.2. Объявление указателей. | |
Как объявляются указатели в языках Паскаль и С++. Чем отличаются объявления указателей в этих языках. Какие операции можно выполнять над указателями... | |
2.3. Операторы для работы с указателями. | |
Как получить адрес переменной. Как получить значение из памяти, на которую указывает указатель. Как записать значение в нужный адрес памяти. Как вывести адрес на экран. Как изменять значения переменных, не используя их имена. | |
2.4. Пример размещения массива в памяти. | |
Как располагаются элементы массива в памяти. Сколько памяти занимает каждый элемент массива. Как перебрать элементы массива в цикле, используя указатели. Как получить адрес элемента массива. Как работает функция Inc со ссылочными переменными. Почему при работе с указателями можно получить неожиданный результат. Почему адрес памяти является числом, но с ним нельзя работать как с числом. | |
2.5. Указатель на массив и массив указателей. | |
Что такое указатель на массив и что такое массив указателей. Чем отличаются. Какие ошибки можно совершить при объявлении переменных. Как объявить массив указателей. Как объявить указатель на массив. | |
2.6. Методы работы с памятью. | |
Особенности выделения памяти и возможные ошибки. Инициализация памяти. Процедуры для заполнения памяти. Освобождение памяти: как и для чего делается. | |
2.7. Возможные проблемы с указателями. | |
Потеря указателя: как это происходит и какие могут быть последствия. Как использование указателей может повлиять на скорость работы программы. В каких случаях указатели лучше не использовать. Примеры программ для понимания обозначенных проблем. | |
2.8. Передача указателей функциям и процедурам. | |
Передача аргументов по значению. Передача значений указателей. Возможные ошибки при передаче указателей в подпрограммы. Как изменить значение глобальной переменной в подпрограмме, не используя имя переменной. | |
2.9. Использование нетипизированных указателей. | |
Объявление нетипизированных указателей. Выделение и освобождение блока памяти, с которым связан указатель. Процедуры и функции для выделения и освобождения памяти. Определение размера блока памяти. Изменение поведения программы с помощью предопределённой переменной ReturnNilIfGrowHeapfails. | |
3. Списки, деревья, графы. | |
Общие сведения, введение. И напоминание о том, что такое записи (структуры). | |
3.1. Односвязный список. | |
Что такое такое односвязный (однонаправленный) список. В каких случаях лучше использовать списки вместо статических массивов. Из чего состоит элемент списка. Как вставить новый элемент в список. Как удалить элемент из списка. Как получить доступ к данным в списке. | |
3.2. Двусвязный список. | |
Что такое такое двусвязный (двунаправленный) список. Из чего состоит элемент списка. Как вставить новый элемент в список (в начале, в конце и в произвольном месте)... | |
3.3. Бинарные деревья. | |
8 видеоуроков общей продолжительностью 1,5 часа. Что такое бинарные деревья. Зачем нужны бинарные деревья. Что такое рекурсия и как её использовать. Как создать новый узел в бинарном дереве. Что такое бинарное дерево поиска и как создать узел в таком дереве... | |
3.5. Стек. | |
Что такое стек. Что такое LIFO. Организация стека на простом примере. | |
3.6. Очередь. | |
Что такое очередь. Что такое FIFO. Организация очереди на простом примере. | |
4.1. Динамические массивы. | |
Общие сведения о том, где применяются динамические структуры данных. Пример использования указателей и динамических структур данных при создании динамического массива. Использование стандартных динамических массивов в Lazarus. | |
4.2. Стековый калькулятор и обратная польская запись. | |
Пример использования стека. Что такое польская запись (прямая и обратная). Стековый калькулятор. Пример создания простого стекового калькулятора (с исходными кодами). | |
4.3. Использование очереди. | |
Пример использования очереди. |
Общая продолжительность видео около 7 часов.
Вопросы и ответы
Могу ли я оплатить и получить курс, если живу не в России? |
Да. Имеется несколько десятков способов оплаты, вы можете выбрать наиболее подходящий. Все материалы в электронном виде. После оплаты вы получаете ссылки на скачивание. |
На каком языке программирования примеры программ? |
Основная часть на Паскале. В начале книги в общих чертах рассмотрены примеры на С++. |
Какая среда разработки используется для примеров программ? |
Используется Lazarus. Но вы можете использовать любую другую среду, которая позволяет создавать программы на Паскале. |
Я не нашёл ответа на свой вопрос, к кому можно обратиться? |
Если вы зарегистрированы в сети “В контакте”, то вы можете щёлкнуть по значку VK в правом нижнем углу и ввести ваш вопрос. Ответ может быть с задержкой. Также можно выбрать любой другой способ связи с автором (см. раздел Контакты). |
Ещё немного об истории создания книги
В своих предыдущих книгах и статьях о программировании я как-то обходил тему указателей. Либо рассказывал об этом очень кратко.
Однако если изучение программирования для вас стало чем-то большим, чем простое любопытство, то вам рано или поздно придётся погрузиться в эту тему. Потому как без умения использовать динамическую память дальнейшее движение невозможно.
Точнее, возможно, но вы постоянно будете спотыкаться.
Захотите изучить объектно-ориентированное программирование – это потребует понимания того, что такое указатели.
Захотите научиться работать с API-функциями – это тоже потребует умения работать с указателями.
И так будет постоянно – какую бы более сложную тему вы не захотели изучить, почти наверняка от вас потребуется понимание принципов работы с динамической памятью и с указателями.
Поэтому я и решил посвятить этой теме отдельную книгу. Эта книга содержит исчерпывающую информацию, которая позволит вам понять, что такое указатели и как с ними работать.
Кроме того, в книге описаны основные структуры данных, такие как стек, список, бинарное дерево и т.п., которые наиболее часто используются в программировании.
Приведены примеры с исходными кодами, которые позволят более быстро разобраться с некоторыми сложными моментами.
Итак, зачем вам эта книга? Она нужна вам,
- Если вы не хотите останавливаться на простых программах типа «Hello, World!», а стремитесь развить свои успехи и пойти дальше.
- Если вы не знаете, что такое «статические переменные», «динамические переменные», «куча».
- Если вы не знаете, что такое структуры данных.
- Если вы не знаете, чем статические переменные отличаются от динамических, и когда надо использовать те или иные в ваших программах.
- Если ничего не знаете о списках, стеках, очередях, бинарных деревьях, графах и других структурах данных, но очень хотите узнать.
- Если вы не знаете, что такое рекурсия, или знаете, но не понимаете, и боитесь применять на практике.
- Если вы хотите как следует подготовиться для изучения более сложных тем программирования.
- Если вы хотите на совесть подготовиться к экзамену или курсовой по данной теме.
- Если вы учитель по информатике и/или программированию, и вам нужны учебные материалы по данной теме.
- Если вы хотите получить описанную выше информацию в удобном формате, с примерами и видеоуроками.
Честно говоря, я не планировал писать эту книгу. Я уже начал работать над другой – об объектно-ориентированном программировании (ООП). И написал уже несколько десятков страниц. Но внезапно понял, что читатель не сможет разобраться с ООП, не зная, что такое указатели и динамические структуры данных.
Что было делать? Первая мысль – включить в книгу по ООП раздел об указателях. Но если читатель уже изучил где-то эту тему, то зачем ему лишняя информация, и зачем ему переплачивать за ненужную информацию?
Тогда я и решил сначала написать книгу об указателях, а потом уже вернуться к книге по ООП.
Не буду слишком подробно рассказывать о том, что в итоге получилось. Если интересно – берите книгу и изучайте.
Как пользоваться курсом
Ну и напоследок немного о том, как пользоваться видеокурсом и какие функции я для вас подготовил, чтобы изучение курса было не только интересным, но и удобным. Об этом я записал видео, посмотреть которое можно ниже. ВНИМАНИЕ! Видеоуроки не входят в тариф "Опытный".