Результат работы программиста - программный код, текст. Код состоит из инструкций компьютеру, что, как и в какой последовательности выполнить. Все эти инструкции следуют определенной цели, которую видит программист. Начальные, промежуточные и конечные данные каждого действия или комплекса действий сохраняют в переменных, у которых есть определенный тип данных. Для того, чтобы понимать весь этот процесс, мы наше знакомство с программированием начнем с нескольких терминов:
Переменная - данные, которые хранятся в оперативной памяти и имеют имя и тип. Проще ассоциировать с подписанным контейнером, в котором что-то лежит.
Тип данных - характеристика набора данных, которая определяет возможные значения этого набора, ряд допустимых операций, которые можно предпринимать с этими данными, и способ хранения этих данных в памяти.
Пример из реальной жизни:
Коробки с фруктами, на которых написано "Фрукты". Они занимают определенное место, у нее есть название и все примерно ориентируются, что можно сделать с содержимым этой коробки. Коробки с фруктами содержат фрукты. Их можно открыть, фрукт можно съесть, можно разрезать, можно почистить, можно приготовить салат и так далее. Ящик с надписью "Посуда" при переезде. Ясно, что внутри хрупкое и бьющееся, ясно, как это транспортировать и когда распаковывать.
В программировании типов данных много, и в различных языках они различаются. Тем не менее, рассмотрим их общие виды и характеристики. Разобравшись с этим, мы сможем классифицировать любой незнакомый нам тип данных.
Примитивами называют типы данных, которые состоят из одного элемента. Синонимы к этому определению - скалярные.
Структурными можно назвать типы данных, которые состоят из элементов других типов данных. Название - синоним: нескалярные, аггрегатные.
Говоря проще, примитивы - простейшие типы данных, которые неделимы, тогда как структурные состоят из набора структурных или примитивных типов.
Во многих, если не во всех языках программирования высокого уровня встречаются следующие примитивы:
x = a * 10^b
, т.е. через дробное десятичное число a, умноженное на 10 в степени b. В математике это выглядит как 1.2*10^3
, в программировании степень числа 10 пишется через экспоненту, т.е. 1.2e3
. Например, расстояние от Земли до Солнца составляет 1.496 · 10 11 , или 1.496e11.x + iy
, где i
- корень из минус единицы. Необходимо для ряда математических действий и изысканий, обычному программисту может быть нужно довольно редко.Структурные типы данных, которые можно встретить в различных языках:
Эти типы данных мы расмотрим позже более подробно.
Так же типы данных могут быть изменяемыми или мутабельными, и неизменяемыми (иммутабельными). Знакомясь с новыми типами данных конкретного языка разумно было бы выяснять, можно ли его менять, или он иммутабелен, т.е. значение его останется тем же, каким было создано, и можно либо работать с тем значением, что есть, либо создавать новое значение для него.
Те же строки, к примеру, могут быть неизменяемыми. Это значит, что в переменную можно записать строку, но изменить ее после этого будет невозможно. Однако, будет возможность записать в эту переменную другую строку, в том числе и измененную исходную строку.
Статическая типизация означает, что тип переменной определяется изначально и остается неизменным до конца программы. Если переменная изначально объявлена контейнером для целых чисел, в ней могут находиться только целые числа.
Динамическая типизация означает, что одну и ту же переменную можно сначала инициализировать строкой, потом числом, потом булевым значением, и так далее. Таким образом тип переменной определяется ее значением на текущий момент времени.
Сильная (строгая) типизация не позволяет языку программирования игнорировать разницу между типами данных операндов.
Слабая (нестрогая) типизация позволяет языку вольно интерпретировать тип переменных для их взаимодействия, язык сам меняет тип переменной в зависимости от ее использования. К примеру, если прибавить к числу строку, в которой записано число, язык автоматически прибавит число, находящееся в строке.
Блок-схемой называется графическое представление алгоритма. В блок-схеме шаг или последовательность шагов алгоритма представляется в виде блока, а между блоками устанавливаются связи.
Начало и конец алгоритма изображаются скругленными прямоугольниками, обычные действия - прямоугольниками, условия - ромбами, ввод и вывод данных - параллелограммами. Для более подробного ознакомления с блок-схемами читайте википедию на эту тему, и см. правило 2.
Для примера построим блок-схему алгоритма подбора преподавателя на курсы A-Level Ukraine :)
Рекомендуется использовать Google Drawings (для этого создаем почту gmail, заходим на google drive, new->more->google drawings document)
Легкий уровень: Составить и залить в свой google disk блок-схему приготовления чая из пакетика. В схеме должно быть не меньше одного условия и одного цикла.
Базовый уровень: Составить и залить в свой google disk блок-схему определения простого числа для любого числа.
Продвинутый уровень: Составить и залить в свой google disk блок-схему поиска первых десяти простых чисел.