Методические рекомендации и презентация по теме Алгоритмизация и программирование
Презентация по теме:Алгоритмизация и программированиеИнформатика 10-11 класс Разветвляющиеся алгоритмы Массивы Циклические алгоритмы Линейные алгоритмы Понятие алгоритма Понятие алгоритма не есть для нас нечто новое и необычное. Они встречаются в нашей жизнина каждом шагу.Пример:открывание двери ключомстирка бельяприготовление блюдразличные алгоритмы выполнения алгебраических заданий и т.д.Попробуйте переставить местами любые два действия. Мы получимлибо алгоритм не выполнимымлибо результат не будет соответствовать тому, что мы должны были получитьПоэтому алгоритм это не только набор действий но и их определенный порядок. Алгоритм - понятное и точное предписание исполнителю выполнить конечную организованную последовательность команд, приводящую от исходных данных к искомому результату.Само слово «алгоритм» происходит от латинской формы написания имени великого математика IX века аль-Хорезми (Muhammed ibn Musa al Horesmi), который сформулировал правила выполнения арифметических действий. Первоначально под алгоритмами и понимали только правила выполнения четырех арифметических действий, а в дальнейшем это понятие стало использоваться для обозначения последовательности действий, приводящих к решению поставленной задачи. Предписание о выполнении отдельного законченного действия исполнителем называется командой алгоритма. Совокупность всех команд, которые могут быть выполнены некоторым исполнителем, образуют систему команд данного исполнителя (СКИ). Компьютер один из наиболее впечатляющих примеров исполнителей.В общем виде схему работы алгоритма можно представить следующим образом: Исходныеданные Алгоритм Искомыйрезультат Для того, что бы исполнитель выполнил задание ему не требуется понимание сущности алгоритма, он должен лишь точно выполнять команды, не нарушая их последовательности.Алгоритм должен быть:Точным (каждая команда – однозначное действие)Понятным (те команды, которые выходят в систему)Конечным (конечное число шагов) Свойство дискретности означает, что путь решения задачи разделен на отдельные шаги (действия). Каждому действию соответствует предписание (команда). Только выполнив одну команду, исполнитель может приступить к выполнению следующей.Свойство понятности означает, что алгоритм состоит только из предписаний, входящих в СКИ исполнителя. То есть таких предписаний, которые исполнитель может воспринять и выполнить по ним требуемые действия.Свойство определенности означает, что в алгоритме нет команд, смысл которых может быть истолкован неоднозначно; недопустимы ситуации. Когда после выполнения очередной команды исполнителю не ясно, какую команду надо выполнять на следующем шаге.Свойство результативности означает, что алгоритм должен обеспечивать возможность получения результата после конечного, возможно очень большого, числа шагов. При этом результатом считается не только обусловленный поставленной задачей ответ, но и вывод о невозможности продолжения решения данной задачи по какой-либо причине.Свойство массовости означает, что алгоритм должен обеспечивать возможность его применения для решения класса однотипных задач. На естественном языке (с помощью описания)На алгоритмическом языке (языке программирования)На языке схем (с помощью графических объектов) Алгоритм на естественном языке выглядит в виде описания последовательности шагов.Например: алгоритм открывания двери1.Взять ключ;2. Вставить ключ в замочную скважину;3. Сделать ключом необходимое количество оборотов;4. Вынуть ключ из замочной скважины;5. Открыть дверь. Записанный на языке программирования алгоритм называется программой. Система программирования – это программное обеспечение ПК , предназначенное для разработки, отладки и выполнения программ на некотором языке программирования.Из используемых процедурных языков программирования в настоящее время наиболее распространенными являются Паскаль, Делфи, Бейсик и СИ. Чаще всего именно эти языки изучаются на уроках информатики.Наиболее подходящим языком для первоначального освоения программирования является язык Паскаль. Как известно, автор Паскаля Н. Вирт создавал его прежде всего как учебный язык. Позднее фирмой Borland была разработана система программирования Турбо-Паскаль, расширившая область применения языка и развившая сам язык программирования. Современные версии Турбо-Паскаля достаточно широко распространены в компьютерных классах учебных заведений. Компьютер работает с информацией, хранящейся в его памяти.Отдельный информационный объект (число, символ, строка, таблица) называется величиной. С понятием величины связаны такие характеристики, как: Имя (место в памяти компьютера). Величины в программировании , как и в математике, делятся на- переменные, обозначающиеся символическими именами (индефикаторами) . Имя переменной может состоять из одной или нескольких латинских букв и цифр: А1,М, АР.- постоянные (константы). Значение константы хранится в выделенном под нее поле памяти и остается неизменным в течение работы программы. Если значением переменной является не число, а некоторый набор символов, то к ее имени добавляется символ $: А1$; Значение (информация о величине, хранимая в определенном месте). Тип (существует пять типов величин, с которыми работаеткомпьютер ТИП ВЕЛИЧИНЫ НА ЯЗЫКЕ ПАСКАЛЬ ЦЕЛАЯ Integer ВЕЩЕСТВЕННАЯ Real ЛОГИЧЕСКАЯ Boolean СИМВОЛЬНАЯ Char ЛИТЕРНАЯ string ОПЕРАЦИЯ ВЫРАЖЕНИЕ Сложение А + В Вычитание А - В Умножение А * В Деление А / В Целое деление А div B Остаток от целого деления A mod B Квадрат х (х2) Sqr (x) Квадратный корень из х ( ) Sqrt (x) ху Exp (y*ln(x)) ФУНКЦИЯ ВЫРАЖЕНИЕ Синус (х в радианах) sin(x) Косинус (х в радианах) cos(x) Тангенс (х в радианах) tan(x) Арккосинус (радианы) arccos(x) Арктангенс (радианы) arctan(x) Модуль х abs(x) ех - экспонента exp(x) Натуральный логарифм ln(x) Дробная часть числа х frac(x) Целая часть числа х Int(x) Округление до ближайшего целого round(x) Ближайшее целое, не превышающее х по модулю trunc(x) Пример 1. Записать математическое выражение в виде арифметических выражений на Паскале.
1. 2. 3. Математическое выражение Выражение на Паскале sqr(x)-7*x+6 (abs(x)-abs(y))/(1+abs(x*y)) Ln(abs((y-sqrt(abs(x)))*
(x-y/(z+sqr(x)/4)))) Программа может содержать числа, величины (переменные), арифметические выражения, операторы. Набор правил записи компьютерной программы называется алгоритмическим языком (или языком программирования) Оператор- это команда алгоритмического языка.Операторы в Паскале:Присваивания имя := выражение (предназначен для изменения значения величины)Ввода readln (список переменных) (предназначены для считывания информации в память компьютера с устройств ввода, например с клавиатуры)Вывода writeln ('подсказка', список переменных) (предназначены для вывода значения переменных на устройства вывода, например на экран монитора)Обращения к процедурам. Program <имя программы>;Var <раздел описания переменных>;Begin <раздел операторов>;Writeln (‘ввести …‘);Readln (…);… := …;Writeln (‘ответ …‘, …:0:2);Readln ;End. НачалоВвод (если есть)ДействиеВыводКонец Схема – наглядное графическое изображение алгоритма, когда отдельные его действия (этапы) изображаются при помощи различных геометрических фигур (блоков), а связи между этапами указываются при помощи стрелок, соединяющих эти фигуры.Подобные схемы называются блок-схемами. НАЧАЛО КОНЕЦ Начало алгоритма Конец алгоритма Ввод, вывод Действие, вычислительная операция Условие МПЗ (математическая постановка задачи).ОД (описание данных).РА (разработка алгоритма):Блок-схема,Программа на языке программирования.КЭ (компьютерный эксперимент).Открыть Турбо-Паскаль и ввести программу,Осуществить компиляцию (проверить на наличие ошибок с помощью нажатия клавиш Alt+F9),Выполнить отладку программы и запустить программу с помощью нажатия клавиш Ctrl+F9,Ввести значения входных переменных (через пробел или enter),Проанализировать полученные результаты и при необходимости осуществить корректировку. Алгоритм, в котором команды выполняются в порядке их естественного следования друг за другом независимо от каких-либо условий, является алгоритмом линейной структуры (АЛС).Линейный процесс является наиболее простым видом организации вычислительного процесса.Таким, например, будут алгоритмы вычислений по самым простейшим формулам: формулам вычисления площади круга, длины окружности, квадрата гипотенузы и так далее. Алгоритм линейной структуры (АЛС). Блок-схема. начало ввод вывод действие1 действие2 конец … действие1 Составить программу вычисления периметра и площади треугольника, у которого стороны равны a, b и c см. МПЗДано: ΔАВСa, b и c – стороныР – периметр , S - площадь Найти: Р, SРешение:Р=a+b+cS= (по формуле Герона)где p– полупериметр, А В С 2. ОД Входные : Промежуточные: Выходные: a, b, c p P, S 3.РА3.1. Блок-схема 3.2. Программа начало Ввод a,b,c p:=P/2 P:=a+b+c Вывод P,S конец S:=sqrt (p*(p-a)*(p-b)*(p-c)) Program P1;Var a,b,c,p,P,S : real;Begin Writeln (‘ввести a,b,c‘);Readln (a,b,c);P:=a+b+c; p:=P/2; S:=sqrt (p*(p-a)*(p-b)*(p-c));Writeln (‘ответ : P=‘, P:0:2); Writeln (‘S=‘, S:0:2);Readln ;End. P:=a+b+c Ветвление – это такая форма организации действий, при которой в зависимости от выполнения некоторого условия, совершается либо одна, либо другая последовательность операторов.Для программирования ветвящихся алгоритмов применяются:условный оператор (оператор ветвления)Например: условие –на улице дождьеслиданетто надо взять зонт иначе не надо брать зонт ПОЛНАЯ НЕ ПОЛНАЯ На естественном языкеЕСЛИ <логическое выражение>ТО <оператор 1 >ИНАЧЕ <оператор 2>На языке программированияIf <логическое выражение>then<оператор 1 >else<оператор 2>;На языке блок-схем На естественном языкеЕСЛИ <логическое выражение>ТО <оператор 1>На языке программированияIf <логическое выражение>then<оператор >;На языке блок-схем + условие оператор1 оператор2 + _ условие оператор _ оператор1 Составить программу для решения квадратного уравнения вида .Решение:1. МПЗa,b,c – коэффициентых1,х2 – корни уравненияD – дискриминантУсловие: если D≥0, то уравнение имеет корни,если D<0,то уравнение не имеет корней2. ОДвходные: a,b,cпромежуточные: Dвыходные: х1,х2 3. РА3.1 Блок-схема3.2 Программа начало Ввод a,b,c D:=b*b-4*a*c D<0 x1:=(-b+sqrt(D))/(2*a) x2:=(-b-sqrt(D))/(2*a) Вывод x1,x2 Вывод корней нет конец Program P1;Var a,b,c,D,x1,x2: real;Begin Writeln (‘ввести a,b,c‘);Readln (a,b,c);D:=b*b-4*a*c; if D<0 then Writeln (‘ответ : корней нет’) else Begin x1:=(-b+sqrt(D))/(2*a); x2:=(-b-sqrt(D))/(2*a); Writeln (‘Ответ:х1=‘, х1:0:2); Writeln (‘х2=‘, х2:0:2);End;Readln ;End. да нет Цикл – это многократное повторение выполнение последовательности действий по некоторому условию.Существует три типа циклов:Цикл с предусловиемЦикл с постусловиемЦикл с параметром Цикл «ПОКА» – это цикл выполнение которого повторяется, пока истинно условие цикла.На естественном языкеНа языке блок-схемПОКА <условие> ПОВТОРЯТЬНЦ <тело цикла>КЦНа языке программированияwhiIe <логическое выражение> doBegin< тело цикла >end; условие Тело цикла нет да Цикл «ДО» – это цикл выполнение которого заканчивается, когда условие цикла становится истинно.На естественном языкеНа языке блок-схемПОВТОРЯТЬ <тело цикла>ДО <условие>На языке программирования даRepeat < тело цикла > untiI <логическое выражение> нет Цикл с постусловием Тело цикла условие Цикл с параметром Цикл «ДЛЯ» – это цикл выполнение которого повторяется, пока целочисленный параметр лежит в интервале между In и Ik.На естественном языкеНа языке блок-схемДЛЯ I от In до Ik ПОВТОРЯТЬ НЦ<тело цикла>КЦНа языке программированияFor I:=In to Ik DO Begin < тело цикла >End Тело цикла I:=In , Ik Представление таблицы в языках программирования называется массивом.Массив – это упорядоченная последовательность, состоящая из фиксированного количества величин одного типа.Однотипные величины называются компонентами массива.Массив имеет имя (Н-р: A, B, D, F).Идентификатор компоненты – переменная с индексом, где индекс может быть выражением порядкового типа (Н-р: A[1], А[2], А[3]…).Описание массива определяет имя, размер массива и базовый тип. Var <имя массива>: array [тип индекса] of <базовый тип>; Представление таблицы в языках программирования называется массивом.Массивы бывают:Одномерные (линейные) – это массив, у которого элементы – простые переменные.В одномерных массивах хранятся значения линейных таблиц. Примеры описания одномерных массивов:Var A : array [0..5] of real; N : array [ ′A′..′Z′] of real;Ввод и вывод массива производится поэлементно.Обычно для этого используется цикл с параметром. Пример 1 в программе вводится десять значений целочисленного массива А и выводятся значения вещественного массива В, содержащего 50 элементов.Соответствующие фрагменты программы:Var A : array [1..10] of integer; B : array [1..50] of real; i : integer; begin for i :=1 to 10 do begin write (′A[′,i,′]=′); readln (A[i]); end;………………………………………………. ввод вывод for i :=1 to 50 do begin writeln (′B[′,i,′]=′); B[i]); end; readln; end. Задача (на сортировку) Дан целочисленный линейный массив. Отсортировать его элементы в порядке возрастания значений.Дано: А – линейный массивN- количество элементов массива АI - индекс элементов массива АJ – индекс элементов массива А для сортировкиР – меньшее значениеРешение: Если А[1]<= А[2], то А[1]= А[1], А[2] = А[2],Иначе А[1]= А[2], А[2] = А[1],Если А[2]<= А[3], то А[2]= А[2], А[3] = А[3],Иначе А[3]= А[2], А[2] = А[3],И т.д.«Метод пузырька». Последовательное перемещение путем попарных перестановок наибольшего значения сначала на место N-го элемента, затем N-1–го и т.д. Program Sortirovka;Var N,I,J,P: integer; A: array [1..20] of integer;begin write (‘введите число элементов:‘); readln (N); forI :=1 to N do begin write (′ введите A[′,I,′]=′); readln (A[I]); end; for I :=1 to N-1 do begin for J:=1 to N-1 do if A[J]<= A[J+1] then begin P:= A[J]; A[J]:= A[J+1]; A[J+1]=P end;end; for I:=1 to N do write (A[I], ′ ′); readln ;end. Массивы бывают:2. Двумерные.Двумерные массивы – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и столбца, на пересечении которых он расположен.Описание двумерных массивов:Var М : array [0..10] of array [0..20] of real; (или)Var М : array [0..10,0..20] of real;Обычно первый индекс связывают с номером строки, второй – сномером столбца. Задача Сформировать матрицу Пифагора (таблицу умножения в матричной форме) и вывести ее на экран. Дано: P – двумерныый массивI - индекс строк массива РJ – индекс столбцов массива РРешение: Р[I,J]=I*JВычисления и вывод матрицы производится в двух вложенных циклах. Program Pifagor;Var P: array [1..9,1..9] of integer; I,J: integer; begin for I :=1 to 9 dofor J :=1 to 9 doР[I,J]:=I*Jfor I :=1 to 9 do begin for J:=1 to 9 do write (P[I,J]:4); end;readln ;end.