
Структуры данных Лекция 1.pptx
- Количество слайдов: 36
Лекция 1. Алгоритм, псевдокод и блок-схема Пестунов Андрей Игоревич
Язык Си уже существует на протяжении порядка 40 лет, и за это время он уже успел стать классическим. Тем не менее его актуальность не утрачена и по сей день. Язык Си популярен как среди профессионалов, разрабатывающих коммерческое программное обеспечение, так и среди программистов-любителей, для которых программирование – это любимое хобби.
Язык программирования Си был создан в 1972 году и изначально предназначался для разработки программ под операционной системой UNIX. Постепенно этот язык распространился на другие операционные системы, приобретя широкую известность благодаря своей направленности на решение практически важных задач, в то время как, например, Pascal или Basic служили в основном учебным целям.
Синтаксические конструкции многих других современных языков программирования, появившихся позднее Си, очень сильно напоминают синтаксис языка Си. Здесь речь идет о таких языках, как Java, C#, PHP и др. C++ получен из Си с добавлением к нему средств объектно-ориентированного программирования. Таким образом, изучение языка Си может оказаться одной из первых ступенек на пути к постижению искусства программирования. Освоив его, можно смело приступать к освоению перечисленных языков, уже имея в запасе многие необходимые знания.
Язык Си – это язык среднего уровня, сочетающий в себе как некоторые элементы высокоуровневых языков, так и низкоуровневые операции. В частности, он позволяет легко оперировать с байтами и битами, а также работать с памятью напрямую, используя указатели. Кроме того, язык Си легко переносится, другими словами, написанный под одну операционную систему код может быть откомпилирован в другой. Рассмотренные достоинства делают язык Си подходящим средством для разработки ряда приложений и, в особенности, оптимизирующих компиляторов.
Для написания программ нам потребуется так называемая интегрированная среда разработки, которая на программистском жаргоне именуется идэешка, что происходит от английской аббревиатуры IDE – Integrated Development Environment. IDE включает в себя все необходимые инструменты: редактор программного кода, отладчик, различные полезные кнопки и многое другое.
КОД -> ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ -> EXE-файл
Алгоритмическая ошибка заключается в том, что программа компилируется и работает, но делает не то, что должна. Указать на синтаксическую ошибку может компилятор, однако найти место алгоритмической программист должен сам. Отладчик (Debugger) – инструмент, помогающий находить алгоритмические ошибки.
Баг или бага (от слова bug – дефект, ошибка, блоха) – алгоритмическая ошибка. Фиксать или фиксить баги – исправлять ошибки (to fix a bug). Отладка – процесс исправления ошибок.
Одно из главных предназначений компьютера – это освободить людей от трудоемкой и рутинной работы, которая раз за разом выполняется одинаково с различиями только во входных данных. Передача такой работы от человека компьютеру называется автоматизацией. Рассмотрим несколько примеров автоматизации рабочих процессов.
Оплата услуг через банкомат. Несколько заплатить за квартиру или за телефон можно было только через оператора, который выполнял одни и те же действия, обслуживая любого человека: принимал деньги; заносил их в базу; выдавал чек; В настоящее время часто роль оператора выполняет банкомат, куда, как и в компьютер, встроен процессор. Процессор обрабатывает входные данные: вид платежа, сумму и другие параметры, а затем заносит изменения в базу и печатает чек.
Редактирование текста и мультимедийных данных. Представьте себе, как раньше писатели работали над своими произведениями. Они все писать от руки. Если происходила ошибка, то нужно было зачеркивать ее или переписывать заново. Работа над фильмами также требовала массы работы, не связанной с фильмом напрямую. Нужно было резать и клеить пленку, а практически все спецэффекты воспроизводить по-настоящему. Сейчас же достаточно иметь под рукой подходящий редактор, который позволить сделать все или почти все, не вставая из-за компьютера.
Хранение информации на электронных носителях. В настоящее время информация, например, в банках, хранится не в картотеках, а в базах данных, расположенных на электронных носителях. В данном случае оператор освобождается от прочесывания картотеки вручную: ему достаточно ввести параметры поиска в указанные поля, а всю черновую работу выполнит компьютер.
Главным образом преимущество заключается в надежности и скорости: компьютер быстро вычисляет и является более предсказуемым, чем человек. Мы часто оправдываем возникновение аварийных ситуаций так называемым человеческим фактором, который может выражаться в утомлении к концу рабочего дня, ленью, болезнью и т. д. Компьютеру подобные проблемы незнакомы. Конечно, и машина может дать сбой, но в хорошо отлаженном механизме его вероятность очень мала.
Программное обеспечение Программа Команды Команды
Несмотря на свою относительную надежность и высокую скорость вычислений, компьютер хуже человека, по крайней мере, в одном – он неспособен самостоятельно решить какую-либо проблему. Человек, сталкиваясь с проблемой, может придумать, как ее решить, но компьютер «думать» не может. Более того, он способен выполнять только команды, расписанные достаточно подробно: ему нужно все разжевывать и четко указывать шаги, необходимые для решения задачи.
Последовательность шагов (действий), в результате выполнения которых решается определенная задача, называется алгоритмом. Мы неявно сталкивается с алгоритмами каждый день. Например, для приготовления чая можно использовать следующий алгоритм: Вскипятить воду. Заварить чай. Налить чай в чашку.
Алгоритмы могут различаться по степени подробности. В частности, шаг 1 «Вскипятить воду» можно рассмотреть как отдельную задачу и составить алгоритм ее решения: Налить воду в чайник. Включить чайник. Дождаться, пока чайник закипит.
Детализацию можно продолжить, например, развернув шаг «Налить воду в чайник» : Взять сосуд, на котором написано «Braun» . Поднести сосуд к раковине. Повернуть ручку с синим кружочком. Поднести сосуд к струе воды. Дождаться, пока шарик поднимется до уровня «MAX» .
Есть команды высокого, среднего и низкого уровня. Например, команда «Построить дом» – это команда высокого уровня. Команды «Заложить фундамент» , «Возвести этажи с 1 по 16» и «Соорудить крышу» – это команды среднего уровня. Наконец, команды «Выкопать яму» , «Забить сваи» , «Положить кирпич» , «Вставить стекло» – это команды низкого уровня. Конечно, деление команд на уровни относительно и зависит от исходной задачи. Например, если исходная задача «Улучшить жилищные условия молодых ученых» , то задача «Построить дом» может оказаться командой среднего или низкого уровня.
При разработке крупных приложений, как правило, используются высокоуровневые языки, поскольку они позволяют сократить размер кода. Низкоуровневые языки и языки среднего уровня используются тогда, когда необходимо улучшить производительность программы или отдельных ее элементов. Корпоративные и веб-приложения обычно пишутся на языках Java, C#, С++. Для разработки компиляторов, а также вычислительных программ используются языки Ассемблер, Си и Fortran.
Псевдокод – это представление алгоритма на языке, внешне напоминающем язык программирования.
Задача. Вычислить сумму баллов выпускника по трем продметам ЕГЭ. Begin Output «Введите оценку по математике» Input math Output «Введите оценку по русскому языку» Input russ Output «Введите оценку по информатике» Input inform sum : = math+russ+inform Output «Сумма баллов равна» Output sum End
Задача. Красный диплом выдается, если средний балл не меньше 4. 75. Требуется написать упрощенную программу, которая принимает оценки по трем предметам и сообщает, красный или синий диплом получит выпускник.
Begin Output «Введите оценку по математике» Input math Output «Введите оценку по физике» Input phys Output «Введите оценку по информатике» Input inform average : = (math+phys+inform)/3 if average >= 4. 75 then Output «Красный» else Output «Синий» End
Задача. С клавиатуры вводится номер дня недели. Необходимо вывести название дня недели с таким номером.
Begin Output «Введите номер дня недели» Input day Switch day Case 1 Output «Понедельник» Case 2 Output «Вторник» Case 3 Output «Среда» Case 4 Output «Четверг» Case 5 Output «Пятница» Case 6 Output «Суббота» Case 7 Output «Воскресенье» End
Задача. Вывести на экран 10 чисел. For i: =1. . 10 Output i End
n=1 Пока n<=10 Output n n=n+1 End
Форматирование кода облегчает чтение и понимание программы, что, в свою очередь, ведет к более легкой разработке, отладке и модификации. В написанном нами псевдокоде мы использовали отступы для указания на вложенность конструкций. В языке Python отступы также используются с этой целью, и в нем отсутствуют явные слова, указывающие на начало или конец блока программы: блоки определяются исключительно отступами. Во многих современных редакторах существует автоматическое форматирование кода: редактор форматирует код либо сразу во время его набора, либо после нажатия заданной комбинации клавиш.
Нисходящая разработка заключается в том, что процесс решения поставленной задачи разбивается на несколько больших частей. Затем каждая из этих частей рассматривается как отдельная задача и также разбивается на несколько подзадач. Данный процесс детализации продолжается до тех пор, пока крайние подзадачи не станут простыми и понятными для программиста. Таким образом, получается дерево, корнем которого является решаемая задача, вершинами – промежуточные задачи, а листьями – элементарные шаги. Начиная с темы, посвященной функциям, мы будем рассматривать примеры, которые демонстрируют такую разработку.
Структуры данных Лекция 1.pptx