НА ГЛАВНУЮТЕКСТЫ КНИГ БКАУДИОКНИГИ БКПОЛИТ-ИНФОСОВЕТСКИЕ УЧЕБНИКИЗА СТРАНИЦАМИ УЧЕБНИКАФОТО-ПИТЕРНАСТРОИ СЫТИНАРАДИОСПЕКТАКЛИКНИЖНАЯ ИЛЛЮСТРАЦИЯ

Библиотечка «За страницами учебника»

Учитесь программировать. Джонстон Г. — 1989 г.

Джонстон Г.

УЧИТЕСЬ ПРОГРАММИРОВАТЬ

*** 1989 ***


DjVu




PEKЛAMA Заказать почтой 500 советских радиоспектаклей на 9-ти DVD. Подробности...

Выставлен на продажу домен
mp3-kniga.ru
Обращаться: r01.ru
(аукцион доменов)



 

ПРЕДИСЛОВИЕ
      В основе предлагаемого руководства лежит опыт, накопленный в ходе преподавания вводного курса программирования в Королевском университете в Белфасте. В 1974 г. двенадцатинедельный курс был прочитан К.А.Р.Хоаром, а затем, с 1976 г., его читал и далее развил автор этой книги. Свои главные методические принципы профессор Хоар изложил в статье "Структурное программирование во вводных курсах" в "Infotech International State of the Art Report on Structured Programming" (1976). Большинство этих принципов сохранено, но вместе с тем некоторые акценты расставлены по-новому.
      Обучение программированию немного напоминает обучение игре в футбол. Кое-как и то и другое может делать любой, а вот достичь высокого класса весьма непросто. Здесь имеют значение три фактора: способности, заложенные от природы, обучение и практика. Что касается способностей, то они либо есть, либо нет; обучать может тот, кто обладает необходимым опытом, если он потрудился подумать, как научить других; практиковаться же каждый должен сам, причем, чем больше, тем лучше. Важно с самого начала выработать хороший стиль программирования, потому что избавляться от дурных привычек очень трудно. Это руководство рассчитано на то, чтобы "подковать" начинающих программистов. В него включены и тщательно подобранные упражнения, которые будут полезны для практики. Что же касается способностей, то будем надеяться, что они есть!
      Программы пишутся на каком-нибудь языке программирования, поэтому необходимой, хотя и не первостепенно важной задачей является обучение языку. В этой книге используется широко известный и получивший признание язык Паскаль. Одновременно он является своеобразным аппаратом для распространения принципов хорошего программирования, которые в равной степени могут применяться и во многих других языках. В полном объеме Паскаль здесь не нужен; попытка преподать весь язык во вводном курсе привела бы только к нехватке времени на изучение других, более важных вопросов. Кроме того, всякий, кто наблюдал за оаботой начинающих программистов, знает, что большой объем знаний о языке, полученный слишком рано, скорее мешает им, нежели помогает. И конечно же, преподаватель, опирающийся на данное руководство, может включить в свой курс дополнительные сведения о языке, если сочтет это целесообразным.
      Описываемые характеристики Паскаля соответствуют международному стандарту, который определен в "Описании компьютерного языка программирования Паскаль"1. Этот документ опубликован Британским институтом стандартов под номером BS 6192:1982 и Международной организацией по стандартизации под номером ISO 7185:1983.
      Книга обеспечит читателю хорошую подготовку для продолжения карьеры программиста либо на пути дальнейшего изучения Паскаля, либо в результате переключения на другой язык. Выработанный стиль программистского мышления, основанный на использовании коротких, максимально независимых друг от друга, аккуратно составленных подпрограмм, послужит хорошей базой для написания программ на любом языке последовательного программирования (например, на Фортране или Коболе) и для освоения более современных языков, обеспечивающих возможности параллельного программирования.
      В гл. 1 сообщаются исходные сведения и вводится терминология. Гл. 2-4 посвящены чтению и пониманию программ. Дело в том, что принцип "слово - серебро, молчание - золото" вполне применим и к программированию. Здесь он означает, что сначала нужно научиться разбираться в структуре программы и понимать, в чем ее смысл, и только после этого самому приниматься за написание программ. Сопутствующие этим главам упражнения закрепляют изложенные идеи и приглашают совершить первый шаг к написанию программ, а именно: модифицировать уже существующие программы. При выполнении упражнений читателю становится также ясно, что не всякая программа и не всегда работает правильно.
      Если книга используется как учебник, начальные главы можно изучать в то время, пока студенты знакомятся с компьютерной системой, на которой им предстоит работать. Они могут приобретать навыки ввода в компьютер программ и данных, выполнять существующие программы (желательно, чтобы в них были .тщательно подобранные синтаксические и логические ошибки), разбираться в результатах компиляции и редактировать программы и файлы с данными. Практическая деятельность дополнит первые теоретические уроки, поможет понять, что люди всегда делают ошибки, а компьютеры выполняют то и только то, что им предписано.
      Следующие две главы, гл. 5 и 6, касаются формального определения синтаксиса вообще и синтаксиса стандартного Паскаля в частности. Причина, по которой введены эти главы, следующая. Выполняя упражнения, читатель на собственном опыте убедится, что синтаксические ошибки являют собой реальную проблему, и, вероятно, захочет узнать, как избегать их. Один из путей - во всех деталях понять структуру применяемого языка. Впрочем, те, кому не терпится начать писать программы как можно скорее, могут отложить чтение этих глав и прочитать их после гл. 9.
      В гл. 7-9 решается задача конструирования программ путем их постепенного уточнения, причем акцент делается на их правильности и ясности. Практически с самого начала приветствуется употребление подпрограмм, а основная логика выполнения программы включается не в "головную программу", а в "головную процедуру". Подпрограммы не вкладываются друг в друга, и хотя это не традиционный способ написания коротких программ на Паскале, по ряду соображений он является наилучшим. (Тем специалистам, которым такая точка зрения кажется сомнительной, предлагается изучить программы, рассматриваемые на протяжении книги). В этих же главах досконально обсуждается природа программных ошибок и даются практические рекомендации по их предупреждению, обнаружению и исправлению.
      В следующей группе глав, гл. 10-14, читатель продолжает знакомиться с элементами Паскаля и методами построения правильных программ. Подчеркивается центральная роль булевских выражений, выступающих в качестве утверждений, пред- и постусловий, хотя они трактуются довольно неформально. При изучении процедур с параметрами (гл. 11) категорически не рекомендуется применять глобальные переменные; здесь же рассматриваются простые рекомендации по конструированию надежных процедур и функций. В последних двух главах этой группы отмечаются основные опасности, обусловленные тем, что большинство чисел нельзя точно представить в компьютере. Несмотря на то, что эти главы по необходимости оказались более математизированными, чем остальные, были приложены усилия к тому, чтобы и здесь свести математику к минимуму.
      Остальные главы посвящены структурам данных. Преобладающей методикой является представление новых типов данных с помощью записей (как правило, содержащих массивы) и использование независимых подпрограмм для выполнения операций с этими данными. Особое внимание уделено представлению и работе с одной из наиболее общих структур данных - последовательностью элементов. Дается несколько хороших, широко известных алгоритмов поиска и сортировки.
      Руководство для преподавателя, содержащее решения упражнений, можно приобрести у издателя. Я искренне благодарен Тони Хоару за то, что он расширил мои знания о программировании, заложил основы курса, на котором базируется эта книга, за то, что он предложил мне ее написать, и за поддержку и помощь, оказанные мне в период ее подготовки. Я также весьма признателен за помощь Генри Хиршбергу, Тому О’Дохерти, Дэвиду Слоуну, Бобу Лингарду, Морису Клинту и множеству анонимных рецензентов. И наконец, слова особой благодарности - моей жене Дженни, которая на протяжении всей работы была и главным консультантом, и контролером, и моим терпеливым помощником.
      Говард Джонстон, Белфасту апрель 1984
      1 Имеется в виду английское издание книги. - Примеч. пер.
     
      ПРОЦЕССЫ, ПРОЦЕССОРЫ И ПРОГРАММЫ
      1.1. Обработка информации
      Компьютер - машина, обрабатывающая информацию, изучать программирование - это учиться объяснять компьютеру, что он должен делать. Его работа состоит в выполнении команд, инструкций. Давайте рассмотрим для начала простую канцелярскую задачу и те инструкции, которые могут быть даны не компьютеру, а человеку - служащему, обязанному их выполнять.
      Книготорговец издал каталог, содержащий аннотации к книгам по определенному предмету, и хочет разослать этот каталог некоторым из своих клиентов. У него есть картотека, где хранятся фамилии и адреса всех его клиентов и - для каждого клиента - список предметов, которыми этот клиент интересуется. Нужно просмотреть картотеку и надписать конверт каждому клиенту, в чью карточку вписан предмет каталога.
      Служащему могут быть даны инструкции типа следующих: запомнить предмет каталога;
      искать в картотеке сведения о тех клиентах, в сферу интересов которых . входит этот предмет, и записывать фамилию и адрес каждого такого клиента на отдельном конверте.
      Предположим, что предмет каталога - "психология" и что информационная картотека представляет собой совокупность заполненных карточек. Давайте подробно рассмотрим, что будет делать служащий. Сначала он прочитает и запомнит название предмета "психология", а затем начнет по одной просматривать карточки. Он может посмотреть на первую карточку и сразу перейти к следующей, потому что в первую карточку не вписана "психология" как предмет, интересующий клиента. Он может пропустить еще несколько карточек, но рано или поздно ему попадется карточка, в которой записано "психология". Тогда фамилию и адрес с этой карточки он перепишет на конверт. Так он будет действовать, пропуская одни карточки и надписывая конверты на основании других, до тех пор, пока не просмотрит всю картотеку. В результате, несмотря на то, что инструкций всего две, служащий выполнит длинную повторяющуюся последовательность действий. Мы будем называть такую последовательность действий процессом, а человека или машину, которые осуществляют процесс, - процессором.
      KOHEЦ ФPAГMEHTA КНИГИ

 

 

НА ГЛАВНУЮТЕКСТЫ КНИГ БКАУДИОКНИГИ БКПОЛИТ-ИНФОСОВЕТСКИЕ УЧЕБНИКИЗА СТРАНИЦАМИ УЧЕБНИКАФОТО-ПИТЕРНАСТРОИ СЫТИНАРАДИОСПЕКТАКЛИКНИЖНАЯ ИЛЛЮСТРАЦИЯ

 

Яндекс.Метрика


Творческая студия БК-МТГК 2001-3001 гг. karlov@bk.ru