Код:

Lilitochka-club

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Lilitochka-club » Введение в программирование » Введение в программирование


Введение в программирование

Сообщений 61 страница 74 из 74

61

LUBAVA написал(а):

Если я вам скажу, что я изучала такой предмет, как "Детали машин и ПТУ(подъемно-транспортные устройства), экзамен, курсовая, (редукторы, шестеренки,  передачи шестереночные и прочая). Я уж не говорю о статике, материаловедение(не по профилю, а сплавов сталелитейного пр-ва).

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

0

62

Айрон написал(а):

Так это все механики изучают

Я технолог. И у меня химико-технологический факультет. Я обувщик! Изделия из кожи и меха! :rofl:

Отредактировано LUBAVA (2011-02-01 00:15:11)

0

63

Айрон написал(а):

еще сопромат - ааааааабалденный предмет

И зачет и экзамен-пятерка. Решала и знала, как дважды два. И даже сыну где-то объясняла некоторые эпюры. :O
Надо же, даже слово помню! :D

0

64

Ого, вот что значит советское высшее образование!!! Любава, держи пять!!! http://s59.radikal.ru/i166/1007/2b/026fec7bb294.gif

0

65

Урок второй.
История языков программирования и принципы работы ПК.
Часть третья.

Итак, языки программирования придумывались для облегчения труда программистов. Главные критерии - это удобочитаемость кода, т.е. сделать язык наиболее понятный человеку и тем самым снизить время написания программного кода. Но всё равно создание программ дело трудоемкое. В ту пору программистам не смотря на созданные компиляторы приходилось задавать параметры трансляции кода в исполнительные файлы вручную, в том числе прописывать все адреса. Так работала к примеру DOS (англ. Disk Operating System — дисковая операционная система). Для упрощения работы с файлами затем создали файловые менеджеры, первые из которых работали в основном под DOS (Нортон Командер, Дос Навигатор, Волков Командер и т.д.). При компиляции программ, просто вносили все параметры и адреса прямо в командную строку файлового менеджера. Потом кому-то пришло в голову создать не только язык программирования и компилятор, но и среду разработки. Последняя представляет собой окно с текстовым редактором, где печатают текст кода программы, а в меню можно задать все настройки. Довольно удобная вещь. С ней вы познакомитесь на курсе языка Паскаля. У некоторых сред разработки были предусмотрены встроенные "интерпретаторы" программного кода. Например, в Бейсике. Интерпретатор отличается от компилятора тем, что не создает из программного кода собственно саму программу, он просто в специальном окне показывает (имитирует) как бы она работала, если бы ее создали. Это помогает сократить время написания кода, ведь программы придумывают люди и им свойственно ошибаться, поэтому им приходится очень часто вносить исправления в код программы, чтобы она работала как надо. Если у вас нет интерпретатора в среде разработки, то вам придется создать (скомпилировать) сперва программу, запустить ее и посмотреть, работает она или нет. К несчастью сейчас интерпретаторы, это редкость... Но зато на интерпретаторах построен принцип работы сайтов и кажется операционных систем Unix и Linux. Хотя на мой взгляд, устанавливая юникс-систему, приобретаешь конструктор "сделай сам", т.е. приходится долго все настраивать вручную...
С появлением современных операционных систем, появились более продвинутые средства разработки программного обеспечения (ПО), где можно визуально курсором мышки подогнать размеры окна будущей программы, вставить текст, установить необходимые кнопки, пользуясь инструментами изображенными на специальной панели. Т.е. современные средства разработки программ помогают быстро создать интерфейс (внешний вид) будущей программы, а функциональную часть программист напишет сам.
Основные понятия.
Что такое синтаксис языка программирования.
Синтаксис языка описывает систему правил написания различных языковых конструкций. Это как в русском языке правила грамматики и орфографии. Если в языке задано, что команды сложения пишут так "а=5; в=6; с=а+в;", то компилятор и отладчик среды программирования не поймут, если вы напишите иначе, пусть хотя бы так, к примеру: "сложить 5 и 6", - потому что там такого не задано, а значит вам выдадут ошибку. Все типичные ошибки описаны в справках к среде программирования, поэтому имеют свой порядковый номер. Если вы не смогли создать программу и вам выдали номер ошибки, то надо открыть справку и прочитать, что не так вы сделали. К сожалению чаще всего описание встречается на английском языке. Но в крайнем случае можно воспользоваться эл. переводчиком или поискать в сети Интернет, может кто уже за вас это все перевел и выложил, а на специализированных сайтах такого много. Хотя думаю это мы решим.
Что такое семантика языка программирования.
Семантика языка программирования определяет смысл этих конструкций. Грубо говоря - это логика языка, тесно связана с выбранным алгоритмом. К моему глубокому удивлению я узнал, что принципы алгоритмов ввели в начальную школу для обучения детей. Сейчас они учат это на примере: "Как взять банан из холодильника?". Ученик пишет: "Я подхожу к холодильнику, берусь за ручку, тяну за ручку, открываю дверь, беру банан". А учитель поправит: "Ты забыл сказать, что закрываешь дверь", - и не видать мальцу пятерки. Программист же сказал бы, что тут ошибка в логике или ошибка в семантике, что почти одно и тоже, но именно почти. Как видите программа может не заработать даже при идеальном синтаксисе, если ошибка в логике. Причем на семантическую ошибку отладчик и компилятор могут и не среагировать, программа создастся, но при запуске может не заработать или заработать, но не так, как вам того хотелось бы. Я однажды баловался, писал программу которая выводит на экран все доступные (256) символом таблицы и где-то ошибся в циклах, запустив созданную программу у меня вместо обычного отображения символом получился "эффект матрицы", ну, как в известном фильме, всякие цифры и символы проносились по черному экрану. Я тогда долго бился над ошибкой, понимал, что получился бесконечный цикл, но где он, что-то не находил, пришлось тогда просто начать заново. Программировал я тогда правда на ассемблере MASM 6.11, но такие ошибки возможны на любом языке их не стоит бояться.
Семантика языка взаимосвязана с используемой вычислительной моделью. В настоящее время языки программирования в зависимости от применяемой вычислительной модели делятся на четыре основные группы:
1. Процедурные языки, которые представляют собой последовательность выполняемых операторов. Если рассматривать состояние ПК как состояние ячеек памяти, то процедурный язык – это последовательность операторов, изменяющих значение одной или нескольких ячеек. К процедурным языкам относятся FORTRAN, C, Pascal и некоторые другие. Процедурные языки иногда также называются императивными языками, т.е. где конкретно задано у какого оператора (команды) какое назначение. Код программы на процедурном языке может быть записан следующим образом:
оperator1; operator2; operator3;
2. Аппликативные языки, в основу которых положен функциональный подход. Язык рассматривается с точки зрения нахождения функции, необходимой для перевода памяти ПК из одного состояния в другое. Программа представляет собой набор функций, применяемых к начальным данным, позволяющий получить требуемый результат. К аппликативным языкам относится язык LISP. Код программы на аппликативном языке может быть записан следующим образом:
function1(function2(
   function3(beginning_date)));
