Что такое листинг в программировании
Перейти к содержимому

Что такое листинг в программировании

  • автор:

Листинг (программирование)

Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования. В обобщённом смысле — любые входные данные для транслятора.

Исходный код либо транслируется в исполняемый код при помощи компилятора, либо исполняется непосредственно по тексту при помощи интерпретатора.

Назначение

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

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

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

Программисты часто переносят исходный код из одного проекта в другой, что носит название повторного использования кода (Software reusability).

Исходный код — важнейший компонент для процесса портирования программного обеспечения на другие платформы. Без исходного кода какой-либо части ПО, портирование либо слишком сложно, либо вообще невозможно.

Организация

Исходный код некоторой части ПО (модуля, компонента) может состоять из одного или нескольких файлов. Код программы не обязательно пишется только на одном языке программирования. Например, часто программы, написанные на языке Си, с целью оптимизации, содержат вставки кода на языке ассемблера. Также возможны ситуации, когда некоторые компоненты или части программы пишутся на различных языках, с последующей сборкой в единый исполняемый модуль при помощи технологии известной как компоновка библиотек (library linking).

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

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

Качество

В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО. О качестве исходного кода можно судить по следующим параметрам:

  • читаемость кода (в том числе наличие или отсутствие комментариев к коду;
  • лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
  • низкая сложность;
  • низкое использование ресурсов — памяти, процессора, дискового пространства;
  • отсутствие замечаний, выводимых компилятором;
  • отсутствие «мусора» — неиспользуемых переменных, недостижимых блоков кода, ненужных устаревших комментариев и т. д.

Неисполняемый исходный код

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

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

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

См. также

  • Рефакторинг
  • Стандарт оформления кода
  • Свободное программное обеспечение
  • Эзотерические языки программирования
  • Пример: Программа Hello world

Ссылки

Wikimedia Foundation . 2010 .

Учебники. Программирование для начинающих.

Programm.ws — это сайт, на котором вы можете почитать литературу по языкам программирования , а так-же посмотреть примеры работающих программ на С++, ассемблере, паскале и много другого..

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

Delphi для начинающих

Глава 15. Примеры программ

Листинги

Полный текст программы Сапер 2002 представлен ниже. В листинге 15.9 приведен модуль, соответствующий главной форме, В листинге 15.10 -форме О программе.

Листинг 15.9. Модуль главного окна программы Сапер 2002

unit saper_1;
interface

uses
Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, OleCtrls, HHOPENLib_TLB;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Hhopen1: THhopen;

procedure Form1Create(Sender: TObject);
procedure Form1Paint(Sender: TObject);
procedure Form1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure N1Click(Sender: TObject);

procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
< Private declarations >
public
< Public declarations >
end;

var
Form1: TForm1;

uses saper_2;

const
MR = 10; // кол-во клеток по вертикали
MC = 10; // кол-во клеток по горизонтали
NM = 10; // кол-во мин

W = 40; // ширина клетки поля
H = 40; // высота клетки поля

var
Pole: array[0..MR+1, 0.. MC+1] of integer; // минное поле
// значение элемента массива:
// 0..8 — количество мин в соседних клетках
// 9 — в клетке мина
// 100..109 — клетка открыта
// 200..209 — в клетку поставлен флаг

nMin : integer; // кол-во найденных мин
nFlag : integer; // кол-во поставленных флагов

status : integer; // 0 — начало игры; 1- игра; 2 -результат

Procedure NewGame(); forward;

// генерирует новое поле
Procedure ShowPole(Canvas : TCanvas; status : integer); forward;// Показывает поле
Procedure Kletka(Canvas : TCanvas; row, col, status : integer); forward; // выводит содержимое клетки
Procedure Open( row, col : integer); forward;// открывает текущую и все соседние клетки, в которых нет мин
Procedure Mina(Canvas : TCanvas; x, y : integer); forward; // Рисует мину
Procedure Flag( Canvas : TCanvas; x, y : integer); forward;// Рисует флаг

// выводит на экран содержимое клетки
Procedure Kletka(Canvas : TCanvas; row, col, status : integer);
var
x,y : integer; // координаты области вывода
begin
x := (col-1)* W + 1;
y := (row-1)* H + 1;

if status = 0 then
begin
Canvas.Brush.Color := clLtGray;
Canvas.Rectangle(x-1,y-1,x+W,y+H);
exit;
end;

if Pole[row,col] < 100 then
begin
Canvas.Brush.Color := clLtGray; // не открытые — серые
Canvas.Rectangle(x-1,y-1,x+W,y+H);
// если игра завершена (status = 2), то показать мины
if (status = 2) and (Pole[row,col] = 9)
then Mina(Canvas, x, y);
exit;
end;

// открываем клетку
Canvas.Brush.Color := clWhite; // открытые белые
Canvas.Rectangle(x-1,y-1,x+W,y+H);
if ( Pole[row,col] = 100 )
then exit; // клетка открыта, но она пустая

if ( Pole[row,col] >= 101) and (Pole[row,col] then
begin
Canvas.Font.Size := 14;
Canvas.Font.Color := clBlue;
Canvas.TextOut(x+3,y+2,IntToStr(Pole[row,col] -100 ));
exit;
end;

if ( Pole[row,col] >= 200 ) then
Flag(Canvas, x, y);

if (Pole[row,col] = 109 ) then // на этой мине подорвались!
begin
Canvas.Brush.Color := clRed;
Canvas.Rectangle(x-1,y-1,x+W,y+H);
end;

if ( (Pole[row,col] mod 10) = 9) and (status = 2) then
Mina(Canvas, x, y);
end;

// Показывает поле
Procedure ShowPole(Canvas : TCanvas; status : integer);
var
row,col : integer;
begin
for row := 1 to MR do
for col := 1 to MC do
Kletka(Canvas, row, col, status);
end;

// рекурсивная функция открывает текущую и все соседние
// клетки, в которых нет мин
Procedure Open( row, col : integer);
begin
if
Pole[row,col] = 0 then
begin
Pole[row,col] := 100;
Kletka(Form1.Canvas, row,col, 1);
Open(row,col-1);
Open(row-1,col);
Open(row,col+1);
Open(row+1,col);
//примыкающие диагонально
Open(row-1,col-1);
Open(row-1,col+1);
Open(row+1,col-1);
Open(row+1,col+1);
end
else
if
(Pole[row,col] < 100) and ( Pole[row,col] <>-3 ) then
begin
Pole[row,col] := Pole[row,col] + 100;
Kletka(Form1.Canvas, row, col, 1);
end;
end;

// новая игра — генерирует новое поле
procedure NewGame();

var
row,col : integer; // координаты клетки
n : integer; // количество поставленных мин
k : integer; // кол-во мин в соседних клетках
begin
// Очистим эл-ты массива, соответствующие клеткам
// игрового поля.
for row :=1 to MR do
for col :=1 to MC do
Pole[row,col] := 0;

// расставим мины
Randomize(); // инициализация ГСЧ
n := 0; // кол-во мин
repeat
row := Random(MR) + 1;
col := Random(MC) + 1;
if ( Pole[row,col] <> 9) then
begin
Pole[row,col] := 9;
n := n+1;
end;
until ( n = NM );

// для каждой клетки вычислим
// кол-во мин в соседних клетках
for row := 1 to MR do
for col := 1 to MC do
if ( Pole[row,col] <> 9 ) then
begin
k :=0 ;
if Pole[row-1,col-1] = 9 then k := k + 1;
if Pole[row-1,col] = 9 then k := k + 1;
if Pole[row-1,col+1] = 9 then k := k + 1;
if Pole[row,col-1] = 9 then k := k + 1;
if Pole[row,col+1] = 9 then k := k + 1;
if Pole[row+1,col-1] = 9 then k := k + 1;
if Pole[row+1,col] = 9 then k := k + 1;
if Pole[row+1,col+1] = 9 then k := k + 1;
Pole[row,col] := k;
end;
status := 0; // начало игры
nMin := 0; // нет обнаруженных мин
nFlag := 0; // нет флагов

// Рисует мину
Procedure Mina(Canvas : TCanvas; x, y : integer);
begin
with Canvas do
begin
Brush.Color := clGreen;
Pen.Color := clBlack;
Rectangle(x+16,y+26,x+24,y+30);
Rectangle(x+8,y+30,x+16,y+34);
Rectangle(x+24,y+30,x+32,y+34);
Pie(x+6,y+28,x+34,y+44,x+34,y+36,x+6,y+36);

MoveTo(x+12,y+32); LineTo(x+26,y+32);
MoveTo(x+8,y+36); LineTo(x+32,y+36);
MoveTo(x+20,y+22); LineTo(x+20,y+26);
MoveTo(x+8, y+30); LineTo(x+6,y+28);
MoveTo(x+32,y+30); LineTo(x+34,y+28);
end;
end;

// Рисует флаг
Procedure Flag( Canvas : TCanvas; x, y : integer);
var
p : array [0..3] of TPoint; // координаты флажка и нижней точки древка
m : array [0..4] of TPoint; // буква М
begin
// зададим координаты точек флажка
p[0].x:=x+4; p[0].y:=y+4;
p[1].x:=x+30; p[1].y:=y+12;
p[2].x:=x+4; p[2].y:=y+20;
p[3].x:=x+4; p[3].y:=y+36; // нижняя точка древка

with Canvas do
begin
// установим цвет кисти и карандаша
Brush.Color := clRed;
Pen.Color := clRed;

// древко
Pen.Color := clBlack;
MoveTo(p[0].x, p[0].y);
LineTo(p[3].x, p[3].y);

// буква М
Pen.Color := clWhite;
Polyline(m);

Pen.Color := clBlack;
end;
end;

// выбор из меню ? команды О программе
procedure TForm1.N4Click(Sender: TObject);
begin
AboutForm.Top := Trunc(Form1.Top + Form1.Height/2 — AboutForm.Height/2);
AboutForm.Left := Trunc(Form1.Left +Form1.Width/2 — AboutForm.Width/2);
AboutForm.ShowModal;
end;

procedure TForm1.Form1Create(Sender: TObject);
var
row,col : integer;
begin
// В неотображаемые эл-ты массива, которые соответствуют
// клеткам по границе игрового поля запишем число -3.
// Это значение используется функцией Open для завершения
// рекурсивного процесса открытия соседних пустых клеток.
for row :=0 to MR+1 do
for col :=0 to MC+1 do
Pole[row,col] := -3;

NewGame(); // «разбросать» мины
Form1.ClientHeight := H*MR + 1;
Form1.ClientWidth := W*MC + 1;
end;

// нажатие кнопки мыши на игровом поле
procedure TForm1.Form1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
row, col : integer;
begin
if
status = 2 // игра завершена
then exit;

if status = 0 then // первый щелчок
status := 1;

// преобразуем координаты мыши в индексы
// клетки поля
row := Trunc(y/H) + 1;
col := Trunc(x/W) + 1;

if Button = mbLeft then
begin
if Pole[row,col] = 9 then
begin // открыта клетка, в которой есть мина
Pole[row,col] := Pole[row,col] + 100;
status := 2; // игра закончена
ShowPole(Form1.Canvas, status);
end
else if Pole[row,col] < 9 then
Open(row,col);
end
else

if Button = mbRight then
if Pole[row,col] > 200 then
begin
// уберем флаг и закроем клетку
nFlag := nFlag — 1;
Pole[row,col] := Pole[row,col] — 200; // уберем флаг
x := (col-1)* W + 1;
y := (row-1)* H + 1;
Canvas.Brush.Color := clLtGray;
Canvas.Rectangle(x-1,y-1,x+W,y+H);
end
else

begin // поставить в клетку флаг
nFlag := nFlag + 1;
if Pole[row,col] = 9
then nMin := nMin + 1;
Pole[row,col] := Pole[row,col]+ 200; // поставили флаг
if (nMin = NM) and (nFlag = NM) then
begin
status := 2; // игра закончена
ShowPole(Form1.Canvas, status);
end
else
Kletka(Form1.Canvas, row, col, status);
end;
end;

// Выбор меню Новая игра
procedure TForm1.N1Click(Sender: TObject);
begin
NewGame();
ShowPole(Form1.Canvas,status);
end;

// выбор из меню ? команды Справка
procedure TForm1.N3Click(Sender: TObject);

var
HelpFile : string; // файл справки
HelpTopic : string; // раздел справки
pwHelpFile : PWideChar; // файл справки (указатель на WideChar строку)
pwHelpTopic : PWideChar; // раздел (указатель на WideChar строку)
begin
HelpFile := ‘saper.chm’;
HelpTopic := ‘saper_02.htm’;

// выделить память для WideChar строк
GetMem(pwHelpFile, Length(HelpFile) * 2);
GetMem(pwHelpTopic, Length(HelpTopic)*2);

// преобразовать Ansi строку в WideString строку
pwHelpFile := StringToWideChar(HelpFile,pwHelpFile,MAX_PATH*2);
pwHelpTopic := StringToWideChar(HelpTopic,pwHelpTopic,32);

// вывести справочную информацию
Form1.Hhopen1.OpenHelp(pwHelpFile,pwHelpTopic);

procedure TForm1.Form1Paint(Sender: TObject);
begin
ShowPole(Form1.Canvas, status);
end;
end
.

что такое листинг программы (в моем случае написанная мной на delphi). помогите пожалуйста.

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

Остальные ответы

Похожие вопросы

Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Правила размещения в тексте научных работ листинга программ для ЭВМ

При подготовке научной работы в IT-области (особенно по направлению «Программирование», «Тестирование ПО» и пр.) важно не просто предоставить «готовый» инновационный продукт, но и описать его в основной части проекта. Для полноценной характеристики разработки необходимо предоставить подробное разъяснение каждого элемента. Делается это с помощью листинга.

Правила размещения в тексте научных работ листинга программ для ЭВМ

При подготовке научной работы в IT-области (особенно по направлению «Программирование», «Тестирование ПО» и пр.) важно не просто предоставить «готовый» инновационный продукт, но и описать его в основной части проекта. Для полноценной характеристики разработки необходимо предоставить подробное разъяснение каждого элемента. Делается это с помощью листинга.

Понятие и функции листинга программ для ЭМВ в студенческих и научных работах

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

Внешне листинг программ представлен в виде набора специальных символов и цифр, каждое из которых имеет определенное значение и предназначение.

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

Понятие листинга программ ЭВМ

Листинг может быть представлен в развернутом и сокращенном виде. Первый представляет собой полное закодированное описание, своего рода полномасштабный алгоритм программы. Его объем может достигать сотни страниц. У каждого символа и значения имеется своя роль и цель, «перевод» на русский язык в виде определенной команды.

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

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

Основные функции листинга программ ЭВМ

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

В-третьих, доказательная. С помощью листинга можно оценить не только состав и качество программы, но и выделить е специфические черты: новшества, привнесенные автором, особенности работы и эффект от реформирования цепи или отдельных звеньев алгоритма, проверить соблюдение действующих правил и законов, ГОСТов и пр. Именно листинг подчеркивает оригинальность проекта и разработки, помогает отстоять выдвинутую гипотезу или показать ценность реформирования, пользу полученных результатов, выделить достоинства и недостатки новшеств. Именно данная часть студенческой или научной работы считается первичным материалом и основой доказательной базы исследования.

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

Как сформировать листинг программ для ЭВМ?

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

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

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

Как выглядит листинг программ ЭВМ в научной работе?

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

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

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

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

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

Формирование сокращенного листинга программ для ЭВМ призвано предоставить точечную характеристику проекта с акцентом на сильные стороны автора, выделить достоинства изысканий и ценность результатов.

Подготовка неполного листинга требует тщательного анализа полного кода программы (алгоритма): производится тщательная выборка основополагающих и инновационных элементов. Важно выделить полноценные блоки из полной схемы.

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

Нужна помощь преподавателя?

Мы всегда рады Вам помочь!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *