Программирование

B. Продолжения исполнения программы, начиная с оператора адреса.

D.READ

A.CASE,DIV,ELSE,OF,UNTIL,VAR.

B.SQRT,EXP,LN,ABS,COS.

C.SQR,SIN,CHR,TRUNC,COS.

D.EXP,PRED,ODD,ABS,SIN.

E.ARCTAN,EXP,SUCC,SQRT,LN

25.Ключевые слова языка Паскаль

B.AND,SQRT,EXE,COM,AUTOEXC,SYS.

C.HELP,WHILE,OR,SIN,OND,CHR.

D.ARRAY,CONFIG,ODD,ARCTAN,FILE,IN.

E.LN,COMMAND,ABS,EXP,DO,END,REPEAT.

26. Укажите оператор ввода

A.WRITE

B.GOTO

C.IF…..THEN

E.TEXT

27.Чтобы значения переменных A,B,C выводить на экран раздельно,

В одной строке нужно употребить следующий формат оператора вывода…

A. READLN (A, B, C);

B. READLN (A, B, C);

C.WRITELN (A, B, C);

D. WRITE (A); WRITE (B); WRITE (C);

E. WRITELN (A; B; C);

28. Оператор перехода служит для…

A. Организации цикла.

C. Выполнения условия.

D. Запуска подпрограммы.

E. Выхода из подпрограммы.

29.Условия ”Если X= 0,05, то идти к 70” соответствует

Программная строка…

A. IF X := 0.05 THEN GOTO 70;

B. FOR X := 0.05 GOTO 70;

C. IF X := 0.05 THEN GOTO 70;

D. IF X := 0.05, THEN GOTO 70;

E. FOR X := 0.05 THEN GOTO 70;

30.Как объявить массив с именем P в количестве 732 вещественных элементов?

A. P: ARRAY [1..732]of real;

B. ARRAY P [1..732] of real;

C. P = ARRAY [1..732] of real;

D. P of real [1..273];

E. P [732] of real;

 



 

 


Лист регистрации изменений

в ____________________________________________________________________________


на 201__/___учебный год

В ___________________________________________ вносятся следующие изменения:
(наименование дисциплины)

1. ______________________________________

2. ______________________________________

3. ______________________________________

4. ______________________________________

Пересмотрены и утверждены на заседании кафедры Естественно-технических дисциплин, протокол №_____ от ______________________20___года

 

 

Заведующий кафедрой _______________________________ФИО
(подпись)

 

 

Внесенные изменения согласованы:

 

Декан факультета_________________________

 

 

Председатель научно-методического совета академии

__________________________________________ФИО

 

____________________________________20______г.

часть I

 

 

Учебное пособие

 

Ставрополь

Печатается по решению

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

Ставропольского государственного

университета

 

Непретимова Е. В., Саманчук Л.Ф. Программирование: Учебн. пособие. Ч1 – Ставрополь: СГУ, 2006.- 128 с.

 

Пособие соответствует государственному образовательному стандарту дисциплины «Информатика» раздел «Программирование» специальности 010400 –физика, а также может быть использовано при преподавании дисциплины «Алгоритмизация и программирование» для студентов специальности 010100 - математика и дисциплины «Информатика» специальности 010500 - прикладная математика и информатика.

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

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

 

Рецензенты: 1. Торопцев Е.Л., доктор экономических наук, профессор, зав. каф. автоматизации учетно-финансовых информационных систем ФГОУ ВПО Ставропольского государственного аграрного университета,

2. Копыткова Л.Б., канд. физ.-мат.наук, доцент, зав. каф. алгебры Ставропольского государственного университета

 

© Ставропольский государственный университет, 2006


Содержание

Предисловие. 6

1. Основные понятия алгоритмизации и программирования. 8

1.1. Этапы решения задач на ЭВМ... 8

1.2. Основы алгоритмизации. 10

1.3. Теоретические основы программирования. 18

1.4. Правила записи в С++ арифметических выражений. 19

Лабораторная работа № 1 Запись арифметических выражений. 22

2. Программирование алгоритмов линейной структуры.. 25

2.1. Общая характеристика языка программирования С++. 25

2.2. Основные понятия языка. 25

