ЯЗЫКИ_ПРОГРАММИРОВАНИЯ.pptx
- Количество слайдов: 95
Языки программирования, классификация, основные понятия. Трансляция, компиляция и интерпретация. Структурное и объектно-ориентированное программирование.
Инструментальное программное обеспечение Назначение: создание оригинальных программных систем в любой проблемной области. Состав: qкомпиляторы и интерпретаторы с языков программирования различного уровня qбиблиотеки стандартных программ qсредства редактирования, отладки, тестирования и загрузки qсистемы программирования. 3
Понятия языка программирования Программы – это упорядоченные последовательности команд для выполнения определённых операций. Язык программирования - 1) фиксированная система обозначений для описания алгоритмов и структур данных; 2) алфавит, система записи и набор правил, определяющих синтаксис правильной программы. Словарь – набор зарезервированных слов языка. Синтаксис – точные правила и конструкции, необходимые для построения правильных предложений языка, определяющих для ЭВМ алгоритм решаемой задачи. Семантика – правила сопоставления смысла конструкциям языка. 4
Трансляторы: компилятор Транслятор – специальная программа, переводящей исходный модуль (текст на языке программирования) в последовательность команд ЭВМ. Трансляторы делятся на компиляторы и интерпретаторы. Компилятор (англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется. Языки компиляторы: Fortran, Algol, Pascal, PL/1, 5
Схема преобразования исходный программы в выполняемый загрузочный модуль Исходный модуль Компилятор с языка программирования Объектный модуль Редактор связей Загрузочный модуль Загрузчик Выполняемый загрузочный модуль 6
Трансляторы: интерпретатор • Интерпретатор (англ. interpreter — истолкователь, • • • 7 устный переводчик) переводит и выполняет программу строка за строкой. Программа, обрабатываемая интерпретатором, должна заново переводиться на машинный язык при каждом очередном запуске программы. Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять. Реализация любого языка программирования может быть как компилирующего, так и интерпретирующего типа. Языки интерпретаторы: LOGO, APL Basic, Lisp – одинаково используют компилятор и интерпретатор.
Схема преобразования исходный программы интерпретатором Очередной оператор из текста программы Анализ структуры и выполнение оператора Успешное исполнение текущей команды Переход к анализу и исполнению следующей команды 8
1 - е поколение Машинно-зависимые языки, представляющие набор машинных команд в двоичном или восьмеричном формате, который определялся архитектурой конкретной ЭВМ. Поэтому каждый тип ЭВМ имел свой язык программирования, программы на котором были пригодны только для данного типа ЭВМ. Команда Запись в машинных кодах Загрузить в регистр AH число 4 Ch Умножить число, находящееся в регистре AX на число по адресу [010 A] и сохранить результат в AX F 72 E 0 A 01 Вычесть из числа, хранящегося в AX, число, хранящееся в BX, и сохранить результат в AX 9 B 44 C 2 BC 3
2 -е поколение Характеризуется созданием языков ассемблерного типа (ассемблеров и макроассемблеров), позволяющих вместо двоичных или восьмеричных форматов машинных команд использовать их мнемонические символьные обозначения (имена). Ассемблерные языки - машинно-зависимые Ассемблерные программы трудны для чтения, трудоемки при отладке, плохо переносятся на другие типы ЭВМ. Применяются при разработке программных средств для новых вычислительных устройств, управления драйверами, а также для разработки высокоэффективного программного обеспечения. Программа на ассемблере занести в регистр ax значение 8 занести в регистр cx значение 6 скопировать cx в dx, dx=6 10 сложить dx и ax, результат записать в dx: dx=dx+ax
3 -е поколение Начинается с появления в 1956 г. первого языка высокого уровня FORTRAN, разработанного под руководством Дж. Бэкуса в фирме IBM. Подавляющее большинство языков носят явно выраженный процедурный характер, суть которого в следующем: написанные на них программы не только определяют, что нужно сделать, но и как это сделать. Классификация языков: по функциональному назначению (для задач научных, коммерческих, моделирования, информационнопоисковых, графических и др. ), режиму выполнения (диалоговые, пакетные), управляющим структурам (структурные, неструктурные) и т. д. 11
Классификация языков программирования высокого уровня По функциональному назначению: q. Для обучения программированию (Logo, Basic, Pascal) q. Общего назначения (Basic, Pascal, Delphi, C, Modula, ADA, Python) q. Проблемно-ориентированные (Fortran, Lisp, Prolog, Basic, Pascal, C) q. Языки параллельного программирования (расширения языков Fortran, Pascal, C и др. ) 12
Классификация языков программирования высокого уровня По технологиям программирования: q Модульное и структурное программирование(Pascal) Программа проектируется в виде отдельных относительно независимых модулей, а ее управляющие структуры обходятся без использования (или с минимальным использованием) меток и операторов условного и безусловного переходов. По средствам создания структурированных программ делятся на структурные (Algol, Pascal, C, ADA) и неструктурные (Fortran, Basic и др. ) q Объектно-ориентированное программирование (Basic, Delphi, C) • Базовые элементы: объекты, сообщения, классы • Основные принципы: инкапсуляция, наследование, полиморфизм 13
4 -е поколение Позволяют получать информацию из баз данных на основе запросов, построенных на синтаксически простых правилах. Фактический стандарт язык SQL. 14 Язык не имеет инструкций, и состоит только из описаний. Базируются на понятии программного объекта, впервые использованного в языке Simula 67 и составившего основу языка Small. Talk. Ориентированы на вычислительные системы параллельной архитектуры (многомашинные, многопроцессорные и др. ).
5 -е поколение Языки искусственного интеллекта, экспертных систем и баз знаний, естественные языки. Естественные языки программирования отличаются от языков запросов тем, что пользователь любого уровня освобождается от необходимости освоения специальных словарей, грамматики и синтаксиса (Lisp, Prolog, Inter. Lisp и др. ). Имеют развитый языковой интерфейс на основе естественного и формального языков. 15
Процедурный язык Pascal 16
Основные понятия языка Программа состоит из исполняемых операторов и операторов описания. Оператор –конструкция, предназначенная для записи алгоритмических действий по преобразованию данных и для задания порядка выполнения других действий. Исполняемый оператор (или оператор) задаёт законченное действие, выполняемое над данными (вывод на экран, занесение числа в память компьютера, выход из программы). Оператор описания (или описание) описывает данные, над которыми выполняются действия. 17
Основные понятия языка Метка - идентификатор или целое число, предназначенное для организации последовательности вычислений. Посредством меток можно указать тот оператор, на который необходимо передать управление из других точек программы. Константа - идентификатор, обозначающий некоторую неизменную величину (значение данных) определенного типа. Переменная- элемент программы, предназначенный для хранения, коррекции и передачи данных внутри нее. 18
Структура программы Заголовок PROGRAM …; имя программы Раздел описания данных VAR …; описание переменных CONST …; описание констант TYPE …; описание типов LABEL …; описание меток PROCEDURE …; описание процедур FUNCTION …; описание функций BEGIN начало раздела операторов END. конец программы 19
Система типов 20
Операторы ввода read и readln (читать строку - read line) Например readln(x); read(x, y, z); Вводимые с клавиатуры значения разделяются пробелом или клавишей
Операторы вывода write(x); writeln(x, y); Для целых чисел Write(f: n), f – целое число n – ширина поля вывода, знак “+” не выводится. Если n больше длины записи числа, то число прижимается к правому краю. Для вещественных чисел Write(f), f – вещественное число. Write(f: n: m) – вывод в форме с фиксированной точкой. Например: writeln(‘x=‘, x: 6: 4); Под число отводится 6 позиций, 1 позиция под десятичную точку и четыре позиции после нее. 22
Примеры
Оператор присваивания : = Оператор присваивания предназначен для вычисления нового значения некоторой переменной, а также для определения значения, возвращаемого функцией. При этом правая и левая части должны быть совместимы по присваиванию (например, переменной целого типа нельзя присвоить значение вещественной переменной). 24
Приоритет операций
Программирование линейных алгоритмов Линейный алгоритм - набор команд (указаний), выполняемых последовательно во времени друг за другом. Начало Операторы Конец Выражение – правило вычисления значения. В выражении участвуют операнды, объединённые знаками операций. Операции выполняются в соответствии с приоритетами.
Пример. Линейный алгоритм
program pr 1; uses Crt; var a, b, c, d, e, f, {коэффициенты} det, {определитель} x, y: real; {решение} begin Clr. Scr; read(a, b, c, d, e, f); det: =a*e-b*d; x: =(c*e-b*f)/det; y: =(a*f-c*d)/det; write(‘x=‘, x, ’ ‘, ’y=‘, y); end. Uses Crt – подключение экранного модуля Clr. Scr – процедура очистки экрана
Структурные операторы – операторы, которые включают в себя другие операторы. К структурным операторам относятся: q Составной оператор q Условный оператор q Оператор выбора q Операторы циклов q Оператор присоединения 29
Составной оператор – это последовательность операторов, заключённых в операторные скобки begin … end. Структура: begin <оператор_1>; <оператор_2>; ………… <оператор_N> end; 30
Операторы ветвления Разветвляющийся алгоритм - алгоритм, содержащий хотя бы одно условие, в результате проверки которого обеспечивается переход на один из двух возможных шагов Условный оператор: полная форма Да 31 Нет
Условный оператор: сокращённая форма Да 32
Пример 1: найти наибольшее из двух чисел Начало a, b Да a>b m=a m 33 Нет Конец program pr 1; var a, b, m: integer; begin write(‘a=‘); readln(a); write(‘b=‘); readln(b); if a>b then m: =a else m: =b; write(‘m=‘, m); end.
Пример 2: найти площадь треугольника, если заданы длины сторон a, b, c Условие существования треугольника: a+b >c и a+c>b и b+c>a Расчётные формулы полупериметр (p): площадь (S): 34
Пример 2: программа program pr 4_1; var a, b, c: integer; p, d, s: real; begin write(‘a=‘); readln(a); write(‘b=‘); readln(b); write(‘c=‘); readln(c); if (a+b>c) and (a+c>b) and (b+c>a) then begin p: =(a+b+c)/2; d: =p*(p-a)*(p-b)*(p-c); s: =sqrt(d); writeln(‘Площадь s=’, s) end else writeln(‘Треугольник не существует’); end. 35
Оператор выбора Case…Of Оператор выбора используется для случая выбора из произвольного числа альтернатив (более двух). Селектор – выражение любого порядкового типа. Структура: case <селектор> of Список_1: <оператор_1>; Список_2: <оператор_2>; ………… Список_N: <оператор_N>; [else <оператор>] 36 end;
Схема оператора выбора case селектор of Список_1 Список_2 Список_N else 37 Оператор_1 Оператор_2 Оператор_N Оператор
Пример 3: по порядковому номеру месяца вывести количество дней в этом месяце program pr 3; var i: integer; begin write(‘Введите номер месяца: ’); readln(i); case i of 1, 3, 5, 7, 10, 12: writeln(‘В месяце 31 день); 2: writeln(‘В месяце 28 дней); else writeln(‘В месяце 30 дней) end {case} 38 end.
Цикл с предусловием While Начальные установки Выражение Операторы Модификация параметра цикла 39 Структура: while <выражение> do <оператор>; <выражение> - выражение логического типа. Если результат вычисления выражения равен true, выполняется расположенный после слова do простой или составной оператор. Действия повторяются до тех пор, пока результатом выражения не станет значение false. Управление передаётся на следующий после цикла оператор.
Пример: программа, печатающая таблицу значений функции y=2 t x для аргумента x, изменяющегося в заданных пределах с заданным шагом. Алгоритм 1. Ввести исходные данные. 2. Взять первое значение аргумента. 3. Вычислить значение функции по формуле. 4. Вывести строку таблицы. 5. Перейти к следующему значению аргумента. 6. Если оно не превышает конечное значение, повторить шаги 3 -5, иначе закончить. 40 Ц И К Л
Исходные данные: Xn - начальное значение аргумента Xk - конечное значение аргумента d. X – шаг изменения аргумента t – параметр Начальные установки: x: =Xn Выражение: x<=Xk Модификация параметра: x: =x+d. X 41
Начало Xn, Xk, d. X, t x=Xn x Xk Да y=2 t x Вывод x, y x=x+d. X 42 Конец Нет program pr 4; uses Crt; var Xn, Xk, d. X, x, y, t : real; begin Clr. Scr; writeln(‘Введите Xn, Xk, d. X, t’); readln(Xn, Xk, d. X, t); x: =Xn; while x<=Xk do begin y: =2*t*x; writeln(‘x=‘, x, ’ ‘, ’y=‘, y); x: =x+d. X end; {цикл} end.
Цикл с постусловием Repeat Начальные установки Операторы Модификация параметра цикла Выражение 43 Структура: repeat <тело цикла> until <выражение>; Цикл будут выполняться до тех пор, пока логическое выражение после слова until не станет истинным. Как только результат вычисления выражения станет равен true, произойдёт выход из цикла.
Начало Xn, Xk, d. X, t x=Xn y=2 t x Вывод x, y x=x+d. X x>Xk Нет 44 Конец Да program pr 5; uses Crt; var Xn, Xk, d. X, x, y, t : real; begin Clr. Scr; writeln(‘Введите Xn, Xk, d. X, t’); readln(Xn, Xk, d. X, t); x: =Xn; repeat y: =2*t*x; writeln(‘x=‘, x, ’ ‘, ’y=‘, y); x: =x+d. X; until x>Xk; end.
Оператор цикла For i=a (1) b i – параметр цикла a – начальное значение параметра b – конечное значение параметра Тело цикла (простой или составной оператор) Структура (шаг равен 1): for i: =a to b do <оператор>; При этом a≤b. Структура (шаг равен -1): for i: =a downto b do <оператор>; При этом a>b. 45
Сумма Начало N=50 S=0 i=1, N S=S+1/i 3 S 46 Конец program pr 6; uses Crt; var N, i: integer; S: real; begin Clr. Scr; N: =50; S: =0; For i: =1 to N do S: =S+1/(i*i*i); writeln(‘S=‘, S); end.
Оператор перехода goto Синтаксис: Примеры: goto <метка>; goto 1; goto error; Используется в случаях: q Принудительный выход вниз по тексту программы из нескольких вложенных циклов или операторов выбора; q Переход из нескольких мест программы в одно. 47
Массивы
q Массив – упорядоченная совокупность элементов одного типа, имеющих одно имя. q Тип элементов массива называется базовым. q Максимальное число элементов массива (размерность) фиксируется при описании и в процессе программы не меняется. q Каждому элементу массива соответствует совокупность номеров (индексов), определяющих его местоположение в последовательности. q Доступ к каждому элементу осуществляется путём указания имени массива и индекса элемента. X[i] – элемент одномерного массива X Y[i, j] – элемент двухмерного массива Y q Индекс – выражение любого скалярного типа, кроме вещественного. q Тип индекса определяет границы изменения значений индекса.
Для описания массива используется словосочетание array of. Описание: type <имя_типа>=array [тип_индекса] of <тип_компонента>; var <список_идентификаторов>: <имя_типа>; Или var <список_идентификаторов>: array [тип_индекса] of <тип_компонента>;
Объявление массива
Ввод значение элементов 1. С помощью типизированных констант
2. С клавиатуры Цикл с предусловием i=1 i N Да Ввод x[i] i=i+1 Нет i: =1; while i<=N do begin write(‘Введите ’, i, ’-й элемент: ’); readln(x[i]); i: =i+1 end; Цикл с параметром i=1, N Ввод x[i] For i: =1 to N do begin write(‘Введите ’, i, ’-й элемент: ’); readln(x[i]); end;
Базовые алгоритмы 1. Сумма элементов Выполняется накапливанием суммы с помощью цикла. Начальное значение суммы принимается равным нулю. program prsum; const x: array[1. . 12] of real=(0, -2, 1, 3, 7, 4, 5, -1, 0, 6, 2, 0); var i: integer; s: real; begin s: =0; for i: =1 to 12 do s: =s+x[i]; writeln(‘s=‘, s: 3: 0) end.
2. Поиск максимального элемента Необходимо определить как значение максимального элемента, так и его расположение в массиве (индекс). Задача решается перебором всех элементов массива. Очередной элемент сравнивается с максимальным из рассмотренных ранее и из двух выбирается наибольший max=-1 e 20 imax=1 i=1, 12 Нет program prmax; max
3. Удаление элемента из массива Пример. Удалить из массива X элементы равные нулю. Для этого можно ввести массив Y, в который вписать ненулевые элементы массива X. program prudal; type mas=array[1. . 12] of real; const x: mas=(0, -2, 1, 3, 7, 4, 5, -1, 0, 6, 2, 0 ); var i, j: integer; y: mas; begin j: =0; for i: =1 to 12 do if x[i]<>0 then begin j: =j+1; y[j]: =x[i]; write(y[j]: 3: 0) end. j=0 i=1, 12 Нет x[i]<>0 Да j=j+1 Y[j]=x[i] Вывод y[j]
4. Сортировка (метод обмена или пузырька)
Метод обмена (блок-схема) i=1, N-1 j=1, N-i Нет x[j]>x[j+1] Да w=x[j]=x[j+1]=w program prbubble; const n=12; type mas=array [1. . n] of integer; var x: mas; i, j: integer; w: real; begin For i: =1 to N do begin write(‘Введите ’, i, ’-й элемент: ’); readln(x[i]); end; for i: =1 to n-1 do for j: =1 to n-i do if x[j]>x[j+1] then begin w: =x[j]; x[j]: =x[j+1]; x[j+1]: =w end; for i: =1 to n do write(x[i]: 3: 0) end.
Ввод элементов двухмерного массива i=1, N j=1, M Ввод x[i, j] Цикл с параметром For i: =1 to N do For j: =1 to M do begin write(‘Введите элемент: ’); readln(x[i, j]); end; Вывод элементов (в виде матрицы): for i: =1 to N do begin for j: =1 to N do write(x[i, j]: 3: 0); writeln end;
Двумерный массив из n строк и m столбцов X[i, j] – элемент двухмерного массива X i – строка j - столбец
Ввод элементов двухмерного массива i=1, N j=1, M Ввод x[i, j] Цикл с параметром For i: =1 to N do For j: =1 to M do begin write(‘Введите элемент: ’); readln(x[i, j]); end; Вывод элементов (в виде матрицы): for i: =1 to N do begin for j: =1 to N do write(x[i, j]: 3: 0); writeln end;
Пример. В каждой строке двумерного массива размерности 12 x 3 найти максимальный элемент i=1, N max=-1 e 6 j=1, M Нет x[i, j]>max Да max=x[i, j] Вывод max program primer; const N=12; M=3; type mas=array [1. . N, 1. . M] of real; var x: mas; i, j: integer; max: real; Begin For i: =1 to N do For j: =1 to M do readln(x[i, j]); For i: =1 to N do begin max: =-1 e 6; For j: =1 to M do if x[i, j]>max then max: =x[i, j]; writeln(‘max=‘, max: 3: 1); end.
Объектно-ориентированное программирование 63
Понятия объекта и класса Объект – предмет или явление, имеющее четко определенное поведение; обладает целостностью; может менять свое состояние. Класс – множество объектов, которые обладают одинаковой структурой, поведением и отношением с объектами из других классов. 64
Основные понятия Состояние объекта – перечень всех возможных свойств и текущие значения каждого из этих свойств. Поведение объекта – воздействие объекта на другие объекты Индивидуальность – свойство объекта, отличающее его от всех других объектов 65
Описание объекта (пример) Объект - Стол Методы: Купить Продать Покрасить Метод – воздействие, выполняемое над данным объектом 66
Объектная модель Главные элементы: Абстрагирование Инкапсуляция Модульность Иерархия 67
Спецификаторы доступа 68
Иерархия 69
Синтаксис описания класса 70
Объектная декомпозиция приложения Цель системы: нарисовать фигуру Действия пользователя: выбор фигуры, изменение параметров фигуры, рисование фигуры с заданными параметрами Объекты: окно Приложения (получает, анализирует и обрабатывает команды пльзователя) 71
72
Принципы объектно-ориентированного программирования Наследование, инкапсуляция, полиморфизм Наследование – возможность использования уже определённых ранее классов для построения классов, производных от них. Каждый порождённый класс автоматически наследует поля, методы и свойства своего родителя и добавляет к ним дополнительные свойства и методы. Инкапсуляция – совмещение данных с процедурами и функциями, которые манипулируют этими данными. В результате такого совмещения получается новый тип данных – объект. Полиморфизм – возможность определения единого по имени действия, применимого одновременно к разным классам, причём каждый класс реализует это действие по-своему. Это означает, что можно иметь несколько взаимозаменяемых классов, даже если каждый класс реализует одни и те же свойства и методы разными способами. 73
Пример. Создание класса Point, моделирующего точку плоскости 74
Создание экземпляра класса Экземпляр – объект, имеющий тип данного класса. Пример. Создание экземпляра класса Point, у которого устанавливаются значения полей х и y. Некоторая переменная объявляется сначала как объектная (типа Point), а затем при помощи оператора Set ей уже может быть назначено значение. 75
Добавление методов в класс Модуль класса Point Public x As Integer ' Поле х Public y As Integer ' Поле y Public Sub Move(By. Val pt As Point) x = x + pt. x y = y + pt. y End Sub Public Function Length() As Double Length = Sqr(x ^ 2 + y ^ 2) End Function Public Function To. String() As String To. String = "(" & x & ", " & y & ")" End Function 76
Добавление методов в класс (продолжение) Sub Test. Point() Dim p 1 As New Point p 1. x = 1: p 1. y = 1 Debug. Print p 1. To. String Debug. Print p 1. Length Dim p 2 As New Point p 2. x = 2: p 2. y = 2 Debug. Print p 2. To. String p 1. Move p 2 Debug. Print p 1. To. String Debug. Print p 2. To. String End Sub 77
Структура и программирование линейных алгоритмов 78
79
Используемые элементы управления Поле (Text. Box) – используется для ввода-вывода информации Надпись (Label) – используется для вывода текста на форму Кнопка (Command. Button) – используется для запуска, прерывания или останова некоторого процесса 80
81
Установка значений свойств 82
Установка значений свойств 83
Текст модуля формы 84
Создание макроса и кнопки 85
Язык разметки гипертекста HTML 86
Принципы гипертекстовой разметки HTML – описательный язык разметки документов. В HTML используются указатели разметки – теги. Теговая модель описывает документ как совокупность контейнеров. Каждый контейнер начинается и заканчивается тегами. HTML-тег состоит из имени, за которым может следовать необязательный список атрибутов тега. Порядок записи атрибутов в теге значения не имеет. Текст тега заключается в угловые скобки ( «<» и «>» ). Перед именем конечного тега ставится косая черта ( «/» ). 87
Группы тегов (по назначению и области действия) q определяющие структуру документа q оформление блоков гипертекста (параграфы, списки, таблицы, картинки) q гипертекстовые ссылки и закладки q формы для организации диалога q вызов программ 88
Структура документа HTML-документ — это контейнер, который начинается с тега и заканчивается тегом : Содержание документа Контейнер HTML или гипертекстовый документ состоит из двух других вложенных контейнеров: заголовка документа ( HEAD ) и тела документа ( BODY ). 89
Теги управления разметкой Заголовки (в стандарте определено 6 уровней заголовков)
Создание списков Виды списков: qненумерованный список (неупорядоченный) (Unordered Lists
- ) qнумерованный список (упорядоченный) (Ordered Lists
- ) qсписок определений 91
Неупорядоченные списки — тег
- Ненумерованный список предназначен для создания текста типа: § первый элемент списка; § второй элемент списка; § третий элемент списка. Записывается данный список в виде последовательности:
- первый элемент списка
- второй элемент списка
- третий элемент списка
Упорядоченные списки — тег
- <ОL ТYРЕ=l> Тег создает список с нумерацией в формате 1. , 2. , 3. , 4. и т. д. <ОL ТYРЕ=А> Тег создает список с нумерацией в формате А. , В. , С. , D. и т. д.
- Тег создает список с нумерацией в формате а. , b. , с. , d. и т. д. <ОL ТYРЕ=I> Тег создает список с нумерацией в формате I. , II. , III. , IV. и т. д. 93
Список определений — тег
- Теги списка (Definition List:
- ,
- ) используют для создания списка терминов и их определений. Схема использования тега:
- Термин
- Определение
- позволяет создавать отдельные абзацы с отступом без нумерации или маркеров. Отступ делается от левого края. Если на странице несколько тегов
- , то текст постепенно сдвигается все больше вправо. 94
- ,
Горизонтальные линейки — тег <НR> Горизонтальное отчеркивание (Horizontal Rule) применяется для разделения документа на части. Преформатированный вывод — тег <РRЕ> Применение этого тега позволяет отобразить текст "как есть" (без форматирования), теми же символами и с тем же разбиением на строки. Комментарии в языке HTML "". 95
Отображаемое название гипертекстовой ссылкиА> где значение атрибута" src="https://present5.com/presentation/173692233_445887593/image-95.jpg" alt="Гипертекстовые ссылки <А НREF="http: //www. in. ru/index. html">Отображаемое название гипертекстовой ссылкиА> где значение атрибута" /> Гипертекстовые ссылки <А НREF="http: //www. in. ru/index. html">Отображаемое название гипертекстовой ссылкиА> где значение атрибута HREF — адрес документа "index. htm" на машине "www. in. ru", доступ к которой осуществляется по протоколу НТТР. Обращение к документу в том же каталоге в гипертекстовой ссылке будет записано просто как имя данного файла: А> 96