Форматирование исходного кода программы в стиле Modern

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 18.09.2016
Размер файла 27,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ПОВОЛЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ

по дисциплине «Программирование на языке С++» (специальности) 090303.65 информационная безопасность автоматизированных систем

на тему «Форматирование исходного кода программы в стиле Modern»

Факультет «Информатики и вычислительной техники»

Кафедра «Информационная безопасность»

Йошкар-Ола 2015

ОГЛАВЛЕНИЕ

код форматирование интерфейс

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

1.1 Понятие и сущность стандартов оформления кода

1.2 Основные виды стилей форматирования в языке Си

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

2.1 Постановка задачи

2.2 Описание алгоритма решения

2.3 Описание реализации

2.4 Описание интерфейса программы

2.5 Требование к системе

Список литературы

Приложение

1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1 Понятие и сущность стандартов оформления кода

Стандарт оформления кода (стандарт кодирования, стиль программирования) (англ. coding standards, coding convention или programming style) -- набор правил и соглашений, используемых при написании исходного кода на некотором языке программирования. Наличие общего стиля программирования облегчает понимание и поддержание исходного кода, написанного более чем одним программистом, а также упрощает взаимодействие нескольких человек при разработке программного обеспечения.

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

Образцом для стандарта кодирования может стать набор соглашений, принятых в какой-либо распространённой печатной работе по языку (например, стандарт кодирования на языке Си, получивший сокращённое наименование K&R, происходит из классического описания Си его авторами -- Керниганом и Ричи), широко применяемая библиотека или API (так, на распространение венгерской нотации явно повлияло её использование в MS-DOS и Windows API, а большинство стандартов кодирования для Delphi используют, в той или иной мере, манеру кодирования библиотеки VCL). Реже разработчик языка выпускает подробные рекомендации по кодированию. Например, выпущены стандарты кодирования на C# от Microsoft и на Java от Sun. Предложенная разработчиком или принятая в общеизвестных источниках манера кодирования в большей или меньшей степени дополняется и уточняется в корпоративных стандартах.

Стандарт сильно зависит от используемого языка программирования. Например, стандарт оформления кода для языка Си будет серьёзно отличаться от стандарта для языка BASIC. В целом, исходя из назначения стандарта, обычно он имеет целью добиться такого положения, когда программист достаточной квалификации мог бы дать заключение о функции, выполняемой конкретным участком кода, а в идеале -- также определить его корректность, изучив только сам этот участок кода или, во всяком случае, минимально изучив другие части программы. Иными словами, смысл кода должен быть виден из самого кода, без необходимости изучать контекст. Поэтому стандарт кодирования обычно строится так, чтобы за счёт определённого визуального оформления элементов программы повысить информативность кода для человека.

Обычно, стандарт оформления кода описывает:

· способы выбора названий и используемый регистр символов для имён переменных и других идентификаторов:

· запись типа переменной в её идентификаторе (венгерская нотация) и

· регистр символов (нижний, верхний, «верблюжий», «верблюжий» с малой буквы), использование знаков подчёркивания для разделения слов;

· стиль отступов при оформлении логических блоков -- используются ли символы табуляции, ширина отступа;

· способ расстановки скобок, ограничивающих логические блоки;

· использование пробелов при оформлении логических и арифметических выражений;

· стиль комментариев и использование документирующих комментариев.

Вне стандарта подразумевается:

· отсутствие магических чисел;

· ограничение размера кода по горизонтали (чтобы помещался на экране) и вертикали (чтобы весь код файла держался в памяти), а также функции или метода в размер одного экрана.

1.2 Основные виды стилей форматирования в языке си

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

Используемый стиль отступов обычно особо оговаривается в стандарте оформления кода.

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

Существует четыре основных стиля отступов Си. Описанные ниже, все они имеют своей целью облегчение визуального отслеживания управляющих конструкций. Камнем преткновения является расстановка программных скобок { и } и оформление операторов (if, else, for, while, или do) в блоки.

· Стиль «K&R»

