Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Программирование и алгоритмические языки. Программирование на языках Турбо-Паскаль и Си

Покупка
Артикул: 753054.01.99
Доступ онлайн
2 000 ₽
В корзину
Лабораторный практикум предназначен для выполнения в курсе ”Программирование и алгоритмические языки”. Ориентирован на использование языков Турбо-Паскаль 7.0 и Си. Содержит краткие сведения по языкам и лабораторные работы, ориентированные на приобретение навыков использования основных средств языка, приемов программирования, типовых алгоритмов, структур данных и методов сортировки. Может быть также использован в курсах программирования для других специальностей и для самостоятельного изучения основ программирования и алгоритмических языков Турбо-Паскаль и Си.
Светозарова, Г. И. Программирование и алгоритмические языки. Программирование на языках Турбо-Паскаль и Си : лабораторный практикум / Г. И. Светозарова, Е. В. Сигитов. - Москва : ИД МИСиС, 2002. - 149 с. - Текст : электронный. - URL: https://znanium.com/catalog/product/1232415 (дата обращения: 15.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
№ 1475 
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ 

ИНСТИТУТ СТАЛИ и СПЛАВОВ 

Технологический университет 

МИСиС 

Кафедра инженерной кибернетики 

Г.И. Светозарова, Е.В. Сигитов 

ПРОГРАММИРОВАНИЕ 
И АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ 

Программирование 
па языках Турбо-Паскаль и Си 

Лабораторный практикум 

для студентов всех специальностей 

Переиздание 

Рекомендован редакционно-издательским 
советом института 

МОСКВА 2002 

УДК 681.3.06.(075.8) 
С24 

С24 
СветозароваГ.И.,СигитовЕ.В. Программирование и алгоритм! 
ческие языки: Программирование на языках Турбо-Паскаль и С 
Лаб. практикум / Переиздание - М.: МИСиС, 2002. -149 с. 