3. Языки системы правил, называемые также языками логического программирования, основываются на определении набора правил, при выполнении которых возможно выполнение определенных действий. Правила могут задаваться в виде утверждений и в виде таблиц решений. К языкам логического программирования относится язык Prolog.
Код программы на языке системы правил может быть записан следующим образом:
if condinion1 then operator1;
if condinion2 then operator2;
if condinion3 then operator3;
4. Объектно-ориентированные языки, основанные на построении объектов как набора данных и операций над ними. Объектно-ориентированные языки объединяют и расширяют возможности, присущие процедурным и аппликативным языкам. К объектно-ориентированным языкам относятся C++, Object Pascal (большинству он больше известен как язык Delphi, но это не так, Delphi - это название среды программирования, а язык использующийся в ней - это Object Pascal), Java.
В настоящий момент наибольшее распространение получили языки, основанные на объектно-ориентированной модели. Они, реализуя процедурную модель построения языка, поддерживают аппликативность конструкций, позволяя представлять блок-схему выполнения структурированной программы как некоторый набор аппликативных функций.
Но это мы рассмотрели основные группы языков программирования. Давйте же ознакомимся с ними со всеми.
При классификации языков выделяют следующие типы языков:
Ассемблерные языки — являются символьным представлением машинных языков конкретного компьютера.
Метаязыки — языки, используемые для формального описания других языков.
Императивные языки — это языки, оперирующие командами, изменяющими значение элементов данных, располагают операциями присваивания и циклами. К ним относятся все современные языки программирования.
Декларативные языки — языки, оперирующие инструкциями данным и отношениями между ними. Алгоритм скрывается семантикой языка. Это аппликативные языки, языки логики и объектно-ориентированные языки. Примеры декларативных свойств - сложные множества и инструкции поиска по шаблону.
Процедурные языки — позволяют определять отдельные методы вычисления какой-нибудь проблемы. Включают в себя императивные и функциональные языки.
Аппликативные языки — функции применяются к значениям без побочного эффекта. Это Функциональные языки во всем своем многообразии.
Функциональные языки — оперируют функциями высокого порядка. В них манипуляции совершаются напрямую функциями, а не данными. К категории функциональных языков относятся Lisp, FP, APL, Nial, Krc.
Объектно-ориентированные языки — языки, в которых данные и функции, имеющие доступ к ним рассматриваются как один модуль. Пример: Object Pascal, С++, Java, Objective Caml.
Языки запросов — обеспечивают интерфейс к базам данных.
Языки четвертого поколения (4GL) — высокоуровневые языки, могут использовать естественный английский язык или визуальные конструкции. Алгоритмы или структуры данных обычно выбираются компилятором.
Языки логики — языки, оперирующие предикатами и их отношениями p(x, Y). Программы состоят из набора заключений Хорна, которые могут быть:
фактами - p(X,Y) есть истина;
правилами - p истинно, если q1, q2 и qn истинны;
запросами - верны ли q1, g2 и gn? Где gi - цель.
Также следует отметить, что все языки делятся на языки низкого уровня и высшего уровня:
1. Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских). (Взято с Википедии)
Мнемокод -(мнемонический код) является обязательной частью команды. Это служебное слово, указывающее в символьной форме операцию, которую должна выполнить команда. В Я А не используются цифровые коды операций, операции указываются только своими символьными названиями, которые, конечно, легче запомнить (слово "мнемонический" означает "легко запоминающийся").
Сами мнемокоды мы будем рассматривать по ходу дела, при описании команд.
Думаю вы уже поняли, в прошлых уроках мы немного касались этой темы, что самым ярким, если не основным, языком низкого уровня является язык Assembler (читается, как Ассемблер).
2. Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания. (Взято с Википедии)
Из чего становится ясно, почему практически все современные версии языков программирования являются языками высшего уровня.
Хочу отметить, что в погоне за созданием наиболее понятного для простого человека языка программирования, их создатели были вынуждены упустить выгоду в другом - программы написанные на языке низкого уровня отличались очень маленьким размером и большим быстродействием. Чем удобнее становился язык высшего уровня и чем больше функций он поддерживал, тем больше памяти требовали созданные на нем программы. Вот с каждым годом пользователям требуется компьютер чуть более мощный, чем прежде. Это связано с тем, что в процессе компиляции программы на языке высшего уровня, который мы с вами и будем изучать, создается много "лишнего" или как говорят некоторые "мусорного" кода. Что это значит сейчас объясню.
Для это приведу некую аллегорию с разговорными языками:
1. Возьмём обычную фразу на русском: "Велосипед там".
2. Попробуем перевести эту фразу на английский язык: "There is a bicycle there". Это тоже самое, но видите насколько фраза длиннее!
3. А теперь попробуем перевести ее снова на русский язык, но дословно: "Там есть велосипед там". Каламбур какой-то, но смысл в принципе ясен. Вот так и в программировании, низкоуровневый язык ассемблер хорош тем, что при компилировании программы из его кода в машинный код (нули и единицы) мы получаем исполнительный файл (программу) с чистым кодом (имеется ввиду байт-код). А вот в языках высшего уровня файлы получаются большими по сравнению с программами созданными на Ассемблере. В высокоуровневых языках, при компиляции создается много "мусорного" кода, это не значит, что он лишний, просто такова его конструкция, это как при дословном переводе с английского на русский - много дополнительных слов, но смысл ясен. А представьте, что некоторые компиляторы высокоуровневых языков написаны тоже на языках высшего уровня. Это уже двойные и тройные "переводы", вот размеры создаваемых файлом и растут с каждым разом, хотя некоторые с этим пытаются бороться. Дело в том, что язык Ассемблера не "умер", на нем до сих пор пишут. С чем это связано? Во-первых, ядро операционных систем (Windows не исключение), требует чтобы оно было написано максимально кратко, т.е. занимало как можно меньше памяти и быстрее работало, а это можно написать только на Ассемблере (просто сейчас не найдешь уже того, кто бы писал на машинном коде). Во-вторых, разработка системных драйверов не обходится без Ассемблера и это понятно, ПК должен с их помощью управлять встроенными устройствами (комплектующими), а они тоже требуют быстродействия. В-третьих, почти во всех языках высшего уровня, есть возможность сделать в их код вставку ассемблерного кода (кроме языков созданных для платформы NET), это делается для того, чтобы уменьшить размер созданной программы, увеличить скорость ее исполнения и написать некую процедуру или функцию, которая не предусмотрена в этом языке высшего уровня, т.е. Ассемблер его дополняет, ведь на нем теоретически можно написать всё...
На этом третий урок подходит к концу. Хочется отметить, что я не стал рассказывать о базах данных и более подробно раскрывать тему о современных языках. Если у вас пока нет представления о программировании в обычном  Досе (DOS), то это пока вам не нужно. Зачем забивать голову лишним? Если освоите начальный уровень, то всегда сможете продолжить учиться дальше.
В следующих уроках мы приблизимся уже к практике, будем изучать принципы алгоритмов (краем мы с ними познакомились в этом уроке) и блок-схемы. А после открою темы в пустующих разделах, т.е. займемся практикой.