Назван в честь Кернигана и Ритчи из-за того, что все примеры из их книги «Язык программирования Си» (нередко обозначаемой как просто «K&R» по инициалам авторов) отформатированы подобным образом. Также известен как «kernel style» (BSD KNF; из-за того, что ядро UNIX написано на нём), а также как «Единственный Правильный Скобочный Стиль» (англ. One True Brace Style - 1TBS) со слов его приверженцев. Основной отступ, показанный ниже, состоит из 8 пробелов (или одной табуляции) на уровень. Хотя чаще всего используется 4 пробела.

Пример кода, отформатированного в стиле Кернигана и Ритчи:

if (<cond>) {

<body>

}

· Стиль Олмана

Стиль Олмана -- по имени Эрика Олмана, программиста из Университета Беркли, написавшего множество BSD-утилит на нём (еще известен как «стиль BSD»). Имеет сходство с Паскалем и Алголом. Этот стиль по умолчанию предлагается в Microsoft Visual Studio и Apple Xcode.

Стиль заключается в следующем:

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

Первое выражение внутри программных скобок располагается на новой строке с отступом, увеличенным (по выбору программиста) на:

1 символ табуляции (данный вариант используется в исходном коде современных версий программы sendmail, автором которой является Эрик Олман)

2, 4 или 8 пробелов (конкретный выбор количества пробелов должен оставаться неизменным на протяжении всего текста программы)

любое другое количество пробелов или символов табуляции при условии, что это количество не изменяется на протяжении всего текста программы

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

Закрывающая программная скобка располагается с отступом, равным отступу соответствующей ей открывающей программной скобке (то есть точно под нею).

Пример кода, отформатированного в стиле Олмана:

if (<cond>)

{

<body>

}

· Стиль Уайтсмитс

Стиль Уайтсмитс -- популярен из-за примеров, шедших с Whitesmiths C -- одним из первых компиляторов с языка С. Основной отступ на уровень для скобок и блока -- 8 пробелов.

Пример кода, отформатированного в стиле Уайтсмитс:

if (<cond>)

{

<body>

}

· Стиль GNU

Стиль GNU -- используется во всех исходниках проекта GNU (например, GNU Emacs). Отступ составляет 2 символа на уровень, скобки расположены на собственном отступе.

Пример кода, отформатированного в стиле GNU:

if (<cond>)

{

<body>

}

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1 Постановка задачи

Требуется составить программу анализа исходного текста на языке C++ и последующего форматирования на основе выбранного шаблона форматирования.

Допускается использование двух шаблонов форматирования: canonical (K&R) и modern. Примеры шаблонов представлены ниже:

K&R (Kernigan & Richie)

void function(int a, int b)

{

if(expression) {

for(int i = 0; i < 10; i++) {

//

//

//

}

}

}

Modern

void function(int a, int b)

{

if(expression)

{

for(int i = 0; i < 10; i++)

{

//

//

//

}

}

}

Программа должна допускать изменение (1) отступа форматирования и (2) использование для отступа пробелов или символов табуляции.

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

2.2 Описание алгоритма решения

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

1. Получение файла для обработки.

2. Проверка существования файла и его расширения

3. Анализ и обработка файла

4. Построчное чтение файла

5. Анализ строки

· Удаление повторяющихся пробелов и табуляций (при этом текст в кавычках не затрагивается)

· Анализ отдельных символов и добавление удаление между ними пробелом

· Анализ открывающих, закрывающих фигурных скобок и точки с запятой

6. Запись полученных результатов в контейнер типа vector<string> и запись в файл.

2.3 Описание реализации

Для решения данной задачи были созданы классы Checker, ModernFormatting, StringFormatting.

Класс Checker отвечает за проверку определенных действий и включает следующие методы:

· ExistFile - проверка существования переданного пути файла.

· CheckExpansion - проверка расширения переданного пути файла.

· CheckChar - проверка заданной позиции в строке по правилу.

· CheckIndexOutRange - проверка выхода за границы переданной строки по позиции.

Класс ModernFormatting представляет собой основной класс для форматирования исходного текста программы и включает в себя следующие методы:

· DeleteUselessBracers - удаляет из переданного контейнера vector<char> два последних символа.

· AnalyzeBracer - анализ скобок и добавление количества отступов, соответствующих количеству открывающей скобок в переданном контейнере vector<char>.

