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

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

  • автор:

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

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

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

Назначение

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

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

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

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

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

Организация

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

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

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

Качество

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

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

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

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

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

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

См. также

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

Ссылки

Wikimedia Foundation . 2010 .

Листинг программы

Видно, что результаты расчётов совпадают с тестовыми данными.

Анализ результатов и выводы

К достоинствам программы можно отнести:

  • Программа выполняет поставленную задачу и работает без ошибок (для корректных тестовых данных).
  • Каждое задание реализовано в виде отдельной функции, что позволяет эти функции в других проектах.
  • За счёт динамического выделения памяти программа использует минимальное количество оперативной памяти.
  • Не производится проверка входных данных.
  • Сортировка реализована не самым быстрым алгоритмом, что на больших массивах приводит к более медленной работе.

Подключение библиотек

Библиотеки языка C++ это набор файлов, которые содержат описания функций. Подключая библиотеку можно вызывать те функции, которые определены в этой библиотеке. Подключение библиотек происходит с помощью директивы «#include» #include// Подключение библиотеки потокового ввода-вывода #include// Подключение библиотеки математических функций В описании библиотек приводится только назначение функций. За более полной информацией необходимо обратиться к документации по языку программирования.

Библиотека утверждений «cassert» (assert.H)

Функции проверки утверждений
assert Проверить утверждение

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

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

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

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

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

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

Приложение 3. Листинг программы управления спрайтом

Первая страницаПредыдущая страницаНазад к обзоруСледующая страницаПоследняя страница

Первая страницаПредыдущая страницаНазад к обзоруСледующая страницаПоследняя страница

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

sprite.asm — исходный код программы на ассемблере

sprite.lst — листинг программы на ассемблере

sprite.obj — оттранслированная программа на ассемблере

'sprite ctrl' Z80-Assembler Page: 1 title 'sprite ctrl' ; константы 0001 = nospr EQU 1 ; номер активного спрайта 0001 = step EQU 1 ; шаг приращения координат ORG 9000h ;начальный адрес прог. ; вводим номер джойстика 9000 CDC000 CALL 0C0h ;beep 9003 21AEF3 LD HL,0F3AEh ;разм. экр. в screen 0 9006 3628 LD (HL),40 ;width 40 9008 210F01 LD HL,010Fh 900B 22E9F3 LD (0F3E9h),HL;colOR 15,1 900E 21E0F3 LD HL,0F3E0h ;vdp(1) 9011 CBCE SET 1,(HL) ;16*16 9013 CB86 RES 0,(HL) ;норм. размер спрайта 9015 CD6C00 CALL 6Ch ;screen 0 9018 CDCC00 CALL 0CCh ;key off 901B 21F190 LD HL,input ;Введите номер джойс. ; вывод сообщения на экран 901E 7E LD a,(HL) 901F B7 OR a ;если код символа = 0, 9020 2806 JR z,l02 ;то закончить вывод 9022 CDA200 CALL 0A2h ;вывод символа (A) ;на экран 9025 23 INC HL ;адрес след. символа 9026 18F6 JR $-8 ;повторить вывод 9028 CD9F00 l02: CALL 9Fh ;ввести символ с клав. 902B 0600 LD b,0 ;номер джойстика = 0 902D D630 SUB '0' ;проверяем: 902F 280A JR z,l01 ;нажато "0", переходим 9031 04 INC b ;если нет, то джойс.=1 9032 3D DEC a ;нажата "1" 9033 2806 JR z,l01 ;если да, то переходим 9035 04 INC b ;джойстик = 2 9036 3D DEC a ;если нажата "2", 9037 2802 JR z,l01 ;переходим 9039 18ED JR l02 ;иначе вводим снова ; создаем шаблон номер NoSpr 903B CD7200 l01: CALL 72h ;screen 2 903E C5 PUSH BC ;сохр. номер джойстика 903F 3E01 LD a,nospr ;грузим номер спрайта 9041 CD8400 CALL 84h ;узнаем адрес шаблона 9044 111191 LD DE,sprdat ;грузим адрес данных 9047 012000 LD BC,32 ;длина данных 904A EB EX DE,HL 904B CD5C00 CALL 5Ch ;перепис. блок во VRAM ; выводим спрайт на экран 904E 3E01 putspr: LD a,nospr ;грузим номер спрайта 9050 CD8700 CALL 87h ;узнаем адр.табл.атр. 9053 113191 LD DE,y ;адрес блока данных 9056 010400 LD BC,4 ;длина блока 9059 EB EX DE,HL 905A CD5C00 CALL 5Ch ;пересылаем блок ; задержка 905D 110001 LD DE,100h ;кол-во пустых циклов 9060 1B DEC DE 9061 7A LD a,d 9062 B3 OR e 9063 20FB JR nz,$-3 ;если <> 0, то повт. ; вводим stick(b) 9065 C1 stick: POP BC ;считыв. номер джойст. 9066 CDB700 CALL 0B7h ;пров., не нажато ли ;ctrl+STOP 9069 D8 RET c ;если да, то возврат 906A 78 LD a,b ;A = номеру джойстика 906B C5 PUSH BC ;опять сохр. номер дж. 906C CDD500 CALL 0D5h ;вводим напр. джойс. 906F B7 OR a ;если ничего не нажато, 9070 28F3 JR z,stick ;то ввод снова 9072 0E01 LD c,step ;загр. значение шага ; вверх 9074 3D DEC a ;нажато вверх ? 9075 2005 JR nz,ur ;если нет, то следующ. 9077 CDBD90 CALL moveUP ;иначе - уменьшение Y 907A 18D2 JR putspr ;и переходим на спр. ; вверх/вправо 907C 3D ur: DEC a ;то же, что и выше 907D 2008 JR nz,right 907F CDBD90 CALL moveUP 9082 CDC890 CALL moveRG 9085 18C7 JR putspr ; вправо 9087 3D right: DEC a 9088 2005 JR nz,rd 908A CDC890 CALL moveRG 908D 18BF JR putspr ; вправо/вниз 908F 3D rd: DEC a 9090 2008 JR nz,down 9092 CDC890 CALL moveRG 9095 CDD690 CALL moveDW 9098 18B4 JR putspr ; вниз 909A 3D down: DEC a 909B 2005 JR nz,dl 909D CDD690 CALL moveDW 90A0 18AC JR putspr ; вниз/влево 90A2 3D dl: DEC a 90A3 2008 JR nz,left 90A5 CDD690 CALL moveDW 90A8 CDE490 CALL moveLF 90AB 18A1 JR putspr ; влево 90AD 3D left: DEC a 90AE 2005 JR nz,lu 90B0 CDE490 CALL moveLF 90B3 1899 JR putspr ; влево/вверх 90B5 CDE490 lu: CALL moveLF 90B8 CDBD90 CALL moveUP 90BB 1891 JR putspr ; уменьшение ячейки Y на значение шага (в регистре C) 90BD 3A3191 moveUP: LD a,(y) ;A = (Y) 90C0 91 SUB c ;A = A - шаг 90C1 DCEF90 CALL c,lda0 ;если < 0, то A=0 90C4 323191 LD (y),a ;сохраняем A в (Y) 90C7 C9 RET 90C8 3A3291 moveRG: LD a,(x) ;A = (X) 90CB 81 ADD a,c ;A = A + шаг 90CC FEF0 CP 240 ;пров: A


Первая страницаПредыдущая страницаНазад к обзоруСледующая страницаПоследняя страница

msx/assembler_programming_guide-fakhrutdinov_bocharov/13.txt · Последние изменения: 2020-11-04 13:25 — GreyWolf

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

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