Программирование. Стили программирования

Автор работы: Пользователь скрыл имя, 25 Февраля 2012 в 17:25, курсовая работа

Краткое описание

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

Содержимое работы - 1 файл

РОСОБРАЗОВАНИЕ.docx

— 42.80 Кб (Скачать файл)

Basic широко распространен на  ЭВМ различных типов и очень  популярен в среде программистов,  особенно начинающих. Существует  множество диалектов этого языка,  мало совместимых между собой. Basic активно поглощает многие  концепции и новинки из других  языков. Поэтому он достаточно  динамичен, и нельзя однозначно  определить его уровень.

Pascal (Паскаль) является одним  из наиболее популярных среди  прикладных программистов процедурным  языком программирования, особенно  для ПЭВМ. Разработанный в 1970 году  швейцарским специалистом в области  вычислительной техники профессором  Н. Виртом, язык назван в честь  французского математика и по  замыслу автора предназначался  для обучения программированию. Однако язык получился настолько  удачным, что стал одним из  основных инструментов прикладных  и системных программистов при  решении задач вычислительного  и информационно-логического характера.  В 1979 году был подготовлен проект  описания языка — Британский  стандарт языка программирования Pascal BS6192, который стал также и международным стандартом ISO 7185.

В языке Pascal реализован ряд концепций, рассматриваемых как основа «дисциплинированного»  программирования и заимствованных впоследствии разработчиками многих языков. Одним из существенных признаков  языка Pascal является последовательная и достаточно полная реализация концепции  структурного программирования. Причем это осуществляется не только путем  упорядочивания связей между фрагментами  программы по управлению, но и за счет структуризации данных. Кроме  того, в языке реализована концепция  определения новых типов данных на основе уже имеющихся. Этот язык, в отличие от языка С, является строго типизированным. Pascal характеризуется:

    • высоким уровнем;
    • широкими возможностями;
    • стройностью, простотой и краткостью;
    • строгостью, способствующей написанию эффективных и надежных программ;
    • высокой эффективностью реализации на ЭВМ.

