899.72K
Категория: ПрограммированиеПрограммирование

Основы программирования

1.

Основы
программирования

2.

Работа по решению любой задачи с использованием компьютера
делится на следующие этапы:
1.
2.
3.
4.
5.
6.
Постановка задачи.
Формализация задачи.
Построение алгоритма.
Составление программы на языке программирования.
Отладка и тестирование программы.
Использование программы.

3.

На этапе постановки задачи должно быть четко
сформулировано, что дано и что требуется найти. Здесь
очень важно определить полный набор исходных
данных, необходимых для получения решения.

4.

Второй этап — формализация задачи.
Здесь чаще всего задача переводится на язык
математических формул, уравнений, отношений. Если
решение требует математического описания какого-то
реального
объекта,
явления
или
процесса,
то
формализация равносильна получению соответствующей
математической модели.

5.

Третий этап — построение алгоритма.
Опытные программисты часто сразу пишут программы на
языках, не прибегая к каким-либо специальным способам
описания алгоритмов (блок-схемам, псевдокодам). Однако
в учебных целях полезно использовать эти средства, а
затем переводить полученный алгоритм на язык
программирования.

6.

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

7.

Таким образом, программист должен обладать
следующими знаниями и навыками:
• уметь строить алгоритмы;
• знать языки программирования;
уметь работать в соответствующей системе
программирования.

8.

Одним
из
фундаментальных
понятий
в
информатике
является
понятие
алгоритма.
Происхождение
самого
термина
«алгоритм»
связано с математикой. Это слово происходит от
Algorithmi

латинского
написания
имени
Мухаммеда альХорезми (787 — 850), выдающегося
математика средневекового Востока.

9.

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

10.

В наше время понятие алгоритма трактуется шире.
Алгоритм — это последовательность команд управления какимлибо исполнителем.
Алгоритм может быть предназначен для выполнения его
человеком или автоматическим устройством — формальным
исполнителем.

11.

Задача исполнителя — точная реализация уже имеющегося
алгоритма.
Формальный исполнитель не обязан вникать в сущность алгоритма, а
возможно, и неспособен его понять.
Примером формального исполнителя: автоматическая стиральная
машина, которая неукоснительно исполняет предписанные ей
действия, даже если вы забыли положить в нее порошок.
Человек тоже может выступать в роли формального исполнителя, но
в первую очередь формальными исполнителями являются различные
автоматические устройства, и компьютер в том числе.

12.

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

13.

Например, ах² + Ьх + с = 0
исходные данные - коэффициенты а, Ь, с;
результаты — корни уравнения х1, х2;
промежуточные данные — дискриминант уравнения
D = b2 - 4ас.

14.

Формы записи алгоритмов:
• словесная (запись на естественном языке)
• графическая (изображения из графических
символов)
• псевдокоды
• программная (тексты на языках программирования)

15.

Пример:
написать алгоритм "Одеться по погоде". Если
на улице температура ниже 0, то необходимо
надеть шубу, иначе – куртку.

16.

Словесный способ записи алгоритма
это описание последовательных этапов обработки данных. Алгоритм
задается в произвольном изложении на естественном языке.
Алгоритм ПОГОДА:
Начало
определить температуру воздуха
если температура ниже 0, то надеть шубу, иначе надеть куртку
Конец.

17.

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

18.

Графический способ записи алгоритмов
Наиболее распространен:
- нагляден
- изображается в виде последовательности связанных между
собой функциональных блоков, каждый из которых
соответствует выполнению одного или нескольких действий.
Такое графическое представление называется схемой алгоритма
или блок-схемой, где каждому типу действий (вводу исходных
данных, вычислению значений выражений, проверке условий,
управлению повторением действий, окончанию обработки и т.п.)
соответствует геометрическая фигура, представленная в виде
блочного символа.
Блочные
символы
соединяются
линиями
переходов,
определяющими очередность выполнения действий.

19.

наиболее часто употребляемые символы

20.

