Basics_01.md 12 KB

1. Типы данных, блок-схемы, системы счисления, двоичная арифметика.

Переменные и типы данных.

Результат работы программиста - программный код, текст. Код состоит из инструкций компьютеру, что, как и в какой последовательности выполнить. Все эти инструкции следуют определенной цели, которую видит программист. Начальные, промежуточные и конечные данные каждого действия или комплекса действий сохраняют в переменных, у которых есть определенный тип данных. Для того, чтобы понимать весь этот процесс, мы наше знакомство с программированием начнем с нескольких терминов:

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

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

Пример из реальной жизни:

Коробки с фруктами, на которых написано "Фрукты". Они занимают определенное место, у нее есть название и все примерно ориентируются, что можно сделать с содержимым этой коробки. Коробки с фруктами содержат фрукты. Их можно открыть, фрукт можно съесть, можно разрезать, можно почистить, можно приготовить салат и так далее. Ящик с надписью "Посуда" при переезде. Ясно, что внутри хрупкое и бьющееся, ясно, как это транспортировать и когда распаковывать.

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

Не учи типы, дизайнер!

Примитивами называют типы данных, которые состоят из одного элемента. Синонимы к этому определению - скалярные.

Структурными можно назвать типы данных, которые состоят из элементов других типов данных. Название - синоним: нескалярные, аггрегатные.

Говоря проще, примитивы - простейшие типы данных, которые неделимы, тогда как структурные состоят из набора структурных или примитивных типов.

Скалярные типы данных или примитивы.

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

  • Булевы или логические данные. Переменная этого типа может иметь только два значения - Правда и Ложь (True, False). Часто эти параметры интерпретируются соответственно как 1 и 0. Используется повсеместно для получения ответов на различные вопросы и дальнейшего выбора варианта действий.
  • Целые числа. Переменные такого типа содержат целое число. В зависимости от языка программирования и выбранного подтипа целочисленных данных различаются диапазоном значений и воможностью работы с отрицательными числами.
  • Числа с плавающей точкой или вещественные числа. Сюда входят как целые числа, у которых дробная часть есть, но считается пустой, так и дробные. В программном виде чаще всего такие числа записываются как x = a * 10^b, т.е. через дробное десятичное число a, умноженное на 10 в степени b. В математике это выглядит как 1.2*10^3, в программировании степень числа 10 пишется через экспоненту, т.е. 1.2e3. Например, расстояние от Земли до Солнца составляет 1.496 · 10 11 , или 1.496e11.
  • Комплексные числа - числа вида x + iy, где i - корень из минус единицы. Необходимо для ряда математических действий и изысканий, обычному программисту может быть нужно довольно редко.
  • Отсутствие значения и типа - особый тип данных, который означает ничего, пустое место. Отличается от нуля, пустой строки или пустого массива. В разных языках называется по-разному, например null, none, nan.
  • Строки - Строки принято относить к примитивам, хотя они и состоят из символов.

Структурные типы данных.

Структурные типы данных, которые можно встретить в различных языках:

  • Массивы
  • Кортежи
  • Словари
  • Множества
  • Функциональные типы данных
  • Записи

Эти типы данных мы расмотрим позже более подробно.

Мутабельность (mutable)

Так же типы данных могут быть изменяемыми или мутабельными, и неизменяемыми (иммутабельными). Знакомясь с новыми типами данных конкретного языка разумно было бы выяснять, можно ли его менять, или он иммутабелен, т.е. значение его останется тем же, каким было создано, и можно либо работать с тем значением, что есть, либо создавать новое значение для него.

Те же строки, к примеру, могут быть неизменяемыми. Это значит, что в переменную можно записать строку, но изменить ее после этого будет невозможно. Однако, будет возможность записать в эту переменную другую строку, в том числе и измененную исходную строку.

Типизация

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

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

Сильная (строгая) типизация не позволяет языку программирования игнорировать разницу между типами данных операндов.

Слабая (нестрогая) типизация позволяет языку вольно интерпретировать тип переменных для их взаимодействия, язык сам меняет тип переменной в зависимости от ее использования. К примеру, если прибавить к числу строку, в которой записано число, язык автоматически прибавит число, находящееся в строке.

Ликбез по типизации

Типизация, Карл

Простейшие операции и блок-схемы

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

Начало и конец алгоритма изображаются скругленными прямоугольниками, обычные действия - прямоугольниками, условия - ромбами, ввод и вывод данных - параллелограммами. Для более подробного ознакомления с блок-схемами читайте википедию на эту тему, и см. правило 2.

Для примера построим блок-схему алгоритма подбора преподавателя на курсы A-Level Ukraine :)

Рекомендуется использовать Google Drawings (для этого создаем почту gmail, заходим на google drive, new->more->google drawings document)

решение котика

Системы счисления

Системы счисления

Домашнее задание

  1. Легкий уровень: Составить и залить в свой google disk блок-схему приготовления чая из пакетика. В схеме должно быть не меньше одного условия и одного цикла.

  2. Базовый уровень: Составить и залить в свой google disk блок-схему определения простого числа для любого числа.

  3. Продвинутый уровень: Составить и залить в свой google disk блок-схему поиска первых десяти простых чисел.