· SeparateLine - разделение строки на отдельные строки, если нужно и добавление пробелов или табуляций

· AnalyzeFile - анализ переданного файла и запись результатов в выходной файл.

Класс StringFormatting предназначен для форматирования строк по правилам и включает в себя следующие методы:

· AddSpaceAfterSymb - добавляет пробелы после символа в заданной позиции строки.

· NumOpeningBracers - возвращает количество открывающих фигурных в скобок в контейнере vector<char>.

· AnalyzeLine - основной метод для анализа в строке всех основных символов, допускающих форматирование.

· CheckHaveQoutes - при наличии кавычек в строке не удаляет в них повторяющиеся пробелы и табуляции.

· DeleteRepeatedTabsSpaces - удаление повторяющихся пробелов и табуляций в строке.

· AddSpacesAroundChar - добавление пробелов между позицией переданного .символа в строке.

· AddSeparatorBeforeStr - добавить переданный разделитель в начало строки.

· AddSpacesBetweenPositions - добавить пробелы слева или справа заданной позиции в строке.

· DeleteAroundSigns - удаление лишних пробелов и табуляций между переданной позиции символа в строке.

· AddSpacesAroundSigns - добавляет пробелы между заданной позицией в строке.

· DeleteInDirection - удаление пробелов или табуляции с левой или правой части заданной позиции в строке.

· DeleteTabsSpacesAround - удаление пробелов или табуляции с левой и правой части заданной позиции в строке.

2.4 Описание интерфейса программы

Пользователь в командной строке вводит следующие параметры:

1. Имя входного файла исходного кода программы

2. Имя выходного файла

2.5 Требование к системе

Для нормальной работы ПО необходимо:

· Компьютер с процессором с тактовой частотой 1 GHz и выше.

· Оперативная память не менее 128 Мb.

· Жесткий диск объемом не менее 1 Gb. https://pp.vk.me/c543105/v543105884/7b0e/apF2pV1P5nY.jpg

· Установленная ОС Windows 2000, Windows XP, Windows Vista, 7

СПИСОК ЛИТЕРАТУРЫ

1. Либерти Д. - Освой самостоятельно С++ за 21 день 7-е изд. : Пер. с англ.» Рао С.

2. Шилдт, Герберт C++: базовый курс, 3-е издание изд. Вильямс

3. https://ru.wikipedia.org

4. https://msdn.microsoft.com/

ПРИЛОЖЕНИЕ 1

ПРИМЕР РАБОТЫ ПРОГРАММЫ

В входном файле находятся следующие данные:

#include <iostream>

#include "windows.h"

using namespace std;

int main(int argc, char *argv[])

{

int authentication = 0;

char cUsername[10];

char cPassword[10];

std::cout << "Username: ";

std::cin >> cUsername;

std::cout << "Pass: ";

std::cin >> cPassword;

if (std::strcmp(cUsername, "admin") == 0 && std::strcmp(cPassword, "admin") == 0){ authentication = 1; }

system("pause");

return 0;

}

В выходном файле находятся следующие данные:

#include <iostream>

#include "windows.h"

using namespace std;

int main(int argc, char *argv[])

{

int authentication = 0;

char cUsername[10];

char cPassword[10];

std::cout << "Username: ";

std::cin >> cUsername;

std::cout << "Pass: ";

std::cin >> cPassword;

if (std::strcmp(cUsername, "admin") == 0 && std::strcmp(cPassword, "admin") == 0)

{

authentication = 1;

}

system("pause");

return 0;

}

Размещено на Allbest.ru

...