Pascal реализован на ЭВМ различных  типов, но наиболее распространен  и развит для ПЭВМ. В настоящее  время широко используются такие  версии этого языка для ПЭВМ, как Borland Pascal и Turbo Pascal.

 

 

 

  • Функциональное программирование
  •  

    Сущность функционального (аппликативного) программирования определена А. П. Ершовым  как «... способ составления программ, в которых единственным действием  является вызов функции, единственным способом расчленения программы  на части является введение имени  для функции, а единственным правилом композиции — оператор суперпозиции функции. Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более, блок-схем, ни передачи управления».

    Роль основной конструкции в  функциональных языках играет выражение: К выражениям относятся скалярные  константы, структурированные объекты, функции, тела функций и вызовы функций. Функция трактуется как однозначное  отображение из X в X, где X — множество  выражений.

    Аппликативный язык программирования включает следующие элементы:

    классы констант, которыми могут  манипулировать функции;

    набор базовых функций, которые  программист может использовать без предварительного объявления и  описания;

    правила построения новых функций  из базовых;

    правила формирования выражений на основе вызовов функций.

    Программа представляет собой совокупность описаний функций и выражения, которые  необходимо вычислить. Данное выражение  вычисляется посредством редукции, то есть серии упрощений, до тех пор, пока это возможно по следующим правилам: вызовы базовых функций заменяются соответствующими значениями; вызовы не базовых функций заменяются их телами, в которых параметры замещены аргументами.

    Функциональное программирование не использует концепцию памяти как  хранилища значений переменных. Операторы  присваивания отсутствуют, вследствие чего переменные обозначают не области  памяти, а объекты программы, что  полностью соответствует понятию  переменной в математике. В принципе, можно составлять программы и  вообще без переменных. Кроме того, нет существенных различий между  константами и функциями, то есть между программами и данными. В результате этого функция может  быть значением вызова другой функции  и может быть элементом структурированного объекта. Число аргументов при вызове функции не обязательно должно совпадать  с числом параметров, указанных при  ее описании. Перечисленные свойства характеризуют аппликативные языки  как языки программирования очень  высокого уровня.

    Первым таким языком был LISP(Лисп) (LISt Processing — обработка списков), созданный  в 1959 году. Цель его создания состояла в организации удобства обработки  символьной информации. Существенная черта этого языка — унификация программных структур и структур данных: все выражения записываются в виде списков.

     

     

  • Логическое программирование
  •  

    Новую область — логическое, или  реляционное программирование, —  открыло появление языка PROLOG (Пролог) (PROgramming in LOGic — программирование в  терминах логики). Этот язык был создан французским ученым А. Кольмероэ  в 1973 году. В настоящее время известны и другие языки, однако наиболее развитым и распространенным языком логического  программирования является именно Пролог. Так, имеется свыше 15 различных его  реализаций на ПЭВМ. Языки логического  программирования, в особенности Пролог, широко используются в системах искусственного интеллекта, рассматриваемых в данном учебном пособии.

    Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между  объектами (в терминах условий или  ограничений) и цели (запроса). Процесс  выполнения программы трактуется как  процесс общезначимости логической формулы, построен- ной из программы  по правилам, установленным семантикой используемого языка. Результат  вычисления является побочным продуктом  этого процесса. В реляционном  программировании нужно только специфицировать  факты, на которых алгоритм основывается, а не определять последовательность шагов, которые требуется выполнить. Это свидетельствует о декларативности  языка логического программирования. Она метко выражена в формуле  Р. Ковальского: «алгоритм = логика + управление». Языки логического программирования характеризуются:

    высоким уровнем;

    строгой ориентацией на символьные вычисления;

    возможностью инверсных вычислений, то есть переменные в процедурах не делятся на входные и выходные;

    возможной логической неполнотой, поскольку  зачастую невозможно выразить в программе  определенные логические соотношения, а также невозможно получить из программы  все выводы правильные.

    Логические программы, в принципе, имеют небольшое быстродействие, так как вычисления осуществляются методом проб и ошибок, поиском  с возвратами к предыдущим шагам.

     

     

  • Объектно-ориентированное  программирование
  •  

    Прототипом объектно-ориентированного программирования послужил ряд средств, входящих в состав языка SIMULA-67. Но в  самостоятельный стиль оно оформилось с появлением языка SMALLTALK, разработанного А. Кеем в 1972 году и первоначально  предназначенного для реализации функций  машинной графики.

    В основе объектно-ориентированного стиля программирования лежит понятие  объекта, а суть его выражается формулой: «объект - данные + процедуры». Каждый объект интегрирует в себе некоторую  структуру данных и доступные  только ему процедуры обработки  этих данных, называемые методами. Объединение  данных и процедур в одном объекте называется инкапсуляцией и присуще объектно-ориентированному программированию.

    Для описания объектов служат классы. Класс определяет свойства и методы объекта, принадлежащего этому классу. Соответственно, любой объект можно  определить как экземпляр класса.

    Программирование рассматриваемого стиля заключается в выборе имеющихся  или создании новых объектов и  организации взаимодействия между  ними. При создании новых объектов свойства объектов могут добавляться  или наследоваться от объектов-предков. В процессе работы с объектами  допускается полиморфизм — возможность  использования методов с одинаковыми  именами для обработки данных разных типов.

    К наиболее современным объектно-ориентированным  языкам программирования относятся C++ и Java.

    Язык 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++ является то, что первый из них  является интерпретируемым, а второй – компилируемым. Синтаксис языков практически полностью совпадает.

    С точки зрения возможностей собственно объектно-ориентированных средств  язык Java обладает рядом преимуществ  перед языком C++. Так, язык Java демонстрирует  более гибкую и мощную систему  инкапсуляции информации. Механизм наследования, реализованный в Java, обязывает к  более строгому подходу к программированию, что улучшает надежность и понимаемость кода. Язык же C++ обладает сложной, неадекватной и трудной для понимания системой наследования. Возможности динамического связывания объектов одинаково хорошо представлены в обоих языках, однако, синтаксическая избыточность C++ заставляет и здесь отдать предпочтение языку Java.

    В силу своей конструктивности идеи объектно-ориентированного программирования используются во многих универсальных  процедурных языках. Так, например, в состав интегрированной системы  программирования на языке PASCAL (корпорации Borland International) версии 5.5 входит специальная  библиотека объектно-ориентированного программирования Turbo Vision.

    В последнее время многие программы, в особенности объектно-ориентированные, реализуются как системы визуального  программирования. Отличительной особенностью таких систем является мощная среда  разработки программ из готовых «строительных  блоков», позволяющая создать интерфейсную часть программного продукта в диалоговом режиме, практически без кодирования  программных операций. К числу  объектно-ориентированных систем визуального  программирования относятся; Visual Basic, Delphi, C++Builder и Visual C++.

     

    1. Практическая часть

     

     

    1. 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;

                                    {если еще не подставили, то пробуем}

    <

    Информация о работе Программирование. Стили программирования