2.3. Данные и способы их организации. 28

2.4. Стандартные простые типы данных. 30

2.5. Структура программы.. 33

2.6. Операторы.. 36

2.7. Организация ввода/вывода данных. 37

Лабораторная работа № 2 Программирование алгоритмов линейной структуры.. 38

3. Операторы ветвления. 47

3.1. Простые и составные условия. 47

3.2. Составной оператор. 48

3.3. Условная операция (?:) 49

3.4. Условный оператор if. 49

3.5. Оператор switch. 52

3.6. Оператор перехода goto. 53

Лабораторная работа № 3 Программирование алгоритмов разветвляющейся структуры.. 55

4. Циклы.. 63

4.1. Оператор цикла с параметром (for) 64

4.2. Оператор цикла с предусловием (while) 65

4.3. Оператор цикла с постусловием (do while) 66

4.4. Вложенные циклы.. 67

Лабораторная работа № 4 Программирование алгоритмов циклической структуры.. 69

5. Подпрограммы.. 78

5.1. Понятие подпрограммы.. 78

5.2. Формальные и фактические параметры.. 78

5.3. Локальные и глобальные переменные. 79

5.4. Функции. 81

Лабораторная работа №5 Использование функций для решения прикладных задач. 84

6. Итерация и рекурсия. 89

6.1. Понятие итеративного процесса. 89

6.2. Понятие рекурсии. 89

Лабораторная работа №6 Программирование рекурсивных алгоритмов. 91

7. Одномерные массивы.. 98

7.1. Понятие структурированного типа данных. 98

7.2. Понятие и описание типа массив. 98

7.3. Одномерные массивы.. 99

7.4. Основные действия над элементами массивов. 100

Лабораторная работа №7 Использование числовых одномерных массивов. 103

8. Двумерные массивы.. 108

Лабораторная работа №8 Двумерные массивы.. 112

9. Алгоритмы решения задач внутренней сортировки и алгоритмы поиска информации. 116

9.1. Сложность алгоритмов. 116

9.2. Постановка задачи поиска. 117

9.3. Последовательный (линейный) поиск. 117

9.4. Бинарный поиск. 118

9.5. Постановка задачи сортировки данных. 118

9.6. Прямые и быстрые методы внутренней сортировки. 119

9.7. Сортировка вставками. 120

9.8. Сортировка с помощью прямого выбора. 121

9.9. Сортировка с помощью прямого обмена. 122

Лабораторная работа № 9 Задачи сортировки и поиска. 124

10. Указатели и массивы.. 125

10.1. Указатели. 125

10.2. Взаимосвязь между массивами и указателями. 126

10.3. Порядок объявления динамических массивов. 129

10.4. Передача массивов в качестве параметров функции. 130

Лабораторная работа №10 Применение массивов и указателей для решения прикладных задач 132

11. Особенности работы с функциями. 138

11.1. Способы передачи параметров в функцию.. 138

11.2. Передача имен функций в качестве параметров. 139

11.3. Перегрузка функций. 140

Лабораторная работа № 11 Исследование способов работы с функциями. 142

12. Строки как массив элементов типа char. 147

Лабораторная работа № 12. 151

13. Строки как специальный класс string. 154

Лабораторная работа № 13 Исследование способов работы с функциями. 156

Контрольные вопросы.. 158

Форма отчета. 159

14. Структуры.. 160

14.1. Изучение порядка объявления и инициализации структур. 160

14.2. Программирование с использованием структур. 162

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

Лабораторная работа № 14 Применение структур для решения прикладных задач. 165

15. Файлы.. 166

15.1. Подход с использованием возможностей языка Си. 166

15.2. Подход с использованием возможностей языка С++. 169

Лабораторная работа № 15 Исследование методов доступа к файлам данных. 171

Литература. 173

Приложение 1 Порядок выполнения лабораторных работ. 174

Приложение 2 Базовые функции. 175

 


Предисловие

Существует достаточно света для тех, кто хочет видеть, и достаточно мрака для тех, кто не хочет.

Блез Паскаль(1623 - 1662)

