Слайд 1 Слайд 2 Слайд 3 Слайд 4 Слайд 5 Слайд 6 Слайд 7 Слайд 8 Слайд 9 Слайд 10 Слайд 11 Слайд 12 Слайд 13 Слайд 14 Слайд 15 Слайд 16 Слайд 17 Слайд 18 Слайд 19 Слайд 20 Слайд 21 Слайд 22 Слайд 23 Слайд 24 Слайд 25 Слайд 26 Слайд 27 Слайд 28 Слайд 29 Слайд 30 Слайд 31 Слайд 32 Слайд 33 Слайд 34 Слайд 35 Слайд 36 Слайд 37 Слайд 38 Слайд 39 Слайд 40 Слайд 41 Слайд 42 Слайд 43 Слайд 44 Слайд 45 Слайд 46 Слайд 47
1: Основы программирования МГТУ им. Н. Э. Баумана Факультет Информатика и системы управления Кафедра Компьютерные системы и сети Лектор: д. т. н. , проф. Иванова Галина Сергеевна
2: Дисциплина Основы программирования Содержание дисциплины: Модуль 1. Основы алгоритмизации и программирование с использованием скалярных типов данных. Модуль 2. Структурные типы данных и модульное программирование. Модуль 3. Организация данных на внешних носителях и в оперативной памяти. Язык программирования: Паскаль (Delphi Pascal) Среда программирования: Turbo Delphi 2006 (Free version) Объем дисциплины – 7 зачетных единиц – 256 часов: лекции – 51 час - знакомство с теоретическим материалом; семинары – 34 часа - разработка алгоритмов решения задач; лабораторные работы – 34 часа – 842(зачет) часов - изучение приемов программирования; самостоятельная работа – 166 часов - закрепление материала.
3: Расписание лабораторных работ: ИУ6-11 – числ. пятница 1015-1335 ИУ6-12 – знам. пятница 1015-1335 ИУ6-13 – числ. понедельник 830-1150 ИУ6-14 – знам. понедельник 830-1150 ИУ6-15 – числ. понедельник 1200-15 25 Место проведения: кафедра КС и С, ауд. 805 (ГК, 8 этаж) С собой иметь: тетрадь, ручку, карандаш, линейку, флешку, материалы лекций или учебник. Посещение всех занятий обязательно! Отчетность по дисциплине: 3 рубежных контроля (РК): - РК 1. Итерационные циклы - 2 часа – 5-6 недели. - РК 2. Матрицы и подпрограммы - 2 часа – 10-11 недели. - РК 3. Файлы и дин. память - 2 часа – 15-16 недели. экзамен.
4: Учебные материалы
5: Консультации проф. Г. С. Ивановой Консультации проводятся: а) лично - на кафедре ИУ6 (главное здание, 8 этаж, ауд. 807): вторник числ. с 13-30 до 14-30; пятница с 12-00 до 13-00 б) по электронной почте: gsivanovagmail. com
6: Анкета Фамилия, имя, отчество, адрес эл. почты Оцените свой уровень владения компьютером: Знаком с клавиатурой, играл в игры… Могу скопировать файлы на флешку и обратно… Хорошо ориентируюсь в файловой системе, могу установить пути для программ… Укажите, с какими операционными системами работали? Изучали ли вы программирование в школе? Сколько лет? Какие языки программирования изучали? В каких средах? Оцените уровень ваших знаний: Имею представление о программировании… Могу посчитать площадь треугольника… Могу решать задачи на обработку матриц… Могу использовать динамические структуры данных… Могу использовать объектно-ориентированное программирование… Есть ли дома доступ к компьютеру? Есть ли дома доступ к Интернету?
7: Часть 1. Основы алгоритмизации и процедурное программирование МГТУ им. Н. Э. Баумана Факультет Информатика и системы управления Кафедра Компьютерные системы и сети Лектор: д. т. н. , проф. Иванова Галина Сергеевна
8: Введение Паскаль – универсальный язык программирования высокого уровня. Поддерживает структурный и объектный подходы. Первоначально предназначен для обучения студентов, затем, в совокупности со средой программирования Turbo Pascal, стал профессиональным. Автор языка: Николаус Вирт, Цюрих, Швейцария. Год создания языка: 1971 г. В основе языка хорошо продуманные, логически стройные концепции. Язык имеет простой, но хорошо защищенный синтаксис и сравнительно ясную семантику, что упрощает обучение азам программирования. Синтаксис – правила, определяющие допустимые конструкции языка. «Защищенный» синтаксис предполагает, что предложения языка строятся по правилам, которые позволяют автоматически выявлять большой процент ошибок в программах. Семантика – правила, определяющие смысл синтаксически корректных предложений. Ясная или «интуитивно-понятная» семантика – семантика, позволяющая без большого труда определять смысл программы или «читать» ее. Delphi Pascal – одна из реализаций языка программирования Паскаль, используемая в среде быстрой разработки программ Delphi.
9: Среды программирования Среда программирования – собранная в единую программную систему совокупность программных средств, предназначенный для разработки программных продуктов. Обычно включает: редактор текстов, компилятор языка программирования, компоновщик, отладчик, библиотеки подпрограмм и/или классов и т. п. Среда программирования Turbo Delphi – бесплатная для обучающихся (free) версия среды Delphi, которая является частью пакета разработки Windows-приложений Borland Developer Studio 2006. Лицензия дана сроком на 10 лет. Среда программирования Lazarus – бесплатная профессиональная многоплатформная среда разработки программ, по основным функциональным возможностям совместимая с Turbo Delphi. Имеет схожий интерфейс, но последний включает много отдельных окон, в которых начинающим программистам тяжело разобраться.
10: Этапы создания ПО 1. Постановка задачи – неформальное описание задачи. 2. Анализ и уточнение требований – формальная постановка задачи и выбор метода решения. 3. Проектирование – разработка структуры программного продукта, выбор структур данных, выбор метода решения, разработка алгоритмов обработки данных, определение особенностей взаимодействия с программной средой и т. п. 4. Реализация – составление программ, их тестирование и отладка. 5. Модификация – выпуск новых версий.
11: Пример разработки программы 1. Постановка задачи: Разработать программу, которая определяет наибольший общий делитель (НОД) двух целых чисел. 2. Анализ и уточнение требований: 1) Функциональные требования исходные данные: a, b – натуральные числа; 0 a, b ? ; результат: x – натуральное число, такое, что x max yi / i 1,n, где ((a mod yi ) 0) & (b mod yi ) 0) Методы решения: a) найти делители Y yi и определить x max Y; б) метод Евклида Пример 1: a b 24 18 6 18 6 12 6 6
12: Пример разработки программы (2) 2) Эксплуатационные требования: а) операционная система – Windows XP и выше (консольный режим); б) процессор – не ниже Pentium; в) предусмотреть запрос на ввод данных с клавиатуры; г) результаты вывести на экран. 3) Технологические требования: а) язык программирования: Pascal; б) среда программирования: Turbo Delphi 2006 (free); в) технология программирования: структурный подход.
13: Пример разработки программы(3) 3. Проектирование Виды проектной документации: 1. Структурная схема ПО – показывает взаимодействие по управлению основной программы и подпрограмм.
14: Схемы алгоритмов Обозначения по ГОСТ 19. 701 – 90 1. Терминатор (начало/конец) 2. Процесс (вычисление) 3. Анализ (проверка) 4. Модификатор (автоматическое изменение) 5. Предопределенный процесс (подпрограмма)
15: Правила выполнения схем алгоритмов Схемы алгоритмов должны быть выполнены аккуратно, желательно с применением карандаша и линейки или графических редакторов на компьютере. Стрелки на линиях, идущих сверху вниз и слева направо, т. е. в направлении письма, не ставят, чтобы не затенять схему. Если линия – ломанная, и направление ее хотя бы в одном сегменте не совпадает со стандартными, то стрелка ставится только в конце линии, перед блоком, в который она входит. Если схема не умещается на странице или линии многократно пересекаются, то линии разрывают. Один соединитель ставится в месте разрыва, второй – в месте продолжения линии. Оба соединителя помечаются одной и той же буквой или цифрой. Для простоты чтения схемы ее начало должно быть сверху, а конец – снизу. При этом количество изгибов, пересечений и обратных направлений соединительных линий должно быть минимальным.
16: Пример неудачного изображение схемы
17: 1-й вариант более читаемого изображения схемы алгоритма
18: 2-й вариант: выделение подпрограмм
19: Основные структурные конструкции алгоритма
20: Схема и псевдокод алгоритма программы поиска НОД Алгоритм Евклида: Ввести A,B Цикл-пока A B Если A B то A : A – B иначе B : B – A Все-если Все-цикл Вывести A Конец
21: Структура консольной программы Программа – последовательность инструкций, адресованных компьютеру, которая точно определяет, как следует решать задачу. Program Ex101;//Определение наибольшего общего делителя $APPTYPE CONSOLE Uses SysUtils; Var a,b:integer; begin Write(Input two numbers:); Readln (a,b); while ab do if ab then a:a-b else b:b-a; Writeln(Result:, a); Readln; end.
22: Схема процесса подготовки программы
23: Схемы процессов отладки и выполнения программы
24: Глава 1 Простейшие конструкции языка Delphi Pascal
25: 1. 1 Синтаксис и семантика языка программирования Алфавит языка програмирования Паскаль включает: 1) латинские буквы без различия строчных и прописных; 2) арабские цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; 3) шестнадцатеричные цифры: 0. . 9, а. . f или A. . F; 4) специальные символы: - / : ; и т. д. ; 5) служебные слова: do, while, begin, end и т. д. Синтаксис – правила, определяющие допустимые конструкции языка, построенные из символов его алфавита. Пример: конструкция «Идентификатор»:
26: 1. 2 Константы и переменные. Типы переменных Константы – данные, не изменяемые в процессе выполнения программы. Литералы – константы, указанные непосредственно в тексте программы. Примеры литералов: а) -25, 2. 5, 0. 1e6 0,1106 – числовые литералы; б) a – шестнадцатеричное число; в) true, false – логические константы; г) d, 65 A – символьные константы; д) abcd – строковая константа; е) nil – адресная константа.
27: Поименованные константы Поименованные константы – константы, обращение к которым выполняется по имени. Объявляются в разделе описаний: Пример: Const min 0; max 100; center (max - min) div 2;
28: Переменные Переменные – поименованные данные, которые могут изменяться в процессе выполнения программы. Объявляются также в разделе описаний: Пример: Var a,b:integer; c:real; При установленной опции Extended syntax $X (расширенный синтаксис) переменным при объявлении можно задавать начальные значения. Пример: Var a:integer56; b:integer85;
29: Типы данных Тип – описатель данных, который определяет: а) диапазон изменения значения переменной, задавая размер ее внутреннего представления; б) множество операций, которые могут выполняться над этой переменной. Для объявления новых типов данных используется конструкция: Пример: Type date 1. . 31; // объявление нового типа данных Var d1:date; // объявление переменной этого типа
30: Классификация типов данных языка
31: Основные стандартные типы данных Delphi Pascal 1. Целые типы: Integer, LongInt (4 байта со знаком): -2147483648. . 2147483647; SmallInt (2 байта со знаком): -32768. . 32767 ShortInt (1 байт со знаком): -128. . 127; Word (2 байта без знака): 0. . 65535; Byte (1 байт без знака): 0. . 255. Пример: Var a,b:word;с:shortint; 2. Символьные типы: Char, AnsiChar (1 байт без знака) – код символа по таблице ANSI; WideChar (2 байта без знака) – код символа по таблице Unicode 3. Булевский тип: Boolean (1 байт без знака: 0 – false, 1 - true)
32: Порядковые типы 4. Перечисление – значения переменных этого типа описываются явно (перечисляются). Пример: Туpe Day (Mon, Tue, Wed, Thu, Fri, Sat, Sun); Var D:Day; или Var D:(Mon, Tue, Wed, Thu, Fri, Sat, Sun); D:Fri; // присваивание переменной D значения Fri 5. Отрезок – значения переменных этого типа входят в определенный диапазон значений стандартного типа. Пример: Туpe Date 1. . 31; // значения – числа от 1 до 31 Var DataN: Date; или Var DataN: 1. . 31;
33: Функции порядковых типов данных 1. Ord () – возвращает номер значения по порядку (не применима к 64 битным аргументам). Пример: Ord(A) 65 // номер символа в таблице ANSI 2. Pred () – возвращает предыдущее значение. Dec() – возвращает значение, уменьшенное на 1. Пример: N:5; k: Pred(N)k4; m: Dec(N)m4; 3. Succ () – возвращает следующее значение. Inc() – возвращает целое, увеличенное на 1. Пример: N:5; k: Succ(N)k6; l: Inc(N)l6; 4. High() – возвращает самое большое значение типа, также работает со строками и массивами (см. далее). 5. Low() – возвращает самое маленькое значение типа, также работает со строками и массивами (см. далее).
34: Вещественные типы Вещественные числа представляются в компьютере с ограниченной точностью, определяемой разрядной сеткой. Формат внутреннего представления: -0. 51023 Стандартные вещественные типы: Тип Значащих Диапазон цифр порядка Real (8 байт) (в старших версиях) 15-16 -324. . 308 Single (4 байта) 7-8 -45. . 38 Double (8 байт) 15-16 -324. . 308 Extended (10 байт) 19-20 -4951. . 4932 Comp (8 байт) 19-20 -2631. . 263-1
35: 1. 3 Выражения Арифметические операции – применяют к вещественным и целым константам и переменным: , -, , / вещественное деление, div целочисленное деление, mod остаток от деления Пример: var a: integer 5; b: integer 3; … ab a div b a mod b a / b (ab)/(a-ba)
36: Выражения (2) 2. Операции отношения (больше, меньше, равно и т. д. ) – применяют к числам, символам, строкам – в результате получают логическое значение: меньше, больше, равно, не равно, больше или равно Пример: var a: integer 5; b:integer 3; … a b a b
37: Выражения (3) 3. Логические операции – применяют к логическим значениям – результат логическое значение.
38: Выражения (4) 4. Поразрядные операции – выполняются поразрядно, применяют к целым, результат – целое число: not, and, or, xor, shr сдвиг вправо, shl сдвиг влево Пример: var a:SmallInt 5; … not a a shl 2
39: Математические функции В выражениях можно использовать следующие математические функции: Pi // число abs() // абс. значение sqr() // x2 sqrt() // x exp() // ex ln() // ln x sin() cos() arctan() // arctg x frac() // дробная часть числа int() // целая часть числа randomize // подготовка датчика случайных чисел random () // генерация вещественного случайного числа 0 x 1; random () // генерация целого случайного числа 0 i Целое;
40: Правила вычисления выражений 1. Порядок выполнения операций определяется приоритетами и скобками Операции Приоритет , not 1 , /, div, mod, and, shr, shl 2 , -, or, xor 3 , , , 4 Пример: 1) x(x2) y(y-1) 2) (a b) and (b1)
41: Правила вычисления выражений (2) 2. При выполнении арифметических операций над числами различных типов автоматически осуществляется неявное преобразование: целого и вещественного типов – к вещественному, с разными интервалами представлений – к типу с большим интервалом. Пример: var a:single; k:integer; … a/k // число k преобразуются к типу single 3. При сравнении вещественных чисел из-за их неточного представления проверку равенства и неравенства следует осуществлять с явным указанием допуска. Пример: Var x,y:single; x y abs(x-y) 1e-10 x y abs(x-y) 1e-10
42: 1. 4 Оператор присваивания Используется для изменения значений переменных. Пример: Var v:integer; a,b:single; … a: vb / 2. 0; Корректное выполнение оператора предполагает, что результат вычисления и переменная правой части одного типа или совместимы по типу. По правилам совместимы: а) все целые типы между собой; б) все вещественные типы между собой; в) отрезок базового типа и базовый тип; г) два отрезка одного и того же базового типа; д) символ и строка.
43: Неявное преобразования типов Если типы результата и переменной не совпадают, но совместимы, то при выполнении присваивания выполняется неявное автоматическое преобразование. Пример: Var L:LongInt; E,x:extended; I:integer; R:Single; Begin … R: I E / (xL);
44: Явное преобразования типов Для несовместимых типов результата и переменной, в которую его необходимо занести, при выполнении присваивания необходимо явное преобразование типов, например, посредством специальных функций: trunc() – преобразует вещественное число в целое, отбрасывая дробную часть. round( Вещественное выражение) – округляет вещественное число до целого по правилам арифметики. Пример: trunc(4. 5) 4, round(4. 5) 5 ord() – преобразует значение в его номер. Пример: ord(A) 65. chr() – преобразует номер символа в символ. Пример: chr(65) A.
45: 1. 5 Процедуры ввода-вывода Ввод – операция по передаче данных от источника в память компьютера. Вводимые числа разделяют пробелами или записывают на разных строках. По типу они должны соответствовать типам переменных. ReadLn в отличие от Read после выполнения операции чтения переводит курсор ввода на следующую строку. Read(a,b); а) 30 40 б) 30 40
46: Процедуры ввода-вывода (2) Вывод – операция по передаче данных из компьютера на внешнее устройство. Целое1 – ширина поля вывода (число прижимается к правой границе); Целое2 – количество выводимых цифр дробной части числа. WriteLn – после вывода переводит курсор на следующую строку. Пример: Var a:integer3; b:real5. 2;… writeln(a:3,b:6:2); Результат: 3 5 . 2
47: Программа определения корней кв. уравнения program Ex12; $APPTYPE CONSOLE Uses SysUtils; Var A,B,C,D,E,X1,X2:Single; Begin WriteLn(Input A,B,C); ReadLn (A,B,C); WriteLn(A,A:3:1, B,B:3:1, C,C:3:1); D:sqrt(sqr(B)-4AC); E:2A; X1:(-BD)/E; X2:(-B-D)/E; WriteLn(X1,X1:10:6, X2,X2:10:6); ReadLn; End.