+1

66

Законник, огромное вам спасибо!!! http://s39.radikal.ru/i086/1007/34/6a401b60cdc5.gif  Буквально разжевываете материал, весьма доступно, на "русском языке" -легко читаемо и пока   :D  понятно.

0

67

Я когда писал на Бейсике игрушку, практически всю ее написал в логике "Если... - то ..."
Если нажата клавиша со стрелкой, то изображение игрока смещается туда-то.
Если прошло такое-то время, то изображение "дикаря с кладом" смещается туда-то.
Если положение на экране дикаря совпало с положением игрока, рисуется "съедение" игрока и рисуется "Конец игры"...

По крайней мере, такая логика настолько понятна практически любому человеку, что я до этого вообще никаких курсов по программированию не читал.
Сел, почитал куцее описание Бейсика, приложенное к компьютеру, и написал игрушку :D

0

68

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

0

69

Урок третий.
Системы счисления.

В наше время люди привыкли использовать десятичную систему счисления. Для нас цифра "10" это круглое число. Но так было не всегда. Говорят, что в древнем Шумере на каком-то этапе его развития использовали шестеричную систему счисления, т.е. там круглым была цифра шесть. Не знаю на сколько верны эти слухи, но вполне может быть.
Вернемся же к программированию. В информатике в основном используют следующие системы счисления: двоичная, десятичная, шестнадцатеричная. Есть конечно еще и восьмеричная, но ею крайне редко пользуются и мы ее рассматривать не будет.
Рассмотрим принцип работы десятичной системы счисления:
1d х 10d = 10d
10d х 10d = 100d
100d х 10d = 1000d
и т.д.
Эта система счисления называется "десятичной" потому что в ней используются десять цифр - от 0 до 9. Цифра "10" на самом деле является составной - единица и ноль, но в быту не принято начинать счет с нуля, так как он ассоциируется с понятиями: пусто, ничто и т.д. Поэтому и принято считать от 1 до 10. Но в программировании ноль не менее важен по значению, чем любые другие цифры.
Принцип работы шестнадцатеричной системы счисления:
Вариант первый:
1h х 16d = 10h
10h х 16d = 100h
100h х 16d = 1000h
и т.д.
Вариант второй:
1h х 10h = 10h
10h х 10h = 100h
100h х 10 h= 1000h
Для удобства понимания, я сделал приставки к цифрам в виде букв. Условные обозначения: "d" - означает, что цифра относится к десятичному счислению, а "h" - означает, что цифра относится к шестнадцатеричному счислению.
Сравнительный пример:
Десятичные: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
Шестнадцатеричные: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E
Как видите в шестнадцатеричной системе используются не только цифры, но и буквы.
Пугаться не надо!!! Это обычная математика, причем не сложная. Сейчас покажу, как это всё высчитывается.
Двоичная система счисления:
Все вы уже не раз читали, что в машинный код записывается чередой участков памяти объемом в один байт. В одном байте содержится восемь бит. В один бит можно записать только одно число, причем либо ноль, либо единицу и ничего более. Эта система счисления и называется двоичной, потому что в ней используют всего два числа - 0 и 1. Ее еще называют "бинарной" системой счисления.
Теперь изучим, как переводят числа из одной системы счисления в другую.
Сделаем перевод из десятичной в двоичную:
Для примера возьмем число "40".
40/2=20, остаток 0
20/2=10, остаток 0
10/2=5, остаток 0
5/2=2, остаток 1
2/2=1, остаток 0
1/2=0, остаток 1
Результат: 101000 - так выглядит число "40" в двоичном виде.
Теперь переведем из двоичной в десятичную.
Порядковый номер разряда: 543210
   Биты (двоичное число): 101000
