Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Как создать свой сайт и заработать?" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Программирование с нуля - это совсем просто! 25) О логике и не только
Информационный Канал Subscribe.Ru |
Программирование с нуля - это совсем просто!25) О логике и не толькоЯ только начала знакомиться с Вашим базовым курсом. Интересно оказалось! Очень! Хотя желание научиться именно этому было совершенно спонтанным, но так уж вышло, что я совершенно не люблю играть. А что ещё делать с компьютером?! Письма, а тем более сочинения писать не умею, поэтому совершенно не претендую на другие бесплатные курсы, тем более сегодня далеко не первое октября. Когда подписалась на рассылку, мне пришёл 19 урок, но естественно начала с самого первого. Увлеклась! Ещё бы, ПОЛУЧИЛОСЬ!!!!!!!! Я сама себе прокричала УРА!!!!! Гораздо сложнее оказалось с упражнениями на развитие разных способностей, но я и с этим постараюсь справиться. Вы просите присылать отчёт после каждого выполненного практического задания, вот что и как у меня получилось: Программы нашла быстро, и с удовольствием поставили себе 5+ . Дальше было немного сложнее, да и то, потому что не очень внимательно читала. Плеер получился. Я его сделала для песни из Ночного дозора и обложку к плееру соответственную поставила, очень даже ничего получилось, заодно узнала, что есть разные типы файлов. А радости то сколько было! Работает!!!! Даже мой ленивенький ребёнок подсаживаться рядышком стал, от игр оторвался, да я думаю, что это полезнее. Лена По поводу плеера многие спрашивают, кстати:
Я хочу, чтоб медиаплеер воспроизводил звуковой файл, который находится в одном из полей базы данных. Как это описать? Раз эта идея так увлекла, значит мы ее и рассмотрим, как доберемся снова до полноценных графических приложений. Там просто уже программирование требуется, немножко только еще важные вещи поучим на консольных программках. Вы кстати не недооценивайте командную строку и консоли. Это - вещи святые :) Линукс - это командная строка по большому счету. И вообще, профессионал :) предпочитает консоли и командные строки. Поэтому знание, как создавать консольные программы, пригодится обязательно.
О юморе. Это было на заре появления Windows. Мой ассистент вел практическое занятия по информатике. У кого-нибудь такие истории есть? Присылайте!
Во-первых, разрешите внести дополнение в раздел "Мифы на тему "Я не смогу
стать программистом"...Миф 9: Я не смогу стать программистом, потому
что я - девушка..." На самом деле - это был единственный миф, в связи
с которым я не решалась этим делом заняться. Вот вы мне ответьте на
вопрос - почему я не знаю ни одного программиста-девушки? Я для себя
когда-то решила - просто потому, что у парней - особый склад ума,
который очень подходит для этого самого программирования...а вот с
девушками сложнее...В любом случае, я собираюсь и с таким так скать
складом (и с вашей помощью) неплохо во всем этом разобраться;) В советское время в отделах программистов работали на 70-80% женщины. А мужчины так называемыми системщиками очень любили (нечто среднее между системным администратором и хакером). Возможно, потому, что у женщина большая потребность в естественном общении, скучно просто подолгу за монитором сидеть. Да и начальники теперь стараются ребят брать в основном. Плохо я объяснил тему с логическими выражениями. У многих вопросы появились. Я так и не разобралась с " and, Or, not, compareresult и Boolean".Наверняка их надо было использовать, но пришлось без них обойтись. compareresult - это я сглупил, выбрал просто такое название для переменной (его же можно делать каким угодно), и оно вызвало непонимание не один раз... Впредь будем использовать для переменных для наглядности большей, имена типа x,y, i, j, n, k, или что-то типа Rachet, Summa, Itog. Но лучше многобуквенные, чтобы отражали смысл данной переменной!
можно ли эти строчки(в начале) Сейчас постараюсь более наглядно объяснить.
С появлением заданий стало уже интересней. Пришлось и математику школьную вспоминать . Сделал запись во втором задании
if (x > y > z) then x > y > z - здесь два сравнения. Обычно требуется, чтобы каждое сравнение двух значений было явно отделено от другого. Зачем? Потому что компьютер тупой :) не забывайте. Он же не знает, что вы хотите тут сделать и в каком порядке, и рассуждает примерно так:
Сравниваем x и y. Асбурдно? Для человека да... Поэтому нужно придерживаться соглашений и разъяснять, что вы хотите сделать, компьютеру (точнее, компилятору, который ваш текст переводит в готовую программу), как малышу - вот здесь так, вот тут эдак. Хочу, чтобы (x было больше y) AND (y было больше z). Компьютер всегда все делает последовательно! Он не может, как человек, сообразить, в чем смысл целого выражения x > y > z, ему его надо предварительно обязательно проанализировать и разобрать на кусочки. Мы уже говорили про типы данных. В переменных типа Integer могут храниться только целые числа. В переменных типа Real могут храниться только числа с плавающей запятой (дробные; они конечно могут быть вроде целые - 5.0 например, но все равно считаются дробными всегда, независимо от значения). Другие переменные (тип String) могут хранить строки - последовательности символов. До них мы еще доберемся. А есть особый тип Boolean. Переменные этого типа хранят так называемые логические значения. А значений этих всего два - истина и ложь. Называются они так :) От них и двоичная логика произошла вся, слышали наверное? Бит - это одно логическое значение, да или нет, истина или ложь, 1 или 0, true или false. То есть если целых значений может быть бесконечно много - 1,2,3,5,8,11,... и дробных тоже, и строк, то логических значений всего два. Но хранятся все значения - в переменных - единообразным способом. Компьютеру все равно, что вы будете хранить в переменной (ячейке памяти) - число, строку или бит. У него все равно все в виде чисел только внутри представлено :) Просто достаточно указать переменную с соответствующим типом, и все:
var n: Integer; b - это имя переменной, я его просто так взял, можете заменить на любое другое, какое вам нравится.
В переменной n хранятся целые числа:
В переменной x хранятся числа с плавающей запятой:
В переменной b хранятся логические значения: Только в n или x мы можем записать любое из бесконечного числа значений численных, а в b - только два.
b := true; Потому что логических значений всего два. В Паскале и Бейсике они записываются true и false. В Си достаточно числа 1 или 0. Точно так же, как мы можем складывать или вычитать целые и другие числа, так же мы можем делать определенные манипуляции и с логическими значениями. Операций таких основных, которые бывают нужны на практике, три. Операция AND. Называется еще логическое умножение. Есть численное умножение, чтобы числа умножать, а есть логическое - чтобы "умножать" true/false. Только для чисел уже есть символ "*", а для логических значений вместо * слово AND взято. Для наглядности, считается :)
2 * 3 будет 6.
true and false = false
Операция OR. Логическое сложение. Она обратна AND - если хотя бы один операнд истинен (true), то и результат истинен. И только если Вот примерно как:
var n: Integer;
var b: Boolean; Если я хочу деньги получать И ничего не делать (все вместе и побыстрее :), то надо AND использовать. А если хочу деньги получать ИЛИ ничего не делать (хоть что-нибудь :) - тогда OR. А зачем это все надо-то? :) Зачем это придумано, Boolean какой-то? Надо это все собственно компьютеру прежде всего. Чтобы человек записал алгоритм в виде, удобном не человеку, а машине. Потому что плохо формализованные алгоритмы, на естественном языке, представить в однозначном и понятном компьютеру виде пока не удается. Есть средства графического создания структуры программы, но они тоже по своему сложны и особого распространения не получили, пока. Мы со временем и их изучим, но это еще нескоро. Заметили, что как только мы перешли от привычных нам понятий (типы числовых значений) к привычным машине (логические значения), сразу трудности возникли? Но придется нашему неразумному малышу-компьютеру помогать, ничего не поделаешь. Логические значения показывают результат сравнения различных значений - чисел, строк, да и сами логические величины можно сравнивать тоже. Как думаете, равно ли значение true значению true? :) И чему будет равен результат такого сравнения? Только для этого, по большому счету, логические значения нам и нужны. Возьмем выражение (2 = 2). Когда оно встречается в программе, компьютер его вычисляет (он ведь больше и не умеет ничего!) и получает некоторый результат сравнения. Ну как результатом умножения 2*2 будет значение 4 (число), а вот результатом сравнения (2 = 2) будет логическое значение true. Понятно, почему истина? :) b := (2 = 2); В переменную b запишется значение true. Ясно, почему? Так как выражения типа (2 = 2) или (x > 5) после их вычисления дают true или false, то такие выражения можно связывать друг с другом операциями and и or, предназначенными для логических значений: b := (x > 5) and (y < 10); b := (x <> 5) or (y >= 100); Все равно результатом их вычисления будет boolean-значение (одно из двух :). Понятно? В условном операторе проверяется, чтобы после if следовало выражение, значение которого- логическая величина. Можно так написать: if (x <> 5) or (y >= 100) then ... А можно сначала это выражение посчитать, а потом его результат указать:
... Ведь и одно-единственное указание переменной b считается на самом деле выражением уже. Компьютеру без разницы, запишете вы (b+5)*0.4 или (b+0) или (b) или b , для него это все - выражения, которые нужно вычислить. Поэтому никакой принципиальной разницы между if (x <> 5) or (y >= 100) then ... и
b := (x <> 5) or (y >= 100); нету. Хотите, для наглядности можете так записать: if (b) then ... или if b = true then ...
Насчет Not. В арифметике есть операция "унарный минус" - изменение знака числа то есть.
x := 5; В y запишется не +5, а -5, потому что в переменной x было значение 5, а затем оно выражением -x было изменено на противоположное. Эта операция предначена только для чисел. А для логических значений ее своеобразным аналогом будет NOT (НЕ). Что такое НЕ истина? Ложь. А НЕ ложь? Истина.
not true = false
b := (6 > 5); В переменную d запишется false, потому что значение переменной b - true. В следующем занятии опубликуем ответы на упражнения, тогда понятно будет по практическим примерам тех, кто сделал сразу. Но если пока непонятно, не забивайте себе голову boolean-ами. Просто знайте, как условие записать логическое, и все. Например, наибольшее из трех чисел как-то так можно найти:
if (x >= y) and (x >= z) then Делайте, главное, упражнения эти, постарайтесь их на практике сделать. Теорию потом можно изучить :) (c) 2004 Сергей Бобровский bobrovsky@russianenterprisesolutions.com
Школа программирования с нуля
Все предыдущие выпуски базового курса тут:
А перекачать их одним архивом можно отсюда: |
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.prognull |
Отписаться |
В избранное | ||