алгоритмы. алгор. Компьютерная программа представляет собой список команд, которые указывают компьютеру
Скачать 2.13 Mb.
|
Компьютерная программа представляет собой список команд , которые указывают компьютеру , что он должен делать Некоторые программы – системные – управляют основными действиями компьютера Такие программы постоянно хранятся в ПЗУ , встроенном в компьютер Другие программы – прикладные – подробно указывают компьютеру , что нужно делать при выполнении определенной работы , например при обработке текста Такие программы обычно записываются на диске и загружаются в компьютер , когда нужно Все программы должны быть написаны очень тщательно , потому что ошибки в них ведут к неправильной работе компьютера Компьютерная программа представляет собой список команд , которые указывают компьютеру , что он должен делать Некоторые программы – системные – управляют основными действиями компьютера Такие программы постоянно хранятся в ПЗУ , встроенном в компьютер Другие программы – прикладные – подробно указывают компьютеру , что нужно делать при выполнении определенной работы , например при обработке текста Такие программы обычно записываются на диске и загружаются в компьютер , когда нужно Все программы должны быть написаны очень тщательно , потому что ошибки в них ведут к неправильной работе компьютера ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРА Каждая программа предназначена для практического использования:играть, сочинять музыку, производить вычисления или рисовать . Программы такого типа называются прикладными. Прикладная программа обычно хранится на магнитной дискете или на CD. Эта программа представляет собой набор команд, вводимых в память компьютера. Существует и другой тип программы: программа, которая управляет информацией, хранящейся на диске, называется дисковой операционной системой – ДОС(DOS). ПЗУ содержит , как правило, лишь необходимый минимум информации, а остальная часть ОС может быть считана с системного диска. Оперативная память – это ЗУ, предназначенное для информации, непосредственно участвующей в процессе выполнения операций, выполняемых процессором. Процессор и память – это главные компоненты компьютера. Компьютер, обработав информацию из оперативной памяти, записывает ее во внешнюю память и “ листает книжку” дальше, считывая в оперативную память очередную порцию информации. Для ПК имеются внешние носители информации: жесткие, гибкие, лазерные, магнитооптические диски, магнитные ленты и т. д. ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА( УСТРОЙСТВА ВВОДА – ВЫВОДА) Клавиатура или манипулятор мышь - для ввода задания ПК Сканер – ввод графического изображения Дисковод – для получения информации из внешней памяти Монитор – для вывода итогов работы ПК на экран Принтер – для вывода на бумагу Проектор – для вывода на экран слайдов Модем – “ модулятор – демодулятор ” преобразует цифровые сигналы “ своего компьютера в аналоговые и посылает их в телефонную сеть. На конце телефонной линии другой модем преобразует аналоговые сигналы в цифровые. Основы алгоритмического управления Совокупность всех команд, которые может выполнить конкретный БИ, называется системой команд этого исполнителя. А совокупность всех действий , которые он может выполнить в ответ на эти команды, называется системой допустимых действий исполнителя. Алгоритм – это организованная последовательность допустимых для некоторого исполнителя действий, приводящая к определенному результату, а программа – это запись алгоритма на языке конкретного БИ. Как правило, алгоритмы пишутся для человека. При этом можно применять какие- то сокращения слов или заменять одни слова другими. Важно только , чтобы за этими словами стояли действия, допустимые для данного исполнителя. Примеры: 1. Как открыть дверь. 2. Как приготовить хороший чай. 3. Как приготовить пельмени. БИ – бездумный исполнитель( прикладные программы, любой компьютер со своей специфичной системой команд). Основной задачей программирования является разработка проекта до такого уровня , чтобы в нем остались только стандартные конструкции и операторы из системы команд БИ, для которого пишется программа. Исправьте алгоритм , чтобы предотвратить несчастный случай Налить в чайник воду. Открыть кран газовой горелки. Поставить чайник на плиту. Ждать,пока вода не закипит. Поднести спичку к горелке. Зажечь спичку. Выключить газ. АЛГОРИТМ ПОЛУЧЕНИЯ КИПЯТКА Алгоритм и его свойства Алгоритмы – это организованная последовательность действий, допустимых для некоторого БИ. Алгоритм не роскошь, а средство достижения цели. Линейный алгоритм – набор команд, выполняемых последовательно во времени друг за другом. начало А,В,С D=AB/В+ С D конец Разветвляющийся алгоритм Разветвляющийся алгоритм– алгоритм, содержащий хотя бы одно условие, в результате проверки которого БИ переходит на один из двух возможных шагов. Провер ка процесс да нет проверка Процесс 1 процесс2 ответвление, раздвоение, переключение (несколько процессов) Циклический алгоритм Многократное повторение одного и того же действия над новыми исходными данными. Цикл программы – последовательность команд(серия, тело цикла) , которая которая может выполняться до удовлетворения некоторого условия. Многократное повторение одного и того же действия над новыми исходными данными. Цикл программы – последовательность команд(серия, тело цикла) , которая которая может выполняться до удовлетворения некоторого условия. Проверка условия повторения Тело цикла Проверка в начале цикла Тело цикла Проверка условия повторения Проверка в конце цикла Отправляйс я в ближайший магазин, где не был СПРОСИ АРАХИС Есть ли арахис в магази не Купи арахи с Иди домой БЛОК-СХЕМА программы покупки арахиса Да Нет b=4 b:=b+1 a:=a*2 Определите значение переменной a после выполнения фрагмента алгоритма a:=1 b:=0 да нет * Умножение := присваивание Алгоритмический язык АЯ – это система обозначений формальной записи алгоритмов, предназначенных для анализа их исполнителем – человеком,а затем и для реализации на машине. В общем виде имеются операторы ( описание однородных этапов изучаемого процесса ) четырех типов: 1.Действующие; определяют изменение в объекте. 2.Логические; описывают условия, от которых зависит направление процесса. 3.Варьирующие;определяют изменения вспомогательных величин, называемых параметрами. 4.Операторы перехода; определяют порядок выполнения операторов первых трех типов. Кроме операторов, применяются знаки начала и конца процесса. Оператор предписывает исполнителю алгоритма команду. Команды обозначают одним полным или сокращенным словом,а также определенным значком. Эти обозначения команд назыв. cлужебными словами и символами. Алгоритм вычисления суммы пяти чисел алг сумма ( цел S, цел N, таб M[1:5]) арг N рез S S:=0 - действующий N:=5 - действующий нач цел i - знак начала процесса i:=0 - действующий пока i <=N -логический нц - перехода i:=i+1 - действующий S:=S+M[i] - действующий кц -перехода кон - знак конца процесса БИБЛИОТЕКА АЛГОРИТМОВ А1. Алгоритм вычиcления модуля действительного числа алг МОД ( вещ х, вещ у ) арг х рез у нач если х>=0 то у:=х иначе у:=-х все кон А2. Алгоритм поиска большего из двух чисел a и b алг БИД ( вещ a,b, вещ у) арг a,b рез y нач если a>=b то y:=a иначе y:=b все кон МНОГОКРАТНОЕ СУММИРОВАНИЕ (ПРОИЗВЕДЕНИЕ) =1+2+3+…+n; =1*2*3*…*n =n!(факториал) 1. 2. 3. =x*x*x*…*x= k - называется параметром суммирования( умножения) k изменяется по закону k:=k+1 Cуммирование: S:=0 {начальное значение суммы} нц для k от а до b S:=S+f k кц Умножение: Р:=1 { начальное значение произведения } нц для k от a до b P:=P*f k кц а – начальное значение параметра k, b- конечное значение k f k – k-й член (k- е слагаемое( сомножитель)). алг задача1 ( цел n,s ) дано n надо s нач цел k s:=0 нц для k от 1 до n s:=s+k кц кон алг задача2(цел n, fact) дано n надо fact нач цел k fact :=1 нц для k от 1 до n fact:= fact*k кц кон Для задачи3 составить алгоритм самим Для задачи3 составить алгоритм самим Язык программирования ПАСКАЛЬ 1.Начальные операторы Program < имя >; begin end 2. Описание числовых переменных Var < список переменных > : integer ; - целочисленные переменные Var < список переменных >: real; - вещественные 3. Оператор условия IF (< условие>) THEN begin < оператор >; … end ELSE begin < оператор> … end; Конструкция ИНАЧЕ ( ELSE ) может отсутствовать. В языке ПАСКАЛЬ необходимо после последнего оператора END поставить точку с запятой. 4. Оператор цикла по условию WHILE (< условие>) DO begin < оператор > … end; 5. Оператор цикла с параметром FOR < переменная > := < арифм. выражение > TO begin < оператор > … end; 6. Работа с подпрограммами Procedure < имя > ( < список параметров с указанием их типов >) begin < оператор > … end; Для возврата в главную программу служит оператор EXIT; 7. Операторы ввода и вывода информации READLN( <имя переменной>); WRITE(< сообщение >,<имя переменной>); Алгоритм вычисления члена ряда Фибоначчи PROGRAM Fib; VAR A1,A2,N,R,I: INTEGER; BEGIN READLN(N); A1:=0; A2:=1; FOR I:=1 TO N DO BEGIN R:= A1+A2; A1:=A2; A2:=R; END; WRITE (N, ̕-й член равен̕, A2) END. СИМВОЛЬНОЕ КОДИРОВАНИЕ СИМВОЛЬНОЕ КОДИРОВАНИЕ Cчитая, что каждый символ кодируется 16 – ю битами , оцените информационный объем следующей пушкинской фразы в кодировке Unicode: Привычка свыше нам дана : Замена cчастию она. Бит – 0 или 1 ; Байт – последовательность битов ( 8 или 16 битов) ,один символ соответствует 1 байту. 1 килобайт = 1024 байта, 1 мегабайт = 1024 кбайт, 1 гигабайт = 1024 мегабайт. Световое табло состоит из лампочек, каждая из которых может находиться в двух состояниях ( “вкл” и “выкл”) . Какое наименьшее количество лампочек должно находиться на табло, чтобы с его помощью можно было передать 50 различных сигналов? Световое табло состоит из лампочек, каждая из которых может находиться в двух состояниях ( “вкл” и “выкл”) . Какое наименьшее количество лампочек должно находиться на табло, чтобы с его помощью можно было передать 50 различных сигналов? Значение выражения 16+8*2 в двоичной системе счисления равно : --------------------? т ф Диаграммы I) II) В цехе трудятся рабочие трех специальностей – токари ( Т ), слесари (C) и фрезеровщики Каждый рабочий имеет разряд не меньший второго и не больший пятого На диаграмме I отражено количество рабочих с различными разрядами , а на диаграмме II – распределение рабочих по специальностям Каждый рабочий имеет только одну специальность и один разряд Имеются четыре утверждения: А) все рабочие третьего разряда могут быть токарями Б) все рабочие третьего разряда могут быть фрезеровщиками В) все слесари могут быть пятого разряда Г) все токари могут быть четвертого разряда Кобол, Паскаль , ПЛ -1, Си, Фортран, Ассемблер и т. д. Язык программирования ПАСКАЛЬ Язык Паскаль был разработан Никлаусом Виртом в 1970 г. как язык со строгой типизацией и интуитивно понятным синтаксисом. В 80-е годы наиболее известной реализацией стал компилятор Turbo Pascal фирмы Borland, в 90-е ему на смену пришла среда программирования Delphi, которая стала одной из лучших сред для быстрого создания приложений под Windows. Delphi ввела в язык Паскаль ряд удачных объектно- ориентированных расширений, обновленный язык получил название Object Pascal PascalABC.NET - достаточно зрелая среда. Ее прототип - учебная система Pascal ABC - появилась в 2002 году и достаточно активно используется в российских школах. PascalABC.NET - развивающаяся среда. Ведутся разработки новых языковых возможностей, новых библиотек и новых языков программирования, которые будут интегрированы в общую среду Структура программы : обзор Программа на языке PascalABC.NET имеет следующий вид : program program program program имя программы; раздел uses uses uses uses раздел описаний begin begin begin begin операторы end end end end. Первая строка называется заголовком программы и не является обязательной Раздел uses uses uses uses начинается с ключевого слова uses uses uses uses , за которым следует список имен модулей и пространств имен .NET, перечисляемых через запятую Раздел описаний может включать разделы описания переменных , констант , меток , типов , процедур и функций , которые следуют друг за другом в произвольном порядке Далее следует блок begin begin begin begin / end end end end , внутри которого находятся операторы , отделяемые один от другого символом " точка с запятой ". Раздел uses uses uses uses и раздел описаний могут отсутствовать Например : program program program program MyProgram; var var var var a,b: integer; r: real; begin begin begin begin readln(a,b); x := a/b; writeln(x); end end end end; Описание переменных Переменные могут быть описаны в разделе описаний, а также непосредственно внутри любого блока begin/end. Раздел описания переменных начинается со служебного слова var, после которого следуют элементы описания вида список имен: тип; или имя: тип := выражение; или имя := выражение; Имена в списке перечисляются через запятую. Например: var a,b,c: integer; d: real := 3.7; s := 'Pascal forever'; al := new ArrayList; p1 := 1; В последних трех случаях тип переменной определяется по типу правой части. Переменные могут описываться непосредственно внутри блока . Внутриблочные описания переменных имеют тот же вид, что и в разделе описаний, с тем исключением, что в каждой секции var может быть лишь один элемент описания: begin var a1,a2,a3: integer; var s := ''; end. Кроме того, переменные-параметры цикла могут описываться в заголовке операторов for и foreach Описание констант Раздел описания именованных констант начинается со служебного слова const, после которого следуют элементы описания вида имя константы = значение; или имя константы : тип = значение; Например: const Pi = 3.14; Count = 10; Name = 'Mike'; DigitsSet = ['0'..'9']; Arr: array [1..5] of integer = (1,3,5,7,9); Rec: record name: string; age: integer end = (name: 'Иванов'; age: 23); Arr2: array [1..2,1..2] of real = ((1,2),(3,4)); Описание меток Раздел описания меток начинается с зарезервированного слова label, после которого следует список меток, перечисляемых через запятую. В качестве меток могут быть использованы идентификаторы и положительные целые числа: label a1,l2,777777; Описание типов Раздел описания типов начинается со служебного слова type type type type , после которого следуют строки вида имя типа = тип; Например , type type type type myint = integer; arr10 = array array array array [1..10] of integer; pinteger = ^integer; A = class class class class i: integer; constructor constructor constructor constructor Create(ii: integer); begin begin begin begin i:=ii; end end end end; end end end end; При описании рекурсивных структур данных указатель на тип может фигурировать раньше описания самого типа в определении другого типа : type type type type PNode = ^TNode; TNode = record record record record data: integer; next: PNode; end end end end; При этом важно , чтобы определения обоих типов находились в одном разделе type type type type В отличие от Delphi Object Pascal следующее рекурсивное описание верно : type type type type TNode = record record record record data: integer; next: ^TNode; end end end end; Отметим , что для ссылочных типов ( классов ) разрешается описание поля с типом , совпадающим с типом текущего класса : type type type type Node = class class class class data: integer; next: Node; end end end end; Область действия идентификатора Любой используемый в блоке идентификатор должен быть предварительно описан Идентификаторы описываются в разделе описаний Идентификаторы для переменных могут также описываться внутри блока Основная программа , подпрограмма , блок , модуль , класс образуют так называемое пространство имен - область в программе , в которой имя должно иметь единственное описание Таким образом , в одном пространстве имен не может быть описано двух одинаковых имен ( исключение составляют перегруженные имена подпрограмм ). Кроме того , в сборках .NET имеются явные определения пространств имен Область действия идентификатора ( т е место , где он может быть использован ) простирается от момента описания до конца блока , в котором он описан Область действия глобального идентификатора , описанного в модуле , простирается на весь модуль , а также на основную программу , к которой данный модуль подключен в разделе uses uses uses uses Кроме этого , имеются переменные , определенные в блоке и связанные с некоторыми конструкциями ( for for for for , foreach foreach foreach foreach ). В этом случае действие переменной i простирается до конца соответствующей конструкции Так , следующий код корректен : var var var var a: array of array of array of array of integer := (3,5,7); for for for for i: integer := 1 to to to to 9 do do do do write(a[i]); foreach foreach foreach foreach i: integer in in in in a do do do do write(i); Идентификатор с тем же именем |