Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Три книги
Форум Точек.нет - общение без границ ! > Техномир > Программирование
jura_k
У меня есть три книги - учебники по программированию. Я не могу их прочитать вот уже 20 лет. В прошлом году я решил опять начать с начала. Вот эти книги:

(1) Основы информатики и вычислительной техники. Часть II. 1986 г.
(2) Б.И. Березин, С.Б. Березин. "Начальный курс C и C++". 1999 г.
(3) И.Г. Семакин, А.П. Шестаков. "Основы программирования". 2001 г.

Я собираюсь прочитать их в едином ключе. То есть попробовать прочитать все три книги так, будто это единый учебник по программированию. Что я собираюсь сделать? Текст книги разделяется на две части: теорию и задачи. В теории тоже есть задачи, учебные примеры, тексты программ. Я их выискиваю и записываю номера задач (начиная с номера страницы, где эта задача расположена), чтобы их можно было легко потом найти.

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

» Кликните сюда для просмотра оффтоп текста.. «
jura_k
- - - - - - - -

Далее нужно собрать компьютер для программирования. Я взял очень мощный компьютер: Celeron 333 MHz, RAM 128 Mb, HDD IDE 60 Gb. Менее мощного не нашлось.
На HDD я разбил внушительный диск C: размером 100 Mb в формате FAT16.
Установил туда MS-DOS, русификатор (без русификатора тоже можно, но как-то тяжко), языки программирования "Turbo C 2.0" и "Microsoft Basic 4.0". Самое маленькое, что у меня нашлось.
Всё вместе это заняло где-то 2-3 Mb места. И осталось ещё около 100 Mb для собственно творчества.

К сожалению, жёсткий диск HDD оказался настолько мощным, что у моего очередного импульсного блока питания не хватило мощности, чтобы его запустить. Пришлось переставить HDD IDE на ещё более мощный компьютер: Celeron 1700 MHz, RAM 512 Mb. Но это обходное решение, без которого можно обойтись.
jura_k
Теперь у меня есть список задач из всех трёх книг. Как их решать? Если решать всё подряд, то получается белиберда, которую невозможно читать. Как говорится, "чёрт-те-что и сбоку хвостик".
Я решил внести хоть какую-то упорядоченность. Поэтому я разбил все задачи по категориям, в первую очередь - по входным данным: а) на входе три целых числа; б) вводить ничего не надо; в) на входе 6 целых чисел; г) на входе три дробных числа и так далее. Получилось следующее разбиение:

» Кликните сюда для просмотра оффтоп текста.. «
jura_k
- - - - - - -

Казалось бы, теперь можно решать.
В качестве базового языка программирования я выбрал самый древний, на котором учился программировать: Бейсик-Микрон, Basic-G, GW-Basic (читается как "Живи, Бейсик!).

И тут вдруг выяснилось, что в этом языке программирования нет целых чисел. Ну нет их, и всё тут! Когда мы пишем объявление переменных типа

Dim A, B, C

, то по умолчанию создаются три переменных ДРОБНОГО типа (то есть с плавающей запятой). И как мне теперь решать задачи, в которых оперируют с целыми числами? Подход принципиально различный. И ведь таких задач большинство.
Конечно, целые числа в Бейсике есть. Но там нужно добавлять суффикс. Так же, как и для работы со строками ($).

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

Ну а пока я решил воспользоваться более "продвинутым" языком программирования - "Microsoft Basic 4.0". Он нашёлся у меня на CD для программистов. И что особенно важно: там есть HELP со справкой по всем командам языка.

Там уже есть целые числа. Объявление выглядит так:

Dim A as integer, B as integer, C as integer

Если же мне нужны дробные числа, то нужно писать вот так:

Dim D as single, E as single

- - - - - - -

Таким образом мне удалось прорешать большинство задач из категорий "ввести три целых числа" и "ничего не вводить".
При решении задач с целыми числами постоянно приходилось следить, чтобы эти целые числа не были больше, чем 32767 и меньше, чем -32768, потому что при возникновении таких чисел ВНУТРИ программы она останавливала свою работу, выдавала сообщение о переполнении и завершалась. И таких программ было МНОГО.

Получилась программа:

» Кликните сюда для просмотра оффтоп текста.. «
jura_k
Три варианта решения задачи "Числа Фибоначчи".

» Кликните сюда для просмотра оффтоп текста.. «


» Кликните сюда для просмотра оффтоп текста.. «


» Кликните сюда для просмотра оффтоп текста.. «
jura_k
del.
jura_k
Не все йогурты одинаково полезны. Не все программы можно написать на Бейсике.

Например, работа с указателями. В Бейсике их нет. А в C есть удобный инструмент.
Поскольку одна из книг написана на C, то мне пришлось проапгрейдиться с "Microsoft Quick Basic 4.0" до "Borland Turbo C 2.0" и программировать на нём.

Другой пример: массивы. В Бейсике они есть. Но в ряде случаев удобнее пользоваться языком C.
Подпрограммы. Они есть в Бейсике, называются суб-программами, или процедурами. Вызываются GOSUB. Но язык C в этом отношении практичнее.

» Кликните сюда для просмотра оффтоп текста.. «
Бульбаш
Повторюсь...

Мазохист... )))
jura_k
Я хочу узнать, что там написано. Я точно знаю, что все (почти все) эти задачи я могу решить. Никто не утруждался решить эти задачи до конца.
jura_k
У меня очень мощный компьютер - Celeron 333 MHz. На HDD IDE там установлен MS-DOS. Но я решил спуститься ещё глубже и установил GW-Basic. (Ну как... установил... Просто скопировал в рабочую папку файл программы.)

