Найти в Дзене
Tech-Research.ru

Программирование - введение

В первую очередь, данная статья адресуется тем, кто особо не программист, но всерьез задумывается о том, чтобы переквалифицироваться, поменять профессию на высокооплачиваемую. Еще данный текст пойдет тем, кто только учится. Алгоритм важнее кода Самое важное в программировании - умение строить алгоритмы. Ваша основная задача не код написать, а построить в голове принцип работы этого кода. На каком языке - не важно, можно на русском, можно стрелочками с фигурками (блок-схемами). Если вы хорошо умеете строить алгоритм, то сможете на любом языке его описать, немного вникнув в конкретный синтаксис и особенности языка... Переменные, ввод и вывод Программы создаются для вычислений определенного множества задач, если бы все входные условия были постоянными, то и результат был неизменным, тогда смысл в программе, если результат можно просто записать на бумаге, у данного утверждения есть оговорки, бывают программы смысл которых просто в автоматизации рутины, типа взять файл отсюда и положить туд
Оглавление

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

Еще данный текст пойдет тем, кто только учится.

Алгоритм важнее кода

Самое важное в программировании - умение строить алгоритмы. Ваша основная задача не код написать, а построить в голове принцип работы этого кода. На каком языке - не важно, можно на русском, можно стрелочками с фигурками (блок-схемами).

Если вы хорошо умеете строить алгоритм, то сможете на любом языке его описать, немного вникнув в конкретный синтаксис и особенности языка...

Переменные, ввод и вывод

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

Помните как решали квадратные уравнения? Допустим, там переменные это a,b,c, далее есть еще переменная для дискриминанта, а дальше для x1 и x2... Без переменных никуда.

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

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

У переменных есть тип, да, бывают языки с динамическими типами, например PHP, JavaScript, там на ходу определяется какие данные в эту емкость загрузили и дуршлаг превращается в чайник или кастрюлю или тарелку, это иногда упрощает разработку, иногда наоборот усложняет, когда автоматика неверно определяет, еще на это могут тратиться дополнительные ресурсы.

Типы данных

Типы данных в программировании условно бывают такие:

  • строка = "ggghhh"
  • число = 23
  • массив - это не просто кастрюлька, а этакая система почтовых ящиков, где можно в конкретный что-то положить или взять из него, в каждом ящике может быть еще один массив, например куча конвертов, тогда этот массив будет многомерным - первое измерение это номер ящика, а второе номер конверта в ящике...


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

  • строка
  • целое число
  • целое большое число (например 9-значное и еще длиннее)
  • число с плавающей точкой - по факту это как длинное целое, просто поделенное на 10 в какой-то степени, по числам с плавающей точкой отдельную статью запилю, если это кому-то вообще станет интересным.
  • и еще 100500 типов и еще у переменной может быть объявлена длина.

Если например сложить две строки в JavaScript, то она просто пристыкуется, если массивы в PHP, то ячейки одного массива добавятся в другой, но например попытка приплюсовать к массиву число или к строке число может привести к ошибке программы, поэтому, очень важно определиться с типами данных, даже в PHP желательно приводить переменные к определенным типам, чтобы поведение программы было более очевидным.

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

Ветвление и условия

Основной механизм гибкости программы - это ветвление, например вы заходите в здание, условием ветвления будет "работает ли лифт?" и "какой этаж? 1й или выше?", если лифт работает и нужен этаж больше чем 1й, то вы жмете кнопку лифта, если этаж не первый и лифт не работает, то шагаете по лестнице... Куски кода выполняются в зависимости от условий, если условие выполняется то это истина, иначе ложь, при ветвлении предусматривается два пути, но иногда путь только один, т.е. если условие не выполнилось, то ничего делать не нужно.

Типичные представители ветвления это if, case

Циклы

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

Но обычно цикл имеет условие, оно либо в начале цикла, либо в конце...

Цикл с предусловием не выполнится ни разу, если условие не подходит, а цикл с постусловием выполнится один раз и в конце будет принято решение нужно ли еще раз повторить.

Циклом можно описать многие процессы, например набор воды в баню.
Условие - котел не полный.

Действия

  1. Взять ведро
  2. Дойти до колонки
  3. Поставить ведро
  4. Нажать на рычаг
  5. Ждать пока ведро наполнится
  6. Отпустить рычаг
  7. Принести ведро в баню
  8. Вылить

Один раз выполнить все эти действия - это одна итерация цикла, дальше если условие "котел не полный?" выполняется, то еще и еще раз...

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

От тех данных, которые меняются в цикле зависит повторится ли он еще раз или завершится и программа пойдет дальше.

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

пикча для статьи...
пикча для статьи...