Основные понятия программирования
Основные понятия программирования • Основные определения, свойства алгоритма • Формы представления алгоритмов • Язык блок-схем • Базовые структуры алгоритмов: следование, ветвление, повторение • Язык псевдокода
Основные определения • Алгоритм (от имени учѐного аль-Хорезми (перс. یمزراوخ[al-Khwārazmī]) — точный набор инструкций, которые необходимо выполнить для решения поставленной задачи за конечное число шагов. • Команда – элементарное предписание, предусматривающее выполнение какого-либо действия. • Операторы – действия, предписываемые командой. • Программа – данные, их описание и алгоритм, записанный на языке программирования. • Программирование – процесс создания программ. • Язык программирования – формализованный язык для написания программ. Все языки программирования являются искусственными, в них синтаксис и семантика строго определены.
Основные определения Свойства алгоритма • Дискретность – возможность разбиения алгоритма на отдельные элементарные действия. Алгоритм представляет процесс решения задачи как последовательность выполнения шагов-этапов. Для выполнения каждого эпата требуется определенное время, т.е. преобразование исходных данных в результат происходит дискретно во времени. • Определенность (детерминированность) – обеспечение однозначности результата при многократных расчетах с одними и теми же исходными данными. Каждое правило алгоритма должно быть четким и однозначным, исключая возможность искажения или двусмысленного толкования. • Результативность (финитность, конечность) – обязательное получение результата за конечное число шагов. Невозможность получения результата свидетельствует о том, что данный алгоритм неприменим для решения поставленной задачи. • Массовость – возможность получения результата для некоторого класса задач, различающихся исходными данными ( область применимости алгоритма ). Алгоритм решения задачи должен разрабатываться в общем виде для некоторого класса сходных задач.
Формы представления алгоритмов Формы представления алгоритмов • Словесная (текстуальная) – запись алгоритма на естественном языке. Эта форма используется лишь на начальных стадиях разработки алгоритма, так как для сложных алгоритмов описание становится слишком громоздким и ненаглядным. • Графическая (блок-схема) – графическое изображение алгоритма в виде поселедовательности связанных между собой блоков (символов), каждый из которых соответствует выполнению одного или нескольких операторов. Эта форма является самой наглядной и компактной. • Программная – запись алгоритма в виде текста на языке программирования. • Псевдокоды – запись алгоритма на алгоритмическом языке, ориентированном на человека. Эта форма представляет собой полуформализованные описание алгоритмов, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.
Формы представления алгоритмов Пример словесного способа записи алгоритма решения квадратного уравнения ax²+bx+c=0 Задать коэффициенты уравнения a, b, c Вычислить дискриминант по формуле d=b² − 4ac Если дискриминант меньше нуля, то вывести ответ «Корней нет» и остановиться (конец алгоритма); в противном случае продолжить выполнение алгоритма; Вычислить корни уравнения по формулам x 1 =( − b+√d)/2a; x 2 =( − b − √d)/2a; Вывести полученные значения в качестве ответа. Конец алгоритма
Язык блок-схем Некоторые условные графические обозначения символов блок-схем
Название символа | Обозначение и пример заполнения Пояснение | |||
Начало-конец | Начало или конец | |||
алгоритма, вход или | ||||
выход в подпрограмму | ||||
Начало | Конец |
Ввод-вывод | Ввод или вывод данных |
Печать Z
Процесс | Обработка данных | |||
(вычисление, | ||||
Z = X + Y | пересылка и т.п.) |
Язык блок-схем Некоторые условные графические обозначения символов блок-схем (продолжение)
Название символа | Обозначение и пример заполнения | Пояснение | |||||||||
Предопределенный | Вызов процедуры, | ||||||||||
процесс | вычисления по | ||||||||||
Имя | подпрограмме | ||||||||||
Решение | Проверка условия | ||||||||||
Да | Нет |
I >10 Комментарии
Линии потока | Соединительные |
линии, точки связи |
7
Язык блок-схем Пример графического способа представления алгоритма решения квадратного уравнения ax²+bx+c=0
Базовые структуры алгоритмов: следование, ветвление, повторение Структурное программирование Основные (базовые) структуры алгоритмов – это ограниченный набор стандартных способов соединения отдельных блоков или структур блоков для выполнения типичных последовательностей действий. Особенностью этих структур является наличие у них одного входа и одного выхода. Доказано , что алгоритм любой сложности можно представить комбинацией трех базовых структур: следование , ветвление и повторение (цикл) . Эти базовые структуры были положены в основу технологии структурного программирования . Эта технология рекомендует разбивать (декомпозировать) сложную программу на подпрограммы (процедуры), решающие отдельные подзадачи, т.е. базируется на процедурной декомпозиции . Другой технологией программирования является объектно-ориентированное программирование (ООП) . Эта технология связана с понятием объектов. Объект — это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Поэтому технология ООП связана с воздействием на объекты (с передачей объекту сообщений). При этом проектирование системы базируется на том условии, что никакая подсистема данного уровня не должна зависеть от устройства любой другой подсистемы этого уровня, т.е. данные и подпрограммы (процедуры, функции) их обработки формально не связаны.
Базовые структуры алгоритмов: следование, ветвление, повторение Базовая структура «следование» Следование – это последовательное выполнение действий (блоков). Эта базовая структура означает, что несколько операторов должны быть выполнены последовательно один за другим и только единственный раз за время выполнения данной программы. Алгоритм, составленный из только из базовых структур «следование», называется линейным . 1 Оператор 1 2 Оператор 2 3 Оператор 3
Основные понятия программирования
Программирование – это наука, изучающая теорию и методы разработки, производства и эксплуатации программного обеспечения ЭВМ.
Затраты на разработку, создание и эксплуатацию программ высоки и постоянно возрастают. До половины затрат на разработку программ требует ее отладка.
Отладка программы — обнаружение ошибок в программе, их локализация и исправление.
Способы записи алгоритма
1. Текстовый: в виде текста на естественном или искусственном языке, в том числе на языках программирования. Универсален, наиболее распространен. 2. Табличный: в форме двумерных таблиц (таблицы решений, таблицы переходов и т. п.) Не универсален, но удобен в отдельных случаях. 3. Графический. Наиболее нагляден. Используется в виде схем алгоритмов и программ. Схема алгоритма состоит из блоков, обозначающих действия, соединенных стрелками, определяющими порядок выполнения действий. Блоки называются символами. Правила оформления схем регламентируются государственными и международными стандартами на оформление программной документации. Основными символами являются: «процесс» (прямоугольник) — для описания операций ввода, обработки и вывода данных; «решение» (ромб) — для разветвления алгоритма; «пуск-останов» (овал) обозначает начало, конец и прерывание выполнения алгоритма; «комментарий» — для пояснения схемы. Основные символы, используемые в схемах алгоритмов, представлены на рис 2.1. Рис. 2.1. Основные символы (виды блоков) схем алгоритмов
Структура программы
Любая программа на языке С состоит из одной или более «функций», являющихся основными компонентами программы. Одна из функций, с которой начинается выполнение программы, называется главной и всегда носит имя main. Остальные функции – это подпрограммы, которые могут вызываться либо из главной функции, либо из других подпрограмм. Простая программа, состоящая только из функции main, имеет следующую структуру: Директивы препроцессора main () < Описания переменныхОператоры > Заголовок функции — main(). Круглые скобки после имени main как раз и указывают, что это функция. Тело функции заключается в фигурные скобки и состоит из объявлений переменных и операторов, опиcывающих процесс обработки данных. В программу можно включать комментарии, начинающиеся с пары символов /* и заканчивающиеся парой */ (они могут быть везде, где могут быть пробелы). Пример простой программы: /* Программа 2.1.*/ /* Сложение двух целых чисел */ #include main () < int a, b; /* объявление целочисленных переменных а и b */ printf ("Задайте два числа: "); /* вывод сообщения */ scanf ("%d %d", &a, &b); /* ввод значений а и b */ printf ("%d + %d = %d\n", a, b, a+b); /* вывод результата */ return 0; >При выполнении этой программы на экране появится сообщение: Задайте два числа: и затем программа будет ждать, пока вы не введете числа (ввести можно в той же строке, разделяя числа пробелом). Например: Задайте два числа: 328 54 Затем появится результат в виде: 328 + 54 = 382 В этой программе директива препроцессора #include служит для включения в программу библиотечного файла stdio.h, содержащего объявления стандартных функций ввода/вывода, таких как printf, scanf. Тело функции main содержит три оператора вызова функций printf и scanf. Обратите внимание, что все ключевые слова в языке Си пишутся строчными буквами, директивы препроцессора начинаются с символа #. Для наглядности принята ступенчатая форма записи программы. Считается, что программы, работающие под управлением операционной системы MSDOS, должны вернуть системе код завершения 0 в случае успешного выполнения и любой другой в случае ненормального завершения. Поэтому функцияmain() заканчивается оператором возврата значенияreturn 0; Объявление переменных и основные типы данных При объявлении переменных указываются имена переменных и типы значений этих переменных: тип_1 имя_1; тип_2 имя_2; Имя (идентификатор) — это последовательность латинских букв и цифр, начинающаяся с буквы. Можно использовать в имени символы подчеркивания вместо пробелов, когда имя состоит из нескольких слов. Если несколько переменных имеют один и тот же тип, то их можно описать вместе, перечислив имена через запятую: тип имя_1, имя_2, . ; К основным типам данных относятся целые типы (int, short, long, unsigned), символьный тип (char) и вещественные типы или типы с плавающей точкой (float, double). Примеры описаний переменных: float x,y,z; /* вещественные числа */ double x1,x2; /* вещ. числа двойной точности */ char simv; /* символ */ int i,j; /* целые числа */ long summa; /* длинное целое */ short k1,k2; /* короткие целые */ unsigned count; /* беззнаковое целое (неотрицательное) число */ Объем памяти, занимаемой данными различных типов, зависит от типа компьютера, операционной системы и конкретной реализации языка С. Обычно значение типа char занимает 1 байт, типов int, short, unsigned – 2 байта, long, float – 4 байта, double – 8 байтов.