Язык программирования Си (англ. C – третья буква латинского алфавита) разработанный в 1969 - 1973 годах сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би (B – вторая буква латинского алфавита) предназначался для реализации операционной системы UNIX, но, впоследствии, был перенесён на множество других платформ. Благодаря близости по скорости выполнения программ, написанных на Си, к языку ассемблера, этот язык получил широкое применение при создании системного программного обеспечения (ПО) и прикладного ПО для решения широкого круга задач. Язык программирования Си оказал существенное влияние на развитие индустрии ПО, а его синтаксис стал основой для таких языков программирования как C++, C# и Java.

В конце 1970-х годов Си начал вытеснять Бейсик с позиции ведущего языка для программирования микрокомпьютеров. В 1980-х годах он был адаптирован для использования в IBM PC, что привело к резкому росту его популярности. В то же время Бьёрн Страуструп и другие в лабораториях Bell Labs начали работу по добавлению в Си возможностей объектно-ориентированного программирования. Язык, который они в итоге сделали, C++, оказал большое влияние на разработку ПО, но так и не смог сравняться по популярности с Си, особенно в UNIX-подобных системах.

В 1983 году Американский национальный институт стандартов (ANSI) сформировал комитет для разработки стандартной спецификации Си. По окончании этого процесса в 1989 году он был утверждён как «Язык программирования Си» ANSI X3.159-1989. Эту версию языка принято называть ANSI C или C89. В 1990 году стандарт ANSI C был принят с небольшими изменениями Международной организацией по стандартизации (ISO) как ISO/IEC 9899:1990.

ANSI C сейчас поддерживают почти все существующие компиляторы.

После стандартизации в ANSI спецификация языка Си оставалась относительно неизменной в течение долгого времени, в то время как C++ продолжал развиваться. Однако в конце 1990-х годов стандарт подвергся пересмотру, что привело к публикации ISO 9899:1999 в 1999 году. Этот стандарт обычно называют «C99». В марте 2000 года он был принят и адаптирован ANSI.

8 декабря 2011 опубликован новый стандарт для языка Си (ISO/IEC 9899:2011).

Язык программирования Си отличается минимализмом. Авторы языка хотели, чтобы программы на нём легко компилировались с помощью однопроходного компилятора, чтобы каждой элементарной составляющей программы после компиляции соответствовало весьма небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад, к уже обработанному тексту. Поэтому использованию функции и переменных должно предшествовать их объявление. Код на Си можно легко писать на низком уровне абстракции, почти как на ассемблере. Иногда Си называют «универсальным ассемблером» или «ассемблером высокого уровня», что отражает различие языков ассемблера для разных платформ и единство стандарта Си, код которого может быть скомпилирован без изменений практически на любой модели компьютера. Си часто называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам. Однако, в строгой классификации, он является языком высокого уровня.

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

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

Многие элементы Си потенциально опасны, а последствия неправильного использования этих элементов зачастую непредсказуемы. Керниган говорит: «Си — инструмент, острый, как бритва: с его помощью можно создать и элегантную программу, и кровавое месиво». В связи со сравнительно низким уровнем языка многие случаи неправильного использования опасных элементов не обнаруживаются и не могут быть обнаружены ни при компиляции, ни во время исполнения. Это часто приводит к непредсказуемому поведению программы. Иногда в результате неграмотного использования элементов языка появляются уязвимости в системе безопасности. Необходимо заметить, что использования многих таких элементов можно избежать.

Язык программирования C++ произошёл от Си. Однако в дальнейшем Си и C++ развивались независимо, что привело к росту несовместимости между ними. Редакция C99 добавила в язык несколько конфликтующих с C++ особенностей. Эти различия затрудняют написание программ и библиотек, которые могли бы нормально компилироваться и работать одинаково и в Си и в C++, что, конечно, запутывает тех, кто программирует на обоих языках.

Бьёрн Страуструп, придумавший C++, неоднократно выступал за максимальное сокращение различий между Си и C++ для создания максимальной совместимости между этими языками. Противники же такой точки зрения считают, что так как Си и C++ являются двумя различными языками, то и совместимость между ними не так важна, хоть и полезна. Согласно этому лагерю, усилия по уменьшению несовместимости между ними не должны препятствовать попыткам улучшения каждого языка в отдельности [1].

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