Подобные документы

  • Создание программы для хранения и обработки данных о съеме/сдаче жилья. Написание программы на языке C++ с использованием библиотеки Qt; использование исходного кода для создания приложения под Windows, Linux, Mac OS X без дополнительных изменений кода.

    курсовая работа [60,4 K], добавлен 07.03.2013

  • Составление транслятора на языке С для перевода кода программы из языка Pascal в код программы на языке Cи. Распознавание и перевод конструкций: for, type, function, integer. Вешняя спецификация, описание, структура, текст программы; распечатка текстов.

    курсовая работа [287,8 K], добавлен 24.06.2011

  • Функциональные характеристики программы форматирования текстовых файлов, требования к ее интерфейсу и данным. Схема взаимодействия компонентов системы, выбор среды исполнения и программная реализация алгоритмов. Тестирование и оценка качества программы.

    курсовая работа [61,1 K], добавлен 25.07.2012

  • Разработка алгоритма синтеза пленочного резистора по заданным параметрам исходного резистора, программы реализации данного алгоритма на языке С++. Отладка и тестирование программы, составление документации и инструкции пользователя данной программой.

    курсовая работа [1,7 M], добавлен 08.06.2009

  • Перевод - процесс создания на основе исходного текста на одном языке равноценного ему в коммуникативном отношении текста на другом языке, требования к обеспечению его эквивалентности. Машинные технологии перевода; характеристика систем Translation Memory.

    презентация [347,8 K], добавлен 06.01.2014

  • Необходимые компоненты и порядок составления текстового редактора. Текст программы решения задачи на языке программирования C++. Контрольный пример работы текстового редактора. Создание и произведение операции форматирования простого документа.

    курсовая работа [1,6 M], добавлен 03.09.2011

  • Реализация линейных списков в языке программирования C++. Основные операции при работе с ними. Разработка интерфейса и алгоритмов. Описание работы программы на псевдокоде. Составление программного кода. Тестирование, отладка и результат работы программы.

    курсовая работа [1,1 M], добавлен 07.01.2014

  • Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.

    лабораторная работа [123,5 K], добавлен 15.01.2014

  • Синтаксический анализ простой программы на языке С. Предварительный выбор метода решения задачи. Разработка технологии обработки информации. Проектирование программных модулей. Процесс тестирования программы. Требования к программному обеспечению.

    курсовая работа [934,7 K], добавлен 01.07.2011

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

    контрольная работа [47,8 K], добавлен 14.10.2012

  • Особенности разработки и реализации обучающей программы и схемы алгоритмов на языке программирования С++. Понятие равномерной и неравномерной дискретизации. Представление информации (составление кода) в виде таблицы перекодировки или многочлена.

    курсовая работа [704,6 K], добавлен 06.03.2013

  • Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.

    курсовая работа [1,5 M], добавлен 21.09.2010

  • Изучение категории типов данных, видов выражений и операций, работа на языке Си. Составление программы вычисления значения функции у(х) при произвольном значении х. Блок-схема алгоритма. Описание текста программы и рассмотрение контрольного примера.

    лабораторная работа [124,7 K], добавлен 09.01.2012

  • Введение в объектно-ориентированное программирование. Постановка задачи. Описание алгоритма решения в псевдокоде (команды в виде текста на русском языке). Исходный текст программы на С. Тестирование программы. Модификация программы. Полиморфизм.

    курсовая работа [294,0 K], добавлен 08.09.2008

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

    курсовая работа [1,6 M], добавлен 22.06.2011

  • Последовательность работ при разработке объектно-ориентированных программ. Виды синтаксических анализаторов и способы их применения. Описание алгоритма и анализ результативности работы программы, написанной на языке С, ее константы, переменные и функции.

    курсовая работа [441,7 K], добавлен 03.07.2011

  • Cервисные программы – утилиты для различных вспомогательных операций. Форматирование диска — процесс разметки устройств хранения или носителей информации. Низкоуровневое и высокоуровневое форматирование. Порядок дефрагментации и тестирования диска.

    реферат [509,6 K], добавлен 05.12.2010

  • Составление программы для зашифровки текста (не более 255 символов), с использованием одного перемешанного алфавита, полученного случайной перестановкой всех букв исходного алфавита. Создание меню-интерфейса для навигации пользователя по программе.

    курсовая работа [496,2 K], добавлен 17.05.2015

  • Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.

    курсовая работа [742,6 K], добавлен 03.07.2011

  • Использование класса статических массивов структур и базы данных "ODER" при создании программы на языке С++. Основные формы выдачи результатов. Технические и программные средства. Тесты для проверки работоспособности алгоритма создания программы.

    курсовая работа [1,1 M], добавлен 17.03.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.