Скачать презентацию 1 Раздел 4 Основы программирования на язык PASCAL Скачать презентацию 1 Раздел 4 Основы программирования на язык PASCAL

Раздел 4 Тема 4.1. Этапы решения задач на ЭВМ.ppt

  • Количество слайдов: 30

1 Раздел 4 Основы программирования на язык PASCAL Тема 4. 1. Этапы решения задач 1 Раздел 4 Основы программирования на язык PASCAL Тема 4. 1. Этапы решения задач на ПЭВМ Решение задач с помощью компьютера включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера.

ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА ЭВМ 1. Постановка задачи. 2. Математическая модель. 3. Конструирование алгоритма. ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА ЭВМ 1. Постановка задачи. 2. Математическая модель. 3. Конструирование алгоритма. 4. Перевод алгоритма в программу. 5. Ввод и испытание программы. 6. Получение и анализ результатов решения задачи.

Постановка задачи: • сбоp инфоpмации о задаче; • фоpмулиpовка условия задачи; • опpеделение конечных Постановка задачи: • сбоp инфоpмации о задаче; • фоpмулиpовка условия задачи; • опpеделение конечных целей pешения задачи; • определение формы выдачи результатов; • описание данных (их типов, диапазонов величин, структуры и т. п. ). Анализ и исследование задачи, модели: • анализ существующих аналогов; • анализ технических и программных средств; • pазpаботка математической модели; • разработка структур данных. Разработка алгоритма: • выбор метода проектирования алгоритма; • выбор формы записи алгоритма (блок-схемы, псевдокод и др. ); • выбоp тестов и метода тестиpования; • проектирование алгоритма.

Пpогpаммиpование: • выбор языка программирования; • уточнение способов организации данных; • запись алгоpитма на Пpогpаммиpование: • выбор языка программирования; • уточнение способов организации данных; • запись алгоpитма на выбpанном языке пpогpаммиpования. 5. Тестиpование и отладка: • синтаксическая отладка; • отладка семантики и логической стpуктуpы; • тестовые pасчеты и анализ pезультатов тестиpования; • совершенствование пpогpаммы. 6. Анализ результатов решения задачи и уточнение в случае необходимости математической модели с повторным выполнением этапов 2 — 5. 7. Сопровождение программы: • доработка программы для решения конкретных задач; • составление документации к pешенной задаче, к математической модели, к алгоpитму, к пpогpамме, к набору тестов, к использованию.

Математическая модель — это система математических соотношений — формул, уравнений, неравенств и т. д. Математическая модель — это система математических соотношений — формул, уравнений, неравенств и т. д. , отражающих существенные свойства объекта или явления. Какие основные этапы содержит процесс разработки программ? Процесс разработки программы можно выразить следующей формулой: На начальном этапе работы анализируются и формулируются требования к программе, разрабатывается точное описание того, что должна делать программа и каких результатов необходимо достичь с ее помощью. Затем программа разрабатывается с использованием той или иной технологии программирования (например, структурного программирования). Для каждой программы обязательно проводятся работы по обеспечению качества и эффективности программного обеспечения, анализируются и улучшаются временные характеристики.

Для чего нужны отладка и тестирование? Отладка программы — это процесс поиска и устранения Для чего нужны отладка и тестирование? Отладка программы — это процесс поиска и устранения ошибок в программе, производимый по результатам её прогона на компьютере. Тестирование (англ. test — испытание) — это испытание, проверка правильности работы программы в целом, либо её составных частей. Отладка и тестирование — это два четко различимых и непохожих друг на друга этапа: • при отладке происходит локализация и устранение синтаксических ошибок и явных ошибок кодирования; • в процессе же тестирования проверяется работоспособность программы, не содержащей явных ошибок. Тестирование устанавливает факт наличия ошибок, а отладка выясняет ее причину. Английский термин debugging ("отладка") буквально означает "вылавливание жучков". Термин появился в 1945 г. , когда один из первых компьютеров — "Марк-1" прекратил работу из-за того, что в его электрические цепи попал мотылек и заблокировал своими останками одно из тысяч реле машины.