GW-Basic существовал ещё до появления 286-го компьютера. Достаточно сказать, что на компьютере TESLA KOVO работал именно Basic (MS-DOS там ещё не было), а 286-ой компьютер, где можно было запустить игру "Death Track", был неимоверно крутым. А теперь представьте, как этот Basic работает на моём Celeron 333 MHz, который вообще-то Pentium II.

Конфигурация Celeron 333 MHz, которую я собрал, вообще-то очень мощная. На HDD IDE размером 0.06 Tb размечен диск C: размером аж целых 0.0001 Tb. Для сравнения: все данные на этом компьютере, включая операционную систему MS-DOS, три языка программирования - Turbo C, Microsoft Quick Basic 4.0 и GW-Basic, а также все мои программы - занимают всего лишь 3-4%, то есть около 0.000003 - 0.000004 Tb.

И вот со всем этим богатством мне надо разбираться.
Сейчас я наконец-то приступил к программированию на GW-Basic. Это ведь даже не MS-DOS. Это ЕЩЁ ХУЖЕ.
Во-первых, оттуда нет выхода. Не предусмотрен.
Во-вторых, там нет типов переменных. Вернее, есть один - "single", он же "float". При объявлении новой переменной можно не заморачиваться с её типом.
Структурное программирование? Не-а, не слышали. Когда надо, царствует GOTO в паре с условным переходом.

Подпрограммы есть, но я их не пользую.
jura_k
Наконец-то сбылась моя мечта, и компьютер есть не только в школе, но и у меня дома. И можно программировать спокойно, не опасаясь, что кончится урок и учитель выгонит из класса. Если что, я уже шесть задач решил из учебника.
jura_k
Имеется список задач из трёх книг. Первоначально я собирался решить все задачи в GW-Basic. Но оказалось, что там есть работа с целыми числами. А в GW-Basic только дробные.
Задачи с целыми числами, а также без ввода данных я решил в Microsoft Quick Basic 4.0.

Но и это ещё не всё. Оказалось, что некоторые примеры из учебника можно решать только с применением языка C, так как в них используются особсенности этого языка. Кроме того, задачи на массивы я частично решил в Basic 4.0, а частично - в языке "Borland Turbo C 2.0" из-за удобства.

Задачи на строки и строковые переменные я решил не изучать в Basic, потому что лень, а для удобства использовал Turbo C 2.0, так как там буквы - это целые числа от 0 до 256, и с ними можно работать как с числами, а это гораздо удобнее, чем Бейсик.

И вот когда я со всем этим разобрался, я наконец-то приступил к решению задач из учебника на языке GW-Basic.
Первый блок задач касается ввода чисел с плавающей запятой. Всего я решил 15 задач.
Потом идут две задачи на ввод 8 чисел с плавающей запятой (в прошлом блоке было 3). Таких задач две штуки. Вот их и буду решать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2026 IPS, Inc.