Псевдокод - это система обозначений и правил, предназначенная для единообразной записи алгоритмов.
Псевдокод занимает промежуточное место между естественным и формальным языками: он близок к
обычному естественному языку, поэтому алгоритмы могут на нем записываться и читаться как обычный
текст, но используются некоторые формальные конструкции и математическая символика, что приближает
запись
алгоритма
к
общепринятой
математической
записи.
В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным
языкам, что облегчает запись алгоритма на стадии его проектирования и дает возможность использовать
более
широкий
набор
команд,
рассчитанный
на
абстрактного
исполнителя.
Однако обычно имеются некоторые конструкции, присущие формальным языкам, что облегчает переход от
записи на псевдокоде к записи алгоритма на формальном языке: есть служебные слова, смысл которых
определен раз и навсегда: выделяются в печатном тексте жирным шрифтом, а в рукописном тексте
подчеркиваются.
Единого или формального определения псевдокода не существует, поэтому возможны различные
псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций.

21.

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

22.

#include <iostream>
int main() {
// Объявляем переменную для хранения температуры
int temperature;
// Запрашиваем у пользователя ввод температуры
std::cout << "Введите температуру воздуха: ";
std::cin >> temperature;
// Проверяем условие и выводим соответствующее сообщение
if (temperature < 0) {
std::cout << "Надеть шубу" << std::endl;
} else {
std::cout << "Надеть куртку" << std::endl;
}
// Возвращаем 0 для обозначения успешного завершения программы
return 0;
}

23.

Свойства алгоритмов

24.

Массовость

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

25.

Понятность - команды, используемые в
алгоритме, должны быть понятны исполнителю.

26.

Дискретность (прерывность, раздельность) — алгоритм
должен представлять процесс решения задачи как
последовательное выполнение простых шагов.
Каждое
действие,
предусмотренное
алгоритмом,
исполняется только после того, как закончилось
исполнение предыдущего.

27.

Определенность (детерминированность) — получение
однозначного результата вычислительного процесса при
заданных исходных данных.
Благодаря этому свойству процесс выполнения алгоритма
носит механический характер.

28.

Результативность (конечность) — алгоритм должен
приводить к решению задачи за конечное число шагов.
Детерминированность (однозначность) - каждое действие
(шаг,
этап)
должно
быть
четким,
однозначным,
исключающим произвольное толкование и не оставляющим
места для двусмысленности. Выполнение алгоритма носит,
по сути, механический характер и не требует никаких
дополнительных указаний.

29.

Типы алгоритмов
- линейные,
- разветвляющиеся
- циклические.

30.

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

31.

П р и м е р. Составить алгоритм вычисления площади трапеции с
основаниями a,b и высотой h. Известно, что площадь трапеции
вычисляется по формуле:
Поэтому
можно
1.
Задать
численное
2. Вычислить выражение
3. Записать ответ S.
записать
значение
a,
алгоритм:
b,
h.

32.

33.

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

34.

Пример
Процесс анализа условия и выбора одной из ветвей
на блок-схеме показывают с помощью логического
блока. Логический блок имеет один вход и два
выхода (ветвь «да» и ветвь «нет»). В блок-схемах
разветвляющихся алгоритмов всегда есть логический
блок.

35.

36.

Пример блок-схемы решения квадратного уравнения
ax² + bx + c=0.

37.

Циклический алгоритм (цикл) — это алгоритм, в котором
группа операторов выполняется несколько раз подряд.
Блок-схема цикла обязательно содержит логический блок

38.

Выполняется
циклический
алгоритм
так:
сначала
проверяется условие, если условие верно (истина), то
выполняется тело цикла (действия или группа операторов)
и, далее, изменяются значения параметра цикла и снова
проверяется условие и т. д. На каком-то шаге условие не
выполнится (ложь) и тогда происходит выход из цикла и
продолжается выполнение программы.

39.

Классификация языков программирования
Язык программирования – это формальная система символов и правил,
которая используется для написания компьютерных программ. Он
предоставляет программисту набор инструкций, которые компьютер
может понять и выполнить.

40.

41.

Теория языков программирования включает в себя следующие
основные понятия:
-
синтаксис
-
семантика
-
типы данных
-
алгоритмы и структуры данных

42.

Синтаксис языка программирования определяет правила, по
которым строятся корректные программы на этом языке. Он
определяет, какие символы и комбинации символов являются
допустимыми, а какие – нет.

43.

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

44.

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

45.

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

46.

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

47.