В чем заключается отладка? В современных программных системах (Turbo Basic, Turbo Pascal, Turbo C В чем заключается отладка? В современных программных системах (Turbo Basic, Turbo Pascal, Turbo C и др. ) отладка осуществляется часто с использованием специальных программных средств, называемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы. Программа-отладчик обычно обеспечивает следующие возможности: • пошаговое исполнение программы с остановкой после каждой команды (оператора); • просмотр текущего значения любой переменной или нахождение значения любого выражения, в том числе, с использованием стандартных функций; при необходимости можно установить новое значение переменной; • установку в программе "контрольных точек", т. е. точек, в которых программа временно прекращает свое выполнение, так что можно оценить промежуточные результаты, и др. При отладке программ важно помнить следующее: • в начале процесса отладки надо использовать простые тестовые данные; • возникающие затруднения следует четко разделять и устранять строго поочередно; • не нужно считать причиной ошибок машину, так как современные машины и трансляторы обладают чрезвычайно высокой надежностью.

8 Программирование на языке Паскаль 8 Программирование на языке Паскаль

Алгоритм (ПОВТОРЕНИЕ) Алгоритм – это четко определенный план действий для исполнителя. Свойства алгоритма • Алгоритм (ПОВТОРЕНИЕ) Алгоритм – это четко определенный план действий для исполнителя. Свойства алгоритма • дискретность: состоит из отдельных шагов (команд) • понятность: должен включать только команды, известные исполнителю (входящие в СКИ) • определенность: при одинаковых исходных данных всегда выдает один и тот же результат • конечность: заканчивается за конечное число шагов • массовость: может применяться многократно при различных исходных данных • корректность: дает верное решение при любых допустимых исходных данных 9

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

Языки программирования • Машинно-ориентированные (низкого уровня) каждая команда соответствует одной команде процессора (ассемблер) • Языки программирования • Машинно-ориентированные (низкого уровня) каждая команда соответствует одной команде процессора (ассемблер) • Языки высокого уровня – приближены к естественному (английскому) языку, легче воспринимаются человеком, не зависят от конкретного компьютера • для обучения: Бейсик, ЛОГО, Паскаль • профессиональные: Си, Фортран, Паскаль • для задач искусственного интеллекта: Пролог, ЛИСП • для Интернета: Java. Script, Java, Perl, PHP, ASP 11

12 Язык Паскаль 1970 – Никлаус Вирт (Швейцария) • язык для обучения студентов • 12 Язык Паскаль 1970 – Никлаус Вирт (Швейцария) • язык для обучения студентов • разработка программ «сверху вниз» Задача Подзадача 1 1. 2 1. 3 Подзадача 2 2. 1 2. 2 Подзадача 3 2. 3 3. 1 3. 2 3. 3 • разнообразные структуры данных (массивы, структуры, множества)

Из чего состоит программа? program <имя программы>; const …; {константы} var …; {переменные} { Из чего состоит программа? program <имя программы>; const …; {константы} var …; {переменные} { процедуры и функции } begin … {основная программа} end. комментарии в фигурных скобках не обрабатываются 13

Из чего состоит программа? Константа – постоянная величина, имеющая имя. Переменная – изменяющаяся величина, Из чего состоит программа? Константа – постоянная величина, имеющая имя. Переменная – изменяющаяся величина, имеющая имя (ячейка памяти). Процедура – вспомогательный алгоритм, описывающий некоторые действия (рисование окружности). Функция – вспомогательный алгоритм для выполнения вычислений (вычисление квадратного корня, sin). 14

Имена программы, констант, переменных Имена могут включать • латинские буквы (A-Z) заглавные и строчные Имена программы, констант, переменных Имена могут включать • латинские буквы (A-Z) заглавные и строчные буквы не различаются • цифры имя не может начинаться с цифры • знак подчеркивания _ Имена НЕ могут включать • русские буквы • пробелы • скобки, знаки +, =, !, ? и др. Какие имена правильные? ? AXby R&B 4 Wheel Вася “Pes. Barbos” TU 154 [Qu. Qu] _ABBA A+B 15

Переменные Переменная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять Переменные Переменная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы. Типы переменных: • integer { целая } • real { вещественная } • char { один символ } • string { символьная строка } • boolean { логическая } Объявление переменных (выделение памяти): var a, b: integer; Q: real; s 1, s 2: string; 16

Еще одна интересная операция - остаток от деления a на b. Понятно, что остатком Еще одна интересная операция - остаток от деления a на b. Понятно, что остатком от деления 17 на 5 будет число 2: 17 mod 5 = 2, а вот чему будет равен остаток от деления меньшего числа на большее, например, 46 mod 200? Оказывается, в этом случае, результатом операции будет число 46. Вот другие примеры: 34 mod 125 = 34, 120 mod 6 = 0.

Комментарии В программе очень удобно помещать комментарии, чтобы при последующем прочтении она была понятна Комментарии В программе очень удобно помещать комментарии, чтобы при последующем прочтении она была понятна другим пользователям и программистам. Комментарии - это тексты, объясняющие программу, но не влияющие на ее исполнение. Это различные объяснения, заголовки отдельных частей программы и т. д. Компьютер печатает комментарии вместе с текстом программы, но, выполняя программу, игнорирует их. Программа выполняется так, словно комментариев нет. Программа Program Problem; uses Win. Crt; var a, c, s, d, e, b, r : integer; begin write('Введите трехзначное число '); readln(a); c : = a; {Запоминается первоначальное число} e : = a mod 10; (* Цифра единиц *) a : = a div 10; d : = a mod 10; (* Цифра десятков *) s : = a div 10; (* Цифра сотен *) b : = e*100 + d*10 + s; (* Число, записан. в обратном пор. *) r : = c - b; (* Разность чисел *) writeln('Искомая разность равна ', r) end.

Рекомендации Очень важно, чтобы текст программы был расположен наглядно не только ради красоты, но Рекомендации Очень важно, чтобы текст программы был расположен наглядно не только ради красоты, но (и это главное!) ради избежания ошибок. (Найти ошибки в наглядном тексте значительно легче. ) 1. Каждый оператор следует писать с новой строки, за исключением коротких и по смыслу связанных операторов. Например, write. . . readln. . . - записываются в одной строке, короткие операторы присваивания можно записать в одну строку: Операторы, включенные в другой оператор, следует сдвинуть вправо на несколько позиций (желательно одинаково). begin write. . . readln. . . if. . . then begin. . . end else begin. . . end; end.

Сложение двух чисел Задача. Ввести два целых числа и вывести на экран их сумму. Сложение двух чисел Задача. Ввести два целых числа и вывести на экран их сумму. Простейшее решение: program qq; var a, b, c: integer; begin read ( a, b ); c : = a + b; writeln ( c ); end. 20

21 Задача: ввести строку с клавиатуры и заменить все буквы «а» на буквы «б» 21 Задача: ввести строку с клавиатуры и заменить все буквы «а» на буквы «б» . program qq; var s: string; ввод строки i: integer; begin длина строки writeln('Введите строку'); readln(s); for i: =1 to Length(s) do if s[i] = 'а' then s[i] : = 'б'; writeln(s); вывод строки end.

22 Удаление и вставка Удаление части строки: s : = '123456789'; Delete ( s, 22 Удаление и вставка Удаление части строки: s : = '123456789'; Delete ( s, 3, 6 ); строка меняется! 6 штук '129' с 3 -его символа Вставка в строку: начиная с 3 -его символа s : = '123456789'; Insert ( 'ABC', s, 3 ); что вставляем '123456789' '12 ABC 3456789' куда вставляем Insert ( 'Q', s, 5 ); '12 ABQC 3456789'

23 Поиск в строке: s[3] var n: integer; s : = 'Здесь был Вася. 23 Поиск в строке: s[3] var n: integer; s : = 'Здесь был Вася. '; n : = Pos ( 'е', s ); 3 if n > 0 then writeln('Буква е – это s[', n, ']') else writeln('Не нашли'); n = 11 n : = Pos ( 'Вася', s ); s 1 : = Copy ( s, n, 4 ); Особенности: • функция возвращает номер символа, с которого начинается образец в строке • если слова нет, возвращается 0 • поиск с начала (находится первое слово)

Преобразования «строка» - «число» Из строки в число: s : = '123'; Val ( Преобразования «строка» - «число» Из строки в число: s : = '123'; Val ( s, N, r ); { N = 123 } { r = 0, если ошибки не было r – номер ошибочного символа} s : = '123. 456'; Val ( s, X, r ); { X = 123. 456 } 24 var N: integer; X: real; s: string; Из числа в строку: N : = 123; Str ( N, s ); { '123' } X : = 123. 456; Str ( X, s ); { '1. 234560 E+002' } Str ( X: 10: 3, s ); { ' 123. 456' }

25 Файлы Файл – это область на диске, имеющая имя. Файлы Текстовые Двоичные только 25 Файлы Файл – это область на диске, имеющая имя. Файлы Текстовые Двоичные только текст без оформления, могут содержать любые не содержат управляющих символы кодовой таблицы символов (с кодами < 32) *. doc, *. exe, ACSII (1 байт на символ) UNICODE (2 байта на символ) *. bmp, *. jpg, *. txt, *. log, *. html *. wav, *. mp 3, *. avi, *. mpg Папки (каталоги)

Пример решения задачи 26 Задача: Ввести имя, отчество и фамилию. Преобразовать их к формату Пример решения задачи 26 Задача: Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы» . Пример: Введите имя, фамилию и отчество: Василий Алибабаевич Хрюндиков Результат: Хрюндиков В. А. Алгоритм: • найти первый пробел и выделить имя • удалить имя с пробелом из основной строки • найти первый пробел и выделить отчество • удалить отчество с пробелом из основной строки • «сцепить» фамилию, первые буквы имени и фамилии, точки, пробелы…

Программа program qq; var s, name, otch: string; n: integer; begin writeln('Введите имя, отчество Программа program qq; var s, name, otch: string; n: integer; begin writeln('Введите имя, отчество и фамилию'); readln(s); n : = Pos(' ', s); name : = Copy(s, 1, n-1); { вырезать имя } Delete(s, 1, n); n : = Pos(' ', s); otch : = Copy(s, 1, n-1); { вырезать отчество } Delete(s, 1, n); { осталась фамилия } s : = s + ' ' + name[1] + '. ' + otch[1] + '. '; writeln(s); end. 27

Программа program qq; var c: char; i, N, count, Year, Gol: integer; begin writeln('Количество Программа program qq; var c: char; i, N, count, Year, Gol: integer; begin writeln('Количество футболистов'); readln(N); count : = 0; for i: =1 to N do begin repeat read(c); until c = ' '; read(Year); readln(Gol); if (1988 <= Year) and (year <= 1990) and (Gol = 0) then count : = count + 1; end; writeln(count); end. 28

29 Пример Задача: в файле input. txt записаны числа (в столбик), сколько их – 29 Пример Задача: в файле input. txt записаны числа (в столбик), сколько их – неизвестно. Записать в файл output. txt их сумму. ? Можно ли обойтись без массива? Алгоритм: 1. Открыть файл input. txt для чтения. 2. S : = 0; 3. Если чисел не осталось, перейти к шагу 7. 4. Прочитать очередное число в переменную x. 5. S : = S + x; цикл с условием «пока есть данные» 6. Перейти к шагу 3. 7. Закрыть файл input. txt. 8. Открыть файл output. txt для записи. 9. Записать в файл значение S. 10. Закрыть файл output. txt.

30 Программа program qq; var s, x: integer; f: text; begin assign(f, 'input. txt'); 30 Программа program qq; var s, x: integer; f: text; begin assign(f, 'input. txt'); reset(f); s : = 0; while not eof(f) do begin readln(f, x); s : = s + x; end; close(f); логическая функция, возвращает True, если достигнут конец файла assign(f, 'output. txt'); rewrite(f); writeln(f, 'Сумма чисел ', s); close(f); end. запись результата в файл output. txt