Каждая цифра в двоичном числе имеет свой порядковый номер, т.е. разряд. Счет начинается с нуля и идет справа налево.
Теперь также справа налево берем по цифре из двоичного числа, умножаем на двойку в степени соответствующей номеру разряда этого числа. Из курса математики мы помним, что умножая на ноль, получаешь ноль. Степень это количество раз, сколько число надо умножить само на себя.
http://s019.radikal.ru/i600/1309/57/5ea11f109207.jpg
Вот мы и получили снова число "40".
Попробуем еще разок для закрепления. Возьмем число "255" - это максимальное значение, которое можно записать в один байт памяти. Вообще в него записывают 256 значений, но так как счет начинается с нуля, то максимальное значение равно 255.
Перевод из десятичной в двоичную:
255/2=127, остаток 1
127/2=63, остаток 1
63/2=31, остаток 1
31/2=15, остаток 1
15/2=7, остаток 1
7/2=3, остаток 1
3/2=1, остаток 1
1/2=0, остаток 1
Результат: 11111111 Видите, все восемь бит заняты единицами, потому 255 и максимальное, что больше единиц в восемь бит не впишешь.
Перевод из двоичной в десятичную:
Порядковый номер разряда: 76543210
   Биты (двоичное число): 11111111
http://i041.radikal.ru/1102/b5/44117f403620.jpg
Результат: 255
Теперь рассмотрим перевод из шестнадцатеричной системы в десятичную:
Как вы видели в двоичной системе, разряд может принимать там два значения: 1 и 0.В шестнадцатеричном виде разряд может иметь 16-ть значений: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Где "A" равно "11" в десятичном виде и т.д. Более подробную таблицу я приводил выше.
Порядковый номер разряда: 10
Шестнадцатеричное число: 9B
Как и в прошлый раз, начинаем решать справа налево. Умножаем число на 16 в степени соответствующей номере разряда числа. "B" в десятичном виде равно "11" - это мы знаем из таблицы.
http://s13.radikal.ru/i186/1102/48/db9658ea4912.jpg
Результат: 155 в десятичном виде.
На этом в принципе всё. Понимание о системах счисления вы получили. В остальных случаях пользуйтесь Калькулятором, как переводить из одной системы счисления в другую, я показывал ранее.

0

70

урок 3 и все...

0

71

Инжи написал(а):

урок 3 и все...

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

0

72

Законник, а вот можно нескромно попросить прочитать пост 225 Нейробика ?
Не сможете ли помочь с консультацией в подборе хорошего тренинга в виде компьютерной игры?

Отредактировано Helena (2013-09-07 10:32:51)

0

73

Helena
Ответил в личку.

0

74

Законник написал(а):

Ответил в личку.

Спасибо большое! http://s018.radikal.ru/i527/1210/19/a4b1086292aa.gif

0


Вы здесь » Lilitochka-club » Введение в программирование » Введение в программирование


Рейтинг форумов | Создать форум бесплатно