Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012-2013 Вопросы к экзамену П бак 1 семестр.docx
Скачиваний:
1
Добавлен:
16.12.2019
Размер:
724.74 Кб
Скачать

Оглавление

1.Основные понятия: программирование, данные, программа, процесс, оператор, алгоритм. Краткая характеристика развития программирования. 4

2.Основные этапы решения задач на ЭВМ.??? 7

3.Алгоритм, свойства алгоритма. Алгоритмический язык программирования. Способы записи алгоритма. 7

4. Синтаксис и семантика языка программирования??. Структура программы на языке Pascal. 9

5.Основные символы языка Pascal. Идентификаторы, константы, переменные. 10

6.Скалярные типы данных.? Вроде как тоже стандартные 11

7.Стандартные типы данных. Надо уточнить 12

8.Выражения. Операторы. Составной оператор. 12

9.Оператор условия if. 13

10.Оператор выбора case. 13

11.Оператор цикла For. 14

12.Оператор цикла Repeat. 14

13.Оператор цикла While. 15

14.Процедуры и функции. Основные понятия. 15

15.Подпрограммы в языке Pascal. 16

16.Параметры подпрограмм. 16

17.Принцип локализации. (поискать) 19

18.Массив как структура данных. 20

19.Строки. 20

Действия со строками в Паскале 21

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

Операции отношения позволяют сравнивать строки на отношение равенства (=), неравенства (<>), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=). В результате сравнения двух строк получается логическое значение (true или false). Сравнение строк производится слева направо посимвольно до первого несовпадающего символа, большей считается та строка, в которой первый несовпадающий символ имеет больший код в таблице кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше. Строки равны, если они имеют равную длину и соответствующие символы совпадают. 21

Стандартные функции. 21

1 . Операция сравнения (так как в строках определён порядок, то для их возможно сравнить). 24

В строках определён лексико-графический порядок: из двух строк меньшей считается та у который первый символ меньше. 24

Пустая строка по умолчанию меньше всех остальных. 24

2. Операция обращения к элементу строки 24

В отличии от массивов нельзя s[5]:=’c’ для этого лучше воспользоваться Copy или Concat. 24

20.Записи. 24

21.Множества. 26

22.Файлы. Типизированные файлы. 27

23.Файлы. Текстовые файлы. 28

24.Файлы. Нетипизированные файлы. 29

25.Рекурсии. 31

26. Программирование графики. 31

27.Создание модулей. 36

Циклические ссылки между модулями 37

28.Сортировки массивов. Пузырьковая сортировка. 39

29.Сортировки массивов. Шейкерная сортировка. 40

30.Сортировки массивов. Сортировка Шелла. 42

31.Сортировки массивов. Быстрая сортировка. 44

32.Сортировки массивов. Сортировка прямыми (простыми) вставками. 46

33.Сортировки массивов. Сортировка бинарными вставками. 46

34.Сортировки массивов. Сортировка прямыми (простыми) вставками с барьером. 48

35.Сортировка массивов. Пирамидальная сортировка. 49

36.Динамические структуры данных. Стек, его применение. Операции над элементами стека. 52

37.Динамические структуры данных. Очередь, ее применение. Операции над элементами очереди. 53

38.Динамические структуры данных. Списки, их применение. Операции над элементами списка, их реализация. 53

Формирование списка 54

Просмотр списка 55

Удаление элемента из списка 55

39.Динамические структуры данных. Деревья, их применение. 56

40.Тип данных указатель. 60

1.Основные понятия: программирование, данные, программа, процесс, оператор, алгоритм. Краткая характеристика развития программирования.

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

! В программу могут поступать различные входные данные.

Программа – это полная инструкция, позволяющая компьютеру в каждой ситуации однозначно и правильно выполнять определённые действия.

Оператор – это простейшая, минимально законченная структурная единица программы. Все операторы должны отделяться ‘;’.

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

Весь процесс программирования в общем случае сводится к следующим этапам:

  1. Анализ задачи

  2. Постановка цели

  3. Создание программы

  4. Отладка

  5. Поддержка

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

Для первых ЭВМ, созданных по принципам фон Неймана, например, машины Мориса Уилкса (1949 г.) программы приходилось писать на машинном языке, то есть в кодах, непосредственно воспринимаемых компьютером. Это, конечно, было гораздо лучше и быстрее, чем работа артиллериста-счетчика, но все же еще оставалось очень тяжелым, малопроизводительным и кропотливым занятием, в ходе которого легко было ошибиться [1]. По сути, программы представляли собой кодированный набор цифр, в котором человеку несведущему разобраться было невозможно в принципе, да и профессионалам приходилось попотеть.

Решением стало изобретение т.н. ассемблеров, или автокодов. Ассемблеры – языки символического кодирования [2]. Для каждого типа ЭВМ существует свой язык символического кодирования, так как его структура, обозначения, операции и т.д. определяются структурой конкретной ЭВМ.

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

II этап (середина 50-х – середина 60-х)

На этом этапе были созданы и более совершенные языки программирования, т.н. языки высокого уровня (ЯВУ). Такой язык – это набор символов и терминов, который в соответствии с правилами синтаксиса описывает алгоритм решения задачи [2]. Своими конструкциями и правилами написания этот язык, с одной стороны, близок к математическому выражению задачи, а с другой стороны, содержит такие выражения, которые близки к естественному языку, чаще всего английскому. Программы, написанные на таких языках, либо преобразуются в машинные команды (это делается с помощью специальных программ, называемых трансляторами или компиляторами) или выполняются построчно (интерпретируются) при помощи программ-интерпретаторов [1].