Лабораторный практикум предназначен для выполнения в Kypс 
"Программирование и алгоритмические языки". Ориентирован на 
использование 
языков Турбо-Паскаль 7.0 и Си. Содержит краткие сведения по яг 
и лабораторные работы, ориентированные на приобретение навык< 
использования основных средств языка, приемов программирования, тип( 
вых алгоритмов, структур данных и методов сортировки. Может быть 
использован в курсах программирования для других специальностей и 
самостоятельного изучения основ программирования и алгоритмически 
языков Турбо-Паскаль и Си. 

© Московский государственный институт стали и сплавов 
(Технологический университет 
(МИСиС), 2002 

ОГЛАВЛЕНИЕ 

Введение. Основные понятия программирования 
5 

Часть I. Программирование на языке Турбо-Паскаль. Описание 

языка Турбо-Паскаль 
7 

1. Вводные понятия. Структура программы 
7 

2. Переменные. Типы данных 
7 

3. Операторы 
10 

3.1. Оператор присваивания 
10 

3.2. Операторы ввода-вывода 
10 

3.3. Оператор безусловного перехода 
11 

3.4. Пустой оператор 
11 

3.5. Составной оператор 
12 

3.6. Условный оператор 
12 

3.7. Операторы цикла 
13 

3.8. Оператор выбора 
14 

4. Массивы 
15 

5. Символьные данные 
17 

6. Логические данные и их использование 
19 

7. Записи 
20 

8. Блочная структура программы. Процедуры и функции 
21 

8.1. Блочная структура программы. Локальные и 
глобальные переменные 
21 

8.2. Процедура 
22 

8.3. Функция 
23 

8.4. Использование массивов в качестве 

параметров процедур (функций) 
24 

8.5. Параметры без типа 
25 

8.6. Массивы (и строки) открытого типа 
26 

8.7. Параметры-функции и параметры-процедуры 
26 

9. Файлы данных 
27 

10. Дополнительно о типах 
30 

11. Модули 
33 

12. Графический режим 
35 

13. Динамическое распределение памяти. Указатели 
40 

Вопросы для самопроверки 
41 

Лабораторная работа 1. Простейшие программы 

циклической структуры 
44 

Лабораторная работа 2. Организация разветвлений. 

Разветвления в цикле 
52 

Лабораторная работа 3. Массивы и записи 
59 

Лабораторная работа 4. Процедуры и функции 
72 

Лабораторная работа 5. Использование графических 

средств 
80 

Лабораторная работа 6. Обработка текстовых данных 
, 
82 

Часть П. Программирование на языке Си. Основы языка Си 
87 

1. Структура 
программы 
87 

2. Переменные. Типы данных. Выражения 
87 

3. Массивы и структуры 
•. 
89 

4. Указатели. Динамическое распределение памяти 
91 

5. Операторы 
93 

6. Функции 
97 

7. Файлы данных 
103 

8. Текстовый и графический режимы 
105 

Лабораторная работа 7. Линейные списки 
108 

Лабораторная работа 8. Деревья 
119 

Лабораторная работа 9. Графы 
126 

Лабораторная работа 10. Сортировка 
134 

Библиографический список 
148 

4 

ВВЕДЕНИЕ. ОСНОВНЫЕ 
ПОНЯТИЯ ПРОГРАММИРОВАНИЯ 

Алгоритм —-четкое описание последовательности действий, которые необходимо выполнить для решения задачи. Разработать алгоритм решения задачи означает разбить задачу на последовательно 
выполняемые шаги (этапы), причем результаты выполнения предыдущих этапов могут использоваться при выполнении последующих. 
При этом должны быть четко указаны как содержание каждого этапа, 
так и порядок выполнения этапов. Отдельный этап (шаг) алгоритма 
представляет 
собой либо другую (всегда' более простую) задачу, 
либо должен быть достаточно простым и понятным без дополнительных пояснений. Если этап - другая задача, то к ней применяется 
тот же прием разбиения на более простые этапы. Это - так называемый метод пошаговой детализации алгоритма. 

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

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

- следование - размещение отдельных этапов в порядке друг за 
другом; 

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

- разветвление - выбор одного из двух вариантов вычислительного процесса после проверки условия; 

- обход - частный случай разветвления, когда одна из ветвей не 
содержит никаких действий; 

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

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

5 

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

Подробнее о типовых структурах алгоритма и структурном подходе к разработке программ см.[2], глава 1. 

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

Данное пособие ориентировано на версию Турбо-Паскаль7.0. 

6 

Часть I. ПРОГРАММИРОВАНИЕ 
НА ЯЗЫКЕ ТУРБО-ПАСКАЛЬ. 

ОСНОВЫ ЯЗЫКА ТУРБО-ПАСКАЛЬ 

1. Вводные понятия. Структура программы 

Первый оператор - заголовок программы: 

program имя; (не является обязательным) 
Далее следует раздел описаний, где должны быть объявлены исюльзуемые в программе переменные, метки и т.д. 

После раздела описаний следует тело программы, т е. последо(ательность операторов программы, начинающаяся словом begin и 
заканчивающаяся словом end, после которого следует точка. 

Таким образом, программа должна иметь следующую структуру: 
program имя; 
раздел описаний; 
begin 
раздел операторов; 
end. 
Для именования объекта программы, а также самой программы, 
подпрограмм и т.п. используются идентификаторы^ 

Идентификатор может включать буквы латинского алфавита 
(строчные и прописные буквы в идентификаторах неразличимы), 
Цифры и символ подчеркивания. Первым символом обязательно 
должна быть буква. Количество символов может быть произвольным, значащими являются первые 63 символа. В качестве идентификаторов нельзя использовать так называемые зарезервированные 
слова (например, begin, end). Полный список зарезервированных 
слов см. например, в [1], Приложение А. 

2. Переменные. Типы данных 

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

а - 5 , 

7 

Каждая переменная имеет тип. Тип определяет объем памяти, 
выделяемый под переменную (длину ячейки памяти), множество 
допустимых значений, способ преобразования информации из внешнего представления во внутреннее и из внутреннего во внешнее и 
набор операций, допускаемых для переменной. Основные принципы 
представления информации в памяти см. [2], с. 13-16. 

В языке Турбо-Паскаль есть возможность использовать стандартные (базовые) тины или определить в программе новый тип. 

К стандартным типам относятся целые типы ( s h o r t i n t - занимает в памяти 1 байт, b y t e - 1 байт, word - 2 байта, i n t e g e r 2 байта, l o n g i n t - 4 байта), 
вещественные типы ( s i n g l e - 4 
байта, 
r e a l - 6 байт, double - 8 байт, e x t e n d e d - 10 байт, 
с о т р - 8 байт), символьный тип ( c h a r - 1 байт), логический тип 
( b o o l e a n - 1 
байт), 
тип-строка 
( s t r i n g ) , 
тип- 
указатель 
(pointer), текстовый файл (text), (в Турбо-Паскале 7.0 еще 
ASCIIZ-строка - репа г). 

Перечисленные стандартные типы можно использовать для описания неременных непосредственно. Например, 

var 

х,у:real; 
n:integer; 

Определяемые в программе типы должны быть объявлены в 
разделе объявления типов (см. пн. 4, 10), после чего их можно использовать для описания переменных. 

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

Целые константы — последовательность цифр со знаком +, или без знака (5, -18,...). 

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

- используя точку для отделения целой части от дробной (0.5, 
5.1,-6.0); 

- используя показательную форму записи (например, 2.3Е-5 
соответствует обычной записи 2,3-10 , 0.8Е2 соответствует задней 0,8-102,...). 

Имя константы можно задать в разделе описания констант. Например, 

const 
п=12; 
а = 0 . 5 ; 

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

const 

s:integer=0; 

Примеры описания и использования констант см., например, в 
программах program pl_l, program pi 1 1 (Лабораторная работа 1). 

Выражения определяют правила для получения значения. 
Арифметические выражения включают переменные, константы вещественных или целых типов и стандартные (или определяемые 
пользователем, см. п 8 3) функции. В арифметических выражениях 
используются операции +,-,*, /• 

Результат любой из этих операций будет целый, если оба операнда целые, в остальных случаях результат вещественный. Исключение составляет операция / Результат её выполнения всегда вещественный. Кроме того, для целых операндов могут использоваться 
операции d i v (деление нацело) и mod (вычисление остатка от деления). 

Заметим, что в Турбо-Паскале отсутствует операция возведения 
в степень Возведение в любую целую степень можно легко осуществить, используя стандартную функцию sqr. Так для вычисления 

7 

У = х можно использовать следующую последовательность операторов 

p : = s q r ( x ) ; 
p l : = s q r ( p ) ; 
y:=p*pl*x; 
Для возведения в вещественную степень можно использовать 
сочетание ехр и In Так например, у = хр (при х>0) можно вычислить, используя оператор 

у:=ехр(р*1п(х)) ; 

9 

3. Операторы 

3 1. Оператор присваивания 
Общий вид оператора 
переменная = выражение, 
Примеры: 
у : = 5 . 6 ; 
y : = x / p * v ; 
y : = s q r t ( x * s i n ( x ) ) ; 

X 

Второй пример соответствует вычислению выражения у= — V. 

Р 
З а м е ч а н и е . Если переменная левой части целого типа, то 
выражение правой части должно иметь целое значение. 

3.2 Операторы ввода-вывода 
Операторы ввода-вывода являются операторами вызова стандартных процедур модуля System (см п 11). Здесь рассматривается 
только ввод с клавиатуры и вывод на экран дисплея. 

Ввод с клавиатуры осуществляется операторами 

r e a d 
(СПИСОК 
ввода); 
r e a d l n 
(СПИСОК 
ввода); 

где список ввода может содержать переменные целого или вещественного типа, типа char, s t r i n g или pchar, в которые помещается вводимая информация. Отдельные значения при наборе отделяются друг от друга пробелами. После выполнения r e a d l n осуществляется переход к следующей строке. 

Вывод на экран дисплея осуществляется операторами 

w r i t e ^(СПИСОК вывода) ; 
w r i t e l n 
(СПИСОК 
вывода); 

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

Логические значения выводятся в виде t r u e , 
f a l s e . 

После выполнения оператора w r i t e l n 
осуществляется перевод строки. 

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

10 

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

var 

n : i n t e g e r ; 
x : r e a l ; 

w r i t e l n ( ' n = ' , n : 4 ; ' x = ' , x : 8 : 2 ) ; 

На экран будет выведено п= и далее в четыре позиции значение 
, затем х= и в восемь позиций значение х, из них дробная часть 
>азмещается в последних двух позициях. 

Если указанного поля не хватает, то формат игнорируется 

3.3 Оператор безусловного перехода 

Оператор goto позволяет изменить порядок выполнения операторов и перейти в любую точку программы Оператор, на который 
осуществляется переход, должен быть помечен меткой. Меткой может быть либо набор от 1 до 5 цифр, либо идентификатор. Метки 
Должны быть описаны Метка от оператора отделяется двоеточием. 
Например, 

label 10,20,30, pom; 

goto 10; 

10:р:=1; 

goto pom; 

pom:p:=2; 

На практике оператор goto используется крайне редко Современное 
программирование 
считается 
"программированием 
без 
goto". Использование оператора goto оправдано лишь в редких 
случаях, когда использование только типовых структур алгоритмов 
приводит к неоправданному усложнению программы. 

3 4. Пустой оператор 

Пустой оператор никак не изображается Он не выполняет никаких действий, но он может быть помечен и отделяется точкой с запя
11 

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

label nx; 
begin 

goto nx; 

nx: 
end. 
Ниже приводится пример программы, использующей операторы 
присваивания и ввода-вывода: 
program p ; 
var 

х, у, z , f : r e a l ; 
c o n s t 

m:=10; 
begin 

r e a d l n ( x , y ) ; 
z:=x+y; 
f:=y/x*m; 
w r i t e l n ( , z = ' , x : 8 : 2 , ' f - ' , f : 8 : 3 ) 
end. 
З а м е ч а н и е . В программе каждое предложение (в частности, 
оператор) заканчивается ;. Перед end ; ставить не обязательно. 

Далее рассматриваются операторы, реализующие типовые (базовые) структуры алгоритма. 

3.5 Составной оператор 

Составной оператор реализует структуру "следование". Составной оператор - это последовательность операторов, заключенная 
в операторные скобки b e g i n , end. Например, 

begin x:=2; y:=3 end; 
В этом смысле часть программы, представляющая раздел операторов, является одним составным оператором. 

3.6 Условный оператор 

Условный оператор реализует структуру "разветвление". Общий 
вид оператора 

if условие 
then оператор 
1 else оператор 
2; 

Доступ онлайн
2 000 ₽
В корзину