В 1950-х гг. появляются первые средства автоматизации программирования —
языки Автокоды. Позднее для языков этого уровня стало применяться
название «Ассемблеры».
Появление
языков
Переменные
Числовые
типа
величины
коды
Ассемблер
стали
операций
облегчило
изображаться
заменились
на
участь
программистов.
символическими
мнемонические
именами.
(словесные)
обозначения, которые легче запомнить.
Язык программирования стал понятнее для человека, но при этом удалился от
языка машинных команд.

48.

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

49.

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

50.

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

51.

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

52.

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

53.

К машинно-зависимым языкам относятся машинные языки.
Машинный
язык
является
внутренним
языком
ЭВМ,
который не требует трансляции и могут исполняться
непосредственно аппаратными средствами ЭВМ. Сюда
относится, прежде всего язык – АССЕМБЛЕР.

54.

Машинно-независимые языки (или языки высокого уровня) не
требуют от пользователя полных знаний специфики ЭВМ. Они
значительно ближе и понятнее человеку, нежели компьютеру.
Языки высокого уровня обязательно требуют наличие трансляторов
– программ для перевода исходных программ на машинный язык.

55.

По специфики решаемых задач языки высокого уровня классифицируются:
· Универсальные – для создания системного и прикладного ПО;
· Языки баз данных;
· Языки искусственного интеллекта;
· Языки для веб-программирования и Интернета;
· Языки для моделирования.

56.

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

57.

Процедурное программирование
Проблема разбита на процедуры или блоки кода, которые
выполняют по одной задаче каждый. Все процедуры, взятые
вместе, образуют целую программу. Подходит только для
небольших программ с низким уровнем сложности (Паскаль,
С, Ада).

58.

Объектно-ориентированное программирование
Здесь решение вращается вокруг сущностей или объектов, которые
являются частью проблемы. Решение касается того, как хранить
данные, относящиеся к сущностям, как ведут себя сущности и как
они взаимодействуют друг с другом, чтобы получить целостное
решение (Java, Python, Ruby, C#).

59.

Функциональное программирование
Здесь
проблема
функциональные
или
желаемое
решение
блоки.
Каждый
блок
разбиты
выполняет
на
свою
собственную задачу и является самодостаточным. Затем эти
блоки объединяются, образуя законченное решение.

60.

Логическое программирование
Здесь проблема разбита на логические единицы, а не на функциональные.
Пример:
В
системе
управления
школой
у
пользователей
есть
четко
определенные роли, такие как классный руководитель, учитель-предметник,
лаборант, координатор, ответственный за учебу и т.д. Таким образом,
программное обеспечение можно разделить на блоки в зависимости от ролей
пользователей. У каждого пользователя может быть разный интерфейс,
разрешения и т.д.

61.

Системы программирования

62.

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

63.

64.

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

65.

Многие системы программирования включают также
средства RAD (RapidApplication Development – быстрая
разработка приложений), например, простой и удобный
способ разработки графического интерфейса.

66.

Реализовать тот или иной язык программирования на ЭВМ — это
значит создать транслятор с этого языка для данной ЭВМ (тут
имеется в виду не конкретный экземпляр ЭВМ, а архитектура
процессора и поддерживаемая им система команд).

67.

Существуют два принципиально различных метода
трансляции.
Они
называются
компиляция и интерпретация.
соответственно

68.

Транслятор, работающий по принципу компиляции,
называется компилятором; транслятор, работающий
методом интерпретации, — интерпретатором.

69.

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

70.

Интерпретатор в течение всего времени работы программы находится
во внутренней памяти. В ОЗУ помещается и программа на языке
высокого уровня. Интерпретатор в последовательности выполнения
алгоритма «читает» очередной оператор программы, переводит его в
команды и тут же выполняет эти команды. Затем переходит к переводу
и
выполнению
следующего
оператора.
При
этом
результаты
предыдущих переводов в памяти не сохраняются. При повторном
выполнении одной и той же команды она снова будет транслироваться.

71.

При компиляции исполнение программы разбивается на
два этапа: трансляцию и выполнение. При интерпретации,
поскольку
трансляция
и
выполнение
совмещены,
программа на ЭВМ проходит в один этап. Однако
откомпилированная программа выполняется быстрее, чем
интерпретируемая.
English     Русский Правила