Первый коммерчески используемый язык программирования высокого уровня FORTRAN (FORmula TRANslator – транслятор формул) был разработан в 1958 г. фирмой IBM под руководством Джона Бэкуса. Он предназначен, прежде всего, для научных вычислений и очень близок по форме к записи математических формул. У Фортрана есть один существенный недостаток: он не обеспечивает надежности программирования (защиты от ошибок) из-за своей громоздкости и несовершенства логических возможностей [2].

Другим ЯВУ стал Алгол-60 (ALGOrithmic Language – алгоритмический язык), который появился в 1960 г. Это более совершенный язык, чем Фортран; он обладает большей гибкостью при проектировании программ, обеспечивает более высокую надежность программирования [2]. В основном использовался в советских ЭВМ.

Именно после создания Алгола началось бурное развитие языков программирования.

Также заслуживающим внимания языком стал разработанный в конце 50-х годов LISP (LISt Processing – обработка списков). Он используется и по сей день для программирования в области искусственного интеллекта [6].

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

III этап (середина 60-х – середина 70-х)

Этот этап знаменателен также появлением нескольких новых ЯВУ. Первым стал Паскаль, созданный в 1970 г. Он был создан ведущим в то время специалистом в области программирования Н.Виртом. Это очень простой и компактный язык, его понятия близки к фундаментальным понятиям математики [2]. Благодаря этому он завоевал свою популярность, и даже по сей день используется для обучения специалистов программированию как наиболее полно отражающий базовые конструкции любой разновидности ЯВУ.

Другой новинкой стал упомянутый ранее Basic (Beginner’s All-purpose Symbolic Instruction Code – универсальный код символических инструкций для начинающих). Первоначально он был разработан Дж. Келени и Т. Курцем из Дартмутского колледжа (США) в 1965 г. и предназначался для вводного курса по информатике [2]. Однако благодаря своей простоте и возможности работы в диалоговом режиме этот язык быстро нашел призвание среди пользователей-непрограммистов.

Важную роль в дальнейшем сыграет изобретенный в 1972 г. Денисом Ричи и Кеном Томпсоном из Bell Laboratories язык Си. Он похож на Паскаль, но исправляет его некоторые ошибки и содержит новые элементы. Си разрабатывался как мощный и гибкий язык. К сожалению, он не так легко читается как Паскаль, и предназначен скорее для корпоративных приложений. Тем не менее, пользователям он понравился, и был сделан переход от Паскаля к Си. Это ознаменовало собой переход от языков предыдущего поколения к сегодняшним языкам программирования [4]. Также следует отметить, что Си использовался для разработки многих операционных систем в дальнейшем, так как сам разрабатывался для только что появившейся в то время системы UNIX [6].

На этом этапе появляются подвиды ЯВУ: Си и Паскаль относятся к структурным языкам программирования, тогда как ЛИСП – к функциональным. [6]

Структурное программирование – методология программирования, базирующаяся на системном подходе к анализу, проектированию и реализации программного обеспечения. Структурное программирование предполагает точно обозначенные управляющие структуры, программные блоки, отсутствие инструкций безусловного перехода (GOTO), автономные подпрограммы, поддержку рекурсии и локальных переменных [5].

Эта методология оказалась настолько жизнеспособной, что и до сих пор является основной в большом количестве проектов

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

IV этап (середина 70-х – настоящее время)

Для начала отметим такой язык, как ADA. Этот ЯВУ был разработан по заказу Министерства обороны США в 1979 г. и назван так в честь первой программистки Ады Лавлейс, дочери Дж. Байрона, которая еще в XIX веке создавала первые программы для машины Бэббиджа. В этом языке использовано много идей из Паскаля и Алгола-68, а также заимствованы лучшие конструкции других языков [2].

ADA является представителем модульных языков программирования.

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

Кроме этого подхода, в начале 80-х получил распространение еще один метод программирования – объектно-ориентированное программирование (ООП).

Идея ООП заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое – объект.

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

Инкапсуляция – объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются переменными или полями объекта, а алгоритмы – функциями или методами объекта.

Наследование – свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителей все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.

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

Бьярн Страуструп оценил этот подход и на его основе разработал язык, получивший название «Си с классами» [6]. Вскоре Си с классами превратился в отдельный язык С++ (Си плюс плюс), который был представлен общественности в 1983 г.

Классы – это такие программные абстракции, которые представляют собой как бы шаблон или тип объекта. Поэтому говорят, что объект является экземпляром того или иного класса. Это позволяет программировать любые объекты реального мира, вкупе со всеми их атрибутами (свойствами) и поведением (функциями, или методами)

другим не менее ярким новшеством стал язык Java.Решено было использовать Java как веб-язык.

Однако и у него оказались недостатки: проблемы с оптимизацией кода и, следовательно, с быстродействием, упрощение в сравнении с С++, что оттолкнуло от него некоторых серьезных программистов как от «детского языка». Несмотря на это, у Java есть и несомненные плюсы: использование ООП, поддержка интерфейсов, переносимость, автоматическая сборка «мусора», бОльшая простота изучения в сравнении с С++

Немного другое направление развила фирма Microsoft. Она расширила идеи языка BASIC, выпустив Visual Basic (VB). VB, как и его прародитель – своего рода язык для непрограммистов, хотя при желании на нем можно составлять и комплексные программы. Основная цель VB – без лишних усилий позволить пользователям создавать программы с мощными экранными интерфейсами [6]. Интерфейсы строятся здесь из специальных компонентов, называемых widget. Это могут быть различные меню, картинки, ползунки, иконки и пр. У виджетов есть набор свойств (например, цвет) и событий (например, нажатие на него левой кнопкой мыши), что является основой любого интерфейса пользователя в современной системе