Программирование. Стили программирования
Аннотация.
Теоретическая часть моей курсовой работы состоит заключается в раскрытии темы «Программирование. Стили программирования».
Программи́рование — процесс и искусство создания компьютерных программ и/или программного обеспечения с помощью языков программирования. Программирование сочетает в себе элементы искусства, фундаментальных наук (прежде всего математики) и инженерии.
Программа должна быть легко читаемой, ее структура должна соответствовать структуре и алгоритму решаемой задачи. Для этого необходимо следовать правилам хорошего стиля программирования. Стиль программирования — это набор правил, которым следует программист в процессе своей работы. Очевидно, что хороший программист должен следовать правилам хорошего стиля.
Хороший стиль программирования предполагает:
- использование комментариев;
- использование несущих смысловую нагрузку имен переменных, процедур и функций;
- использование отступов;
- использование пустых строк.
Следование
правилам хорошего стиля программирования
значительно уменьшает
Практическая часть – написать игру «100 спичек»: из кучки первоначально содержащей 100 спичек, двое играющих (причем один из них – компьютер, а второй – пользователь) поочередно берут по несколько спичек: не менее одной и не более десяти. Выигрывает, взявший последнюю спичку.
Содержание:
- Теоретическая часть
- Программирование..............
.............................. .............................. .............................. ...4 - Стили программирования..............
.............................. .............................. ......................4 - Классификация стилей программирования..............
.............................. ........................5 - Процедурное программирование..............
.............................. .............................. ..........6 - Функциональное программирование..............
.............................. .............................. ....9 - Логическое программирование..............
.............................. .............................. ...........10 - Объектно-ориентированное
программирование..............
.............................. .............11 - Практическая часть
- Задача и программный код...........................
.............................. .............................. .....14 - Блок-схема процедуры.....................
.............................. .............................. ..................17 - Список литературы....................
.............................. .............................. .............................. ..18 - Теоретическая часть
- Программирование
Программи́рование — процесс и искусство создания компьютерных программ и/или программного обеспечения с помощью языков программирования. Программирование сочетает в себе элементы искусства, фундаментальных наук (прежде всего математики) и инженерии.
В узком смысле слова, программирование
рассматривается как
Программирование включает в себя:
- Анализ;
- Проектирование - разработка алгоритма;
- Кодирование и Компиляцию - написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора;
- Тестирование и отладку - выявление и устранение ошибок;
- Сопровождение.
- 2. Стили программирования
Работая над программой, программист, особенно начинающий, должен хорошо представлять, что программа, которую он разрабатывает, предназначена, с одной стороны, для пользователя, с другой — для самого программиста. Текст программы нужен прежде всего самому программисту, а также другим людям, с которыми он совместно работает над проектом. Поэтому для того, чтобы работа была эффективной, программа должна быть легко читаемой, ее структура должна соответствовать структуре и алгоритму решаемой задачи. Как этого добиться? Надо следовать правилам хорошего стиля программирования. Стиль программирования — это набор правил, которым следует программист в процессе своей работы. Очевидно, что хороший программист должен следовать правилам хорошего стиля.
Правила хорошего стиля - результат соглашения между программистами. Считается, что в соответствии с правилами хорошего стиля программный код должен поддерживать:
- очевидную логику;
- естественные выражения;
- осмысленные имена;
- аккуратное форматирование;
- развернутые комментарии;
- отсутствие хитрых трюков и необычных конструкций.
Следование правилам хорошего стиля программирования значительно уменьшает вероятность появления ошибок на этапе набора текста, делает программу легко читаемой, что, в свою очередь, облегчает процессы отладки и внесения изменений.
Четкого критерия оценки степени соответствия программы хорошему стилю программирования не существует. Вместе с тем достаточно одного взгляда, чтобы понять, соответствует программа хорошему стилю или нет.
Сводить понятие стиля программирования только к правилам записи текста программы было бы неверно. Стиль, которого придерживается программист, проявляется во время работы программы. Хорошая программа должна быть прежде всего надежной и дружественной по отношению к пользователю.
Надежность подразумевает, что программа, не полагаясь на "разумное" поведение пользователя, контролирует исходные данные, проверяет результат выполнения операций, которые по какой-либо причине могут быть не выполнены, например, операций с файлами.
Дружественность предполагает хорошо спроектированные диалоговые окна, наличие справочной системы, разумное и предсказуемое, с точки зрения пользователя, поведение программы.
- Классификация стилей программирования.
Большая часть работы программиста связана с написанием исходного кода на одном из языков программирования.
Различные языки программирования
поддерживают различные стили
Одним из важнейших признаков
Процедурное (императивное) программирование
является отражением архитектуры традиционных
ЭВМ, которая была предложена фон
Нейманом в 40-х годах. Теоретической
моделью процедурного программирования
служит алгоритмическая система
под названием «машина
Программа на процедурном языке
программирования состоит из последовательности
операторов (инструкций), задающих процедуру
решения задачи. Основным является
оператор присваивания, служащий для
изменения содержимого областей
памяти. Концепция памяти как хранилища
значений, содержимое которого может
обновляться операторами
Выполнение программы сводится
к последовательному выполнению
операторов с целью преобразования
исходного состояния памяти, то есть
значений исходных данных, в заключительное,
то есть в результаты. Таким образом,
с точки зрения программиста имеются
программа и память, причем первая
последовательно обновляет
Процедурные языки характеризуются следующими особенностями:
- необходимостью явного управления памятью, в частности, описанием переменных;
- малой пригодностью для символьных вычислений;
- отсутствием строгой математической основы;
- высокой эффективностью реализации на традиционных ЭВМ.
Одним из важнейших классификационных
признаков процедурного языка является
его уровень. Уровень языка программирования
определяется семантической (смысловой)
емкостью его конструкций и степенью
его ориентации на программиста. Язык
программирования частично ликвидирует
разрыв между методами решения различного
рода задач человеком и
Двоичный язык является непосредственно машинным языком. В настоящее время такие языки программистами практически не применяются.
Язык Ассемблера — это язык,
предназначенный для
Язык Макроассемблера является
расширением языка Ассемблера путем
включения в него макросредств. С
их помощью в программе можно
описывать последовательности инструкций
с параметрами —
Другими словами, язык Макроассемблера представляет средства определения и использования новых, более мощных команд как последовательности базовых инструкций, что несколько повышает его уровень.
Языки Ассемблера и Макроассемблера
применяются системными программистами-
Язык программирования С (Си) первоначально был разработан для реализации операционной системы UNIX в начале 70-х годов. В последующем приобрел высокую популярность среди системных и прикладных программистов. В настоящее время этот язык реализован на большинстве ЭВМ.
В С сочетаются достоинства современных
высокоуровневых языков в части
управляющих конструкций и
Одна из наиболее существенных особенностей С состоит в нивелировании различий между выражениями и операторами, что приближает его к функциональным языкам. В частности, выражение может обладать побочным эффектом присваивания, а также может использоваться в качестве оператора. Нет также четкой границы между процедурами и функциями, более того, понятие процедуры не вводится вообще.
Синтаксис языка затрудняет программирование
и восприятие составленных программ.
Отсутствует и строгая
Ваsic(Бэйсик) (Beginners All-purpose Symbolic Instruction
Code) — многоцелевой язык символических
инструкций для начинающих) представляет
собой простой язык программирования,
разработанный в 1964 году для использования
новичками. Он был разработан как
простейший язык для непосредственного
общения человека с вычислительной
машиной. Поэтому первоначально
работа велась в интерактивном режиме
с использованием интерпретаторов.
В настоящее время для этого
языка имеются также и
Согласно концепциям, заложенным в Basic, этот язык в смысле строгости и стройности является антиподом языка Pascal. В частности, в нем широко распространены различные правила умолчания, что считается плохим тоном в большинстве языков программирования подобного типа.
Basic широко распространен на
ЭВМ различных типов и очень
популярен в среде
Pascal (Паскаль) является одним
из наиболее популярных среди
прикладных программистов
В языке Pascal реализован ряд концепций, рассматриваемых как основа «дисциплинированного» программирования и заимствованных впоследствии разработчиками многих языков. Одним из существенных признаков языка Pascal является последовательная и достаточно полная реализация концепции структурного программирования. Причем это осуществляется не только путем упорядочивания связей между фрагментами программы по управлению, но и за счет структуризации данных. Кроме того, в языке реализована концепция определения новых типов данных на основе уже имеющихся. Этот язык, в отличие от языка С, является строго типизированным. Pascal характеризуется:
- высоким уровнем;
- широкими возможностями;
- стройностью, простотой и краткостью;
- строгостью, способствующей написанию эффективных и надежных программ;
- высокой эффективностью реализации на ЭВМ.
Pascal реализован на ЭВМ различных
типов, но наиболее
Сущность функционального (аппликативного) программирования определена А. П. Ершовым как «... способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы на части является введение имени для функции, а единственным правилом композиции — оператор суперпозиции функции. Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более, блок-схем, ни передачи управления».
Роль основной конструкции в функциональных языках играет выражение: К выражениям относятся скалярные константы, структурированные объекты, функции, тела функций и вызовы функций. Функция трактуется как однозначное отображение из X в X, где X — множество выражений.
Аппликативный язык программирования включает следующие элементы:
классы констант, которыми могут манипулировать функции;
набор базовых функций, которые программист может использовать без предварительного объявления и описания;
правила построения новых функций из базовых;
правила формирования выражений на основе вызовов функций.
Программа представляет собой совокупность
описаний функций и выражения, которые
необходимо вычислить. Данное выражение
вычисляется посредством
Функциональное
Первым таким языком был LISP(Лисп) (LISt Processing — обработка списков), созданный в 1959 году. Цель его создания состояла в организации удобства обработки символьной информации. Существенная черта этого языка — унификация программных структур и структур данных: все выражения записываются в виде списков.
Новую область — логическое, или реляционное программирование, — открыло появление языка PROLOG (Пролог) (PROgramming in LOGic — программирование в терминах логики). Этот язык был создан французским ученым А. Кольмероэ в 1973 году. В настоящее время известны и другие языки, однако наиболее развитым и распространенным языком логического программирования является именно Пролог. Так, имеется свыше 15 различных его реализаций на ПЭВМ. Языки логического программирования, в особенности Пролог, широко используются в системах искусственного интеллекта, рассматриваемых в данном учебном пособии.
Центральным понятием в логическом
программировании является отношение.
Программа представляет собой совокупность
определений отношений между
объектами (в терминах условий или
ограничений) и цели (запроса). Процесс
выполнения программы трактуется как
процесс общезначимости логической
формулы, построен- ной из программы
по правилам, установленным семантикой
используемого языка. Результат
вычисления является побочным продуктом
этого процесса. В реляционном
программировании нужно только специфицировать
факты, на которых алгоритм основывается,
а не определять последовательность
шагов, которые требуется выполнить.
Это свидетельствует о
высоким уровнем;
строгой ориентацией на символьные вычисления;
возможностью инверсных
возможной логической неполнотой, поскольку зачастую невозможно выразить в программе определенные логические соотношения, а также невозможно получить из программы все выводы правильные.
Логические программы, в принципе,
имеют небольшое
Прототипом объектно-
В основе объектно-ориентированного стиля программирования лежит понятие объекта, а суть его выражается формулой: «объект - данные + процедуры». Каждый объект интегрирует в себе некоторую структуру данных и доступные только ему процедуры обработки этих данных, называемые методами. Объединение данных и процедур в одном объекте называется инкапсуляцией и присуще объектно-ориентированному программированию.
Для описания объектов служат классы. Класс определяет свойства и методы объекта, принадлежащего этому классу. Соответственно, любой объект можно определить как экземпляр класса.
Программирование
К наиболее современным объектно-
Язык C++ был разработан в начале 80-х годов Б. Страуструпом, сотрудником лаборатории Bell корпорации AT&T. Им была создана компактная компилирующая система, в которой за основу был взят язык С, дополненный элементами языков BCPL, Simula-67 и Algol-68. К июлю 1983 года появился язык С с классами, а чуть позднее — C++. К 1990 году была выпущена третья версия языка C++, принятая комитетом ANSI в качестве исходного материала для его стандартизации.
В 1990 году сотрудник корпорации Sun Д. Гослинг на основе расширения C++ разработал объектно-ориентированный язык Oak, основным достоинством которого было обеспечение сетевого взаимодействия различных по типу устройств. Новая интегрируемая в Internet версия языка, получила название Java. Первый броузер, который поддерживал язык Java, разработан программистом корпорации Sun П. Нафтоном и получил название HotJava. С января 1995 года Java получает распространение в Internet.
Согласно официальному определению
авторов, Java является простым объектно-
Принципиальной разницей между Java
и C++ является то, что первый из них
является интерпретируемым, а второй
– компилируемым. Синтаксис языков
практически полностью
С точки зрения возможностей собственно
объектно-ориентированных
В силу своей конструктивности идеи объектно-ориентированного программирования используются во многих универсальных процедурных языках. Так, например, в состав интегрированной системы программирования на языке PASCAL (корпорации Borland International) версии 5.5 входит специальная библиотека объектно-ориентированного программирования Turbo Vision.
В последнее время многие программы,
в особенности объектно-
- Практическая часть
- 1. Задача и программный код.
Задача. Игра «100 спичек». Из кучки первоначально содержащей 100 спичек, двое играющих (причем один из них – компьютер, а второй – пользователь) поочередно берут по несколько спичек: не менее одной и не более десяти. Выигрывает, взявший последнюю спичку.
program Sto; {Игра "100 спичек"}
uses crt;
label l1,1,2,3;
const n=10; {максимальное количество спичек}
var kol,h:integer;
i,k:byte; {i – ход игрока , k – ход компьютера}
hor,x:boolean;
ch:char;
q:char; w,v,p,u,a,e:integer;
procedure schet; {процедура считает количество спичек}
begin
kol:=100;
end;
procedure proverka; {процедура проверяет числа}
var l:byte;
begin
for l:=1 to 100 do
begin
if ((n+1)*l+1<kol) and (kol<(n+1)*(l+1)+1) then
begin
i:=(n+1)-(kol-((n+1)*l+1));
hor:=true;
end; {не очень тогда берем одну спичку и ждем}
IF kol = (n+1) * l + 1 Then
begin
i:=n;
hor:=false;
end;
end;
end;
procedure hod; {процедура запроса хода противника}
var loose:byte; {переменная определяет количество ошибок ввода данных}
begin
loose:=0;
repeat
if loose>0 then writeln('можно выбрать от 1 до ',n);
write(' Ваш ход ');
readln(i);
loose:=loose+1;
until (i>=1) and (i<=n);
end;
begin
clrscr;
w:=1;
v:=0;
p:=0;
writeln('Здравствуйте!! Добро пожаловать в игру «Спички»))');
writeln('Для того, чтобы просмотреть правила игры нажмите 1; чтобы начать игру, нажмите 2.');
readln(u);
if u=1 then goto 1;
if u=2 then goto 2;
if (u<>1) and (u<>2) then writeln(''Для того, чтобы просмотреть правила игры нажмите 1; чтобы начать игру, нажмите 2.');
1: begin writeln('Игра «100 спичек»');
writeln('правила игры: имеется 100 спичек');
writeln('Учавствуют два игрока и поочереди берут от 1 до ',n,' спичек.');
writeln('Выигрывает тот, кто возьмет последнюю спичку.');
3: writeln('Для того, чтобы начать игру нажмите 1.');
readln(u);
if u=1 then goto 2 else goto 3; end;
2: clrscr;
Repeat
x:=true;
schet;
writeln('НАЧНЕМ ИГРУ!!');
writeln('Выберете игрока, который ходит первым');
writeln(' наберите 1, если хотите , чтобы первым ходил компьютер.');
writeln(' наберите 0, если хотите чтобы первым ходили Вы.');
readln(h);
if h=1 then proverka else begin hod;
kol:=kol-i;