Составление программа удаляющий всех комментариев из текст программы написанные на С++

СОДЕРЖАНИЕ 

ВВЕДЕНИЕ

ГЛАВА I. Комментарии

     1.1. О комментариях………………………………………………

     1.2. Типы комментариев на языке С++………………………….

     1.3.Алгоритм удаление всех комментариев из текста программ написанный на языке С++……………………………………………….

ГЛАВА II. Компоненты Java Swing.

     2.1. О Java Swing …………………………………………………..

     2.2. Нужные компоненты Java Swing…………………………….

ЗАКЛЮЧЕНИЕ`……………………………………………………………

БИБЛИОГРАФИЧЕСКИЙ СПИСОК…………………………………….

ПРИЛОЖЕНИЯ……………………………………………………………

 

     Введение

     

     Эволюция  языков программирования с момента появления первых электронных компьютеров, построенных для выполнения расчётов траектории движения артиллерийских снарядов во время второй мировой войны, была довольно драматической. Раньше программисты работали с самыми примитивными компьютерными командами, представлявшими собой часть машинного языка. Эти команды состояли из длинных строк единиц и нулей. Вскоре были изобретены ассемблеры, которые могли отображать машинные команды в мнемоническом представлении, более понятном для человека (например, команды ADD или MOV).

     Со  временем появились такие языки  высокого уровня, как BASIC и COBOL. Благодаря этим языкам появилась возможность программировать, используя логические конструкции из слов и предложений, например integer I = 100. Эти команды переводились в машинный язык то есть компилировались. Одно из основных преимуществ компилируемых языков программирования, состоит в том, что полученные программы могут выполняться на компьютерах без компиляции. При работе же с интерпретируемыми языками для выполнения готовой программы нужно обязательно иметь соответствующую программу-интерпретатор.

     Следующей шагом в программировании стало  появление визуальных сред программирования таких, как Visual C++ , позволяющих использовать визуальные компоненты, не описывая их самому , а брать их из библиотеки стандартных элементов . Это позволяет ускорить написание программ, облегчая тем самым работу программиста . А также позволяет использовать все возможности программирования под Windows, используя при этом относительно не сложные алгоритмы и функции. В связи с выше изложенным нами было выбрана для разработки проекта среда Visual C++ 6.0

 

      Язык программирования C++ – это универсальный язык программирования, который позволяет разрабатывать  программы в соответствии с разными  парадигмами: процедурным программированием, объектно-ориентированным, параметрическим. В данном курсе рассматриваются все основные возможности языка C++ и их применение при разработке объектно-ориентированных программ. Дается краткое описание библиотек языка C++, необходимых для создания типичных программ.

     Язык  Си++ является универсальным языком программирования, в дополнение к  которому разработан набор разнообразных  библиотек. Поэтому, строго говоря, он позволяет решить практически любую  задачу программирования. Тем не менее, в силу разных причин (не всегда технических) для каких-то типов задач он употребляется чаще, а для каких-то – реже.

     Си++ как преемник языка Си широко используется в системном программировании. На нем можно писать высокоэффективные  программы, в том числе операционные системы, драйверы и т.п. Язык Си++ – один из основных языков разработки трансляторов.

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

Распределенные  системы, функционирующие на разных компьютерах, также разрабатываются  на языке Си++. Этому способствует то, что у широко распространенных компонентных моделей CORBA и COM есть удобные  интерфейсы на языке Си++.

Обработка сложных структур данных – текста, бизнес-информации, Internet-страниц и т.п. – одна из наиболее распространенных возможностей применения языка. В прикладном программировании, наверное, проще назвать те области, где язык Си++ применяется мало.

Разработка  графического пользовательского интерфейса на языке Си++ выполняется, в основном, тогда, когда необходимо разрабатывать сложные, нестандартные интерфейсы. Простые программы чаще пишутся на языках Visual Basic, Java и т.п.

Программирование  для Internet в основном производится на языках Java, VBScript, Perl.

В целом  надо сказать, что язык Си++ в настоящее  время является одним из наиболее распространенных языков программирования в мире.

     На  этого курсовая работа мне надо удалить  всех комментариев из текста программ написанный на языке С++ и находить их количество. Для этого нам надо знать две знание.

     Первое, вид комментариев на С++ и как можно находить ей, алгоритм нахождение.

     Второе, для того чтобы показывать работающий программу нам нужно один из объект ориентированных языков и его библиотека работающий с формой. Я выбрал язык программирование Java. У него есть Java Swing библиотека работающий с формами.

 

ГЛАВА I. Комментарии.

О комментариях.

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

    макс = 100;    / / С помощью стандартного размера.

   / * Проверить вход для допустимых  значений и 

       печатать сообщение об ошибке  на учет, если проблемы.   * /

У нас  есть два типа комментариев   Здесь, на конец строки комментариев и блоков комментариев. Конец линии комментарий заканчивается в конце строки. Блок комментариев линия терминатора, и может продолжаться в течение нескольких линий, или быть меньше, чем одну строку.

Комментарии были вызваны замечаниями в BASIC. COBOL использовать ПРИМЕЧАНИЕ среди других видов комментарии. АЛГОЛ 60 используется зарезервированное слово комментарий начать комментарий и точка с запятой, чтобы прекратить комментарий.

Комментарий вопросы проектирования

Есть несколько  комментариев   вопросы проектирования   для нас, чтобы рассмотреть. Некоторые из них являются:

  • Где комментарии начать? Они начинаются в любом месте и в определенном столбце 0[1] ? Рано COBOL, BASIC, FORTRAN и начал комментариев в определенном положении.
  • Как комментариев закончилось? Очевидный выбор в конце строки или с комментарием терминатор, как Java * /.
  • Может комментарии гнездо? Если это так, точно как же синтаксис работы?
  • Как мы можем комментировать сотен строк кода, который имеет комментарии, когда мы хотим сделать, тестирования или отладки?

Некоторые из этих вопросов есть ответы на современные языки, но и другие вопросы еще не решены.

Назначение комментариев

Большинство специалистов сходятся во мнении, что  комментарии должны объяснять  намерения программиста, а не код; то, что можно выразить на языке программирования, не должно выноситься в комментарии — в частности, надо использовать говорящие названия переменных, функций, классов, методов и пр., разбивать программу на лёгкие для понимания части, стремиться к тому, чтобы структура классов и структура баз данных были максимально понятными и прозрачными и т. д. Есть даже мнение (его придерживаются в экстремальном программировании и некоторых других гибких методологиях программирования), что если для понимания программы требуются комментарии — значит, она плохо написана.

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

Комментарии часто используются для временного отключения части кода. В языках C и C++, некоторые рекомендуют использовать с той же целью директивы препроцессора (#if 0 … #endif).

Типы комментариев на языке С++

На языке С++  употребляется двух видов комментарии.

Первый  тип "Комментарий" на C++ представляет собой последовательность символов, начинающиеся с косой черты / звездочкой сочетание (/ *), которая рассматривается как один пробельный символ компилятора и игнорируются. Комментарий может содержать любую комбинацию символов из представимых набор символов, включая символы новой строки, за исключением "конец комментария" разделитель (* /). Комментарии могут занимать более одной строки, но не могут быть вложенными.

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

Используйте комментарии для документирования кода. Это пример комментария принимается  компилятором:

/ * Комментарий  может содержать ключевые слова,  такие как

    в  то время и без генерации  ошибок.  * /

Комментарии могут появляться на той же строке кода заявление:

cout ("Hello \ n"); / * Комментарии могут пройти здесь * /

Вы можете предшествовать функций или программных  модулей с описанием блока  комментарий:

/ * MATHERR.C иллюстрирует  написание ошибку рутина 

  * Для математических функций.

  * /

      Так как комментарии не могут содержать  вложенных комментариев, этот пример приводит к ошибке:

/ * Комментарий  эту процедуру для тестирования  

    / * Открыть файл * /

     F= ifstream ("myfile.cpp");

     .

     .

     .

  * /

Ошибка возникает, потому что компилятор распознает первый * / после слов Откройте файл, в конце  комментария. Он пытается обработать остальной  текст и выдает ошибку, когда он находит * / вне комментариев.

Хотя вы можете использовать комментарии для защиты определенных строк кода неактивные для тестовых целей, директивы препроцессора # Если и # ENDIF и условной компиляции представляют собой полезную альтернативу для решения этой задачи. Для получения дополнительной информации см. Директивы препроцессора в Preprocessor Reference.

Второй  тип комментария это конец строки комментария. Microsoft компилятор поддерживает однострочные комментарии предшествуют две косые черты (/ /). При компиляции с / Za (ANSI стандарт), эти замечания к ошибкам. Эти комментарии не может распространяться на второй линии.

/ / Это  действительно комментарий

Комментарии, начинающиеся с двух косых черт (/ /) прекращается на следующей строки символов, которые не предшествует символ. В следующем примере, символ новой строки предшествует обратный слэш (\), создавая «Управляющая последовательность". Эта управляющая последовательность заставляет компилятор рассматривать следующую строку как часть предыдущей строки. (Для получения дополнительной информации см. Escape-последовательности ).

/ / Мой  комментарий \

     I + +;

Таким образом, я + +; заявление закомментирована.

По умолчанию  для Microsoft C в том, что Microsoft расширений включена. Используйте / Za, чтобы отключить  эти расширения.

Синтаксис Комментарии

     Обратите  внимание, что некоторые языки (сборка, FORTRAN 90, и Perl) начинают комментарии только один символ, но и других языков (Ada, C + +) используют два символа, чтобы начать комментарий. С помощью двух символов начала комментария, такие как / / или / * помогает предотвратить случайное запуск комментарии, такие как точка с запятой один символ (;) на ассемблере и восклицательный знак (!) В FORTRAN 90. Еще одно наблюдение, мы должны использовать два символа, которые в противном случае не будет иметь смысла в языке. Двойной слэш / / делает очень хорошо в этом контексте, а / * не делать так же хорошо. Например, в C мы используем много указателей. Пусть у нас есть указатель   PTR, и вы хотите использовать * указатель, чтобы получить содержимое адрес на который указывает на. Тогда вы (! Не мне) может ввести следующую строку:

   = 1 / * Указатель + 4.3;

Видите ли вы здесь проблема? "/ * Указатель + 4.3" выглядит как начало комментария. Это одно из немногих мест в C, где  пространство   имеет большое  значение. Таким образом, мы должны изменить строку на:

   = 1 /   * Указатель + 4.3;   или 

   = 1 / (* указатель) + 4.3;

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

Вторая  проблема с меньшим 2-символьный комментарий  разделитель в том, что дополнительное пространство между двумя символами комментария разделитель вызовет комментарий будет хватать. Например:

   x_ptr = х / * Указатель 

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

Размещение  комментариев

Где можно  размещать комментарии? Можно пойти  комментарии до и после программы? В большинстве современных языков комментарии могут идти до или после программы. Но в C++ комментариях не допускается до первого заявления. В большинстве языков комментарии могут идти в любом месте пространства будет происходить только в текстовой строке или в другой комментарий.

В то время  как предыдущие правила общее  описание, где комментарии могут  идти, это не совсем правильно. Комментарии  не могут быть размещены где он прятался в начало или конец блока  комментариев. Например:

   / * Денни Ван кисточкой 

      написал хорошую программу 

  / /    с большим мастерством и мало  ума.   * /

Таким образом, вы были достаточно умны, чтобы  посмотреть, что случилось с выше комментарий? В последней строке, имеет и конец-строки комментария, который скрывает окончание блока комментариев. Я уверен, вы это видели.

Вложенные комментарии

Одной из серьезных проблем с нескольких строк комментариев   забывает о прекращении комментарий. В C + + можно часто имеют нечто вроде  этого:

   / * Переменные набора

      = 0;

   / * Установить максимальный размер * /

      MAXS = 100;

Что неправильного  в этом коде? Вернитесь назад и  взглянуть на него еще раз. Если вы пропустили это ошибка показывает, как легко, что ошибка не заметить. Первый комментарий был ошибочно не закрыта, так что заявление "= 0;" получает до eated   (Или поглотила ) В комментарии.

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

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

Есть  несколько путей решения этой проблемы вложенных комментариев. Одним из них является компилятор может предупреждать о всех вложенных комментариев, то есть комментарий, который имеет "/ *" в нем. Второе решение запретить вложенные комментарии, что делается в некоторых языках, в том числе C + +. Если комментарий начинается с / *, то не может быть другой / * в комментарии. Еще один способ избежать ошибки не прекращение комментарий для компилятора для проверки заявления терминаторов (точка с запятой) в комментариях и обеспечивать предупреждение.

В приведенном выше неправильный код, точка с запятой в конце строки "= 0;" будет генерировать предупреждения компилятором. В противном случае, мы можем позволить вложенные комментарии, но компилятор может указывать любые комментарии, которые не вкладываются должным образом, и предупреждают о вложенных комментариев. Разные языки используют разные подходы, и каждый подход, кажется, есть свои преимущества и недостатки.

Комментарии для сокрытия кода

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

   / / cout << "Count =" << количество << endl;

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

Мега-комментариев

Нам нужен  четвертый тип комментария , Мега-комментариев , Которые могут быть использованы, чтобы закомментировать код, который  содержит правильные замечания. Несколько языков имеют эту категорию.

Мало  языки имеют все четыре категории. И сплошной линии и конца строки комментариев можно сделать таким  же образом, так как все они  нуждаются является отправной показатель, так как оба они заканчиваются в конце строки. Блок комментария есть возможность указать начало и конец (разделители) замечаний. Таким образом, эти замечания могут быть использованы для коротких комментариев в середине строки кода или несколько строк комментариев. Мега-комментарии в настоящее время редко встречаются в языках, но очень полезно для комментирования кода с комментариями в коде.

В языках, которые имеют однострочные комментарии  и многострочные комментарии, тщательно  программист может создать свой собственный мега-комментариев. Например, в C + + можно использовать только одного комментария соответствии с / /. Затем с помощью / *. . . * / Для комментирования строк кода. Это позволяет избежать проблемы вложенных комментариев.

Алгоритм  удаление всех комментариев из текста программ написанный на языке С++

     Дано  текст s. В него возможно несколько строки. Нам нужно удалит все комментариев из него.

Для первого и второго типа комментарии нам нужно две булевые переменные для того чтобы показывать оно актив или нет. Первый тип для комментария (/ **/), второе для строковая комментария. Им отмечаем соответственно с first_comment и line_comment.  В начало они будет false. Комментарии возможно встретится в строковой переменной. Например:

            string  comments = “// , /*, */";

     На  этом строке они не является комментарии. Тогда нам нужно еще один переменный показывающий текущий символ принадлежит на строковые переменные или нет. Этого переменного отмечаем как string; Если его значение true тогда текущий символ принадлежат на строк, в противном случае нет.

    Проверяем  все символы текста с начало до конца, если:

1) Текущий символ равно ‘/’ и следующий символ равно ‘*’ , тогда если всех переменные равно на false то first_comment равняем на true, пропустим следующий шаг и продолжим дальше.

2) Текущий символ равно ‘*’ и следующий символ равно ‘/’  и first_comment равно true , first-comment равняем на false, пропустим следующий шаг и продолжим дальше .

3) Текущий символ равно ‘ ” ’ и first_comment и line_comment равно false тогда если string равно true то ему равняем на false, иначе ему равняем на true. Добавим текущий символ на ответ и продолжим дальше.

4) Текущий символ равно ‘/’ и следующий символ тоже равно ‘/’ , тогда если всех переменные равно на false то line_comment равняем на true, пропустим следующий шаг и продолжим дальше.

5)Не выполнено ни одной из предыдущих этапов, тогда если текущий символ не принадлежат ни одного комментарии т.е first_comment и line_comment равны false то, текущего символу добавим на ответ и продолжим дальше.

. 
ГЛАВА II . Компоненты Java Swing  библиотека.

                     О Java Swing .

Технология Swing - это UI Java-платформы. Она выступает  как программное обеспечение, управляющее  всем взаимодействием пользователя и компьютера. По существу, она служит посредником между пользователем и внутренностями компьютера. Как Swing делает это? Он предоставляет механизмы для управления аспектами UI, описанными в предыдущем разделе:

  • Клавиатура: Swing предоставляет способ перехвата пользовательского ввода.
  • Цвета: Swing предоставляет способ менять цвета, которые вы видите на экране.
  • Текстовое поле для ввода: Swing предоставляет текстовые компоненты для обработки всех повседневных задач.
  • Громкость музыки: Ну что ж ... Swing не совершенен.

В любом случае Swing предоставляет вам все инструменты, необходимые для создания вашего собственного UI.

Swing идет даже  на шаг дальше и реализует  известный шаблон проектирования c основными принципами UI. Этот шаблон  проектирования называется Модель-Представление-Контроллер (Model-View-Controller - MVC) и стремится "разделить роли". MVC хранит код, ответственный за внешний вид чего-нибудь, отдельно от кода, обрабатывающего данные, и отдельно от кода, реагирующего на взаимодействие и выполняющего изменения.

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

Теперь представьте  себе этот же показ мод, использующий шаблон проектирования MVC. Вместо одного человека, делающего все, роли разделяются. Модели для показа (естественно, не путайте с моделью как акронимом MVC) представляют одежду. Они выступают как представление. Они знают, как правильно показать одежду (данные), но абсолютно не знают, как создавать или проектировать ее. C другой стороны, дизайнер одежды работает за кулисами, изменяя ее при необходимости. Дизайнер выступает в роли контроллера. Это человек не знает, как пройтись по подиуму, но может создавать и изменять одежду. Дизайнер и модели работают с одеждой независимо друг от друга и имеют свою область компетенции.

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

JComponent

Базовым строительным блоком всей библиотеки визуальных компонентов Swing является JComponent. Это суперкласс каждого компонента. Он является абстрактным классом, поэтому в действительности вы не можете создать JComponent, но он содержит буквально сотни функций, которые каждый компонент Swing может использовать как результат иерархии классов. Очевидно, что некоторые концепции более важны, чем другие, но для целей этого руководства важными являются: