стр. 46
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
«кот» < «лис» «кот» > «дом»
Выражение, состоящее из одной логической величины или одного отношения, будем называть простым логическим выражением.
Часто встречаются задачи, в которых используются не отдельные условия, а совокупность связанных между собой условий (отношений). Например, в магазине вам нужно выбрать туфли, размер которых r = 45, цвет color = белый, цена price не более 400руб.
Другой пример: школьник выяснил, что сможет купить шоколадку, если она стоит 3руб. или 3руб. 50коп.
В первом примере мы имеем дело с тремя отношениями, связанными между собой союзом "и" и частицей "не", во втором - с двумя отношениями, связанными союзом "или". Подобные условия назовём составными, и для их обозначения в алгоритме договоримся использовать союзы "и", "или", "не", которые будем рассматривать как знаки логических операций, позволяющих из простых условий создавать составные, подобно тому, как из простых переменных и констант с помощью знаков +, - и т. д. можно создавать алгебраические выражения.
Так условия наших примеров в алгоритме могут выглядеть таким образом: первое: (r = 45) и (color = белый) и (не (price>400))
второе: (цена=3) или (цена=3.5)
Выражение, содержащие логические операции, будем называть сложным логическим выражением.
Объединение двух (или нескольких) высказываний в одно с помощью союза «и» называется операцией логического умножения или конъюнкцией.
В результате логического умножения (конъюнкции) получается истина, если истинны все логические выражения.
Объединение двух (или нескольких) высказываний с по мощью союза «или» называется операцией логического сложения или дизъюнкцией.
В результате логического сложения (дизъюнкции) получается истина, если истинно хотя бы одно логическое выражения.
Присоединение частицы «не» к высказыванию называется операцией логического отрицания или инверсией.
Отрицание изменяет значение логической величина на противоположное: не истина = ложь; не ложь = истина.
Если в сложном логическом выражении имеется несколько логических операций, то возникает вопрос, в каком порядке их выполнит компьютер. По убыванию старшинства логические операции располагаются в таком порядке:
1.отрицание (не);
2.конъюнкция (и);
3.дизъюнкция (или).
Влогических выражениях можно использовать круглые скобки. Так же как и в математических формулах, скобки влияют на последовательность выполнения операций. Если нет скобок, то операции выполняются в порядке их старшинства.
Пример. Пусть a, b, c – логические величины, которые имеют следующие значения: a =
стр. 47
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
истина, b = ложь, c = истина. Необходимо определить результаты вычисления следующих логических выражений:
1.a и b
2.a или b
3.не a или b
4.a и b или c
5.a или b и c
6.не a или b и c
7.(a или b) и (с или b)
8.не (a или b) и (с или b)
9.не ( a и b и c) Получим в результате:
1.ложь
2.истина
3.ложь
4.истина
5.истина
6.ложь
7.истина
8.ложь
9.истина.
Пример. Составить алгоритм для вычисления:
Алгоритм Вычисление x переменные a, c, x - вещественные начало
ввод (а, c)
если (4*а – с >=0) и (а<>0) то начало
x := корень(4*а – с)/(2*a) вывод (х)
конец
иначе вывод («нет решения»)
конец
x= 4a−c 2a
Компьютер сначала проверит условие (4*а – с >=0) и (а<>0) и если оно окажется истинно, то вычислить x, иначе выведет сообщение «нет решения».
Пример. Составить алгоритм для вычисления суммы всех чисел от 1 до n.
Алгоритм Вычисление суммы чисел переменные a, c, x - вещественные начало
ввод (n) x := 1
пока x<n повторять начало
s := s + x x := x +1 конец
стр. 48
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
вывод (s) конец
До тех пор пока условие x<n будет истинно компьютер будет выполнять тело цикла – вычислять очередную сумму и увеличивать x на единицу.
стр. 49
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Билет № 10
1. Представление о программировании: язык программирования (на примере одного из языков высокого уровня); примеры несложных программ с линейной, ветвящейся и циклической структурой.
Для представления алгоритма в виде, понятном компьютеру, служат языки программирования. Сначала разрабатывается алгоритм действий, а потом он записывается на одном из таких языков. В итоге получается текст программы - полное, законченное и детальное описание алгоритма на языке программирования. Затем этот текст программы специальными служебными приложениями, которые называются трансляторами, либо переводится в машинный код (язык нулей и единиц), либо исполняется.
Специалисты, профессионально занимающиеся программированием, называются программистами. В первые годы существования ЭВМ для использования компьютера в любой области нужно было уметь программировать. В 1970-х - 80-х годах XX века начинает развиваться прикладное программное обеспечение. Бурное распространение прикладного ПО произошло с появлением персональных компьютеров. Стало совсем не обязательным уметь программировать для того, чтобы воспользоваться компьютером. Люди, работающие на компьютерах, разделились на пользователей и программистов. В настоящее время пользователей гораздо больше, чем программистов.
Может возникнуть впечатление, что программисты теперь уже не нужны! Но кто же тогда будет создавать все операционные системы, редакторы, графические пакеты, компьютерные игры и многое другое? Программисты, безусловно, нужны, причем задачи, которые им приходится решать, со временем становится все сложнее.
Программирование принято разделять на системное и прикладное. Системные программисты занимаются разработкой системного программного обеспечения: операционных систем, утилит и пр., а также систем программирования. Прикладные программисты создают прикладные программы: редакторы, табличные процессоры, игры, обучающие программы и многие другие. Спрос на высококвалифицированных программистов, как системных, так и прикладных очень большой.
Для составления программ существуют разнообразные языки программирования.
Язык программирования – это фиксированная система обозначений для описания алгоритмов и структур данных.
Языки программирования - искусственные языки. От естественных они отличаются ограниченным числом "слов", значение которых понятно транслятору, и очень строгими правилами записи команд (операторов). Транслятор — средство для преобразования текстов из одного языка, понятного человеку, в другой язык, понятный компьютеру.
Популярными языками программирования сегодня являются Паскаль, Бэйсик, Си и др.
Для создания и исполнения на компьютере программы написанной на языке программирования, используются системы программирования.
Система программирования – это программное обеспечение компьютера, предназначенное для разработки, отладки и исполнения программ, записанных на определенном языке программирования.
Существуют системы программирования на Паскале, Бэйсике и других языках.
На заре компьютерной эры, в 50-е годы XX века, программы писались на машинном языке и представляли собой очень длинные последовательности нулей и единиц. Составление и отладка таких программ было чрезвычайно трудоемким делом.
В 60—70-е годы для облегчения труда программистов начали создаваться языки программирования высокого уровня, формальные языки, кодирующие алгоритмы в
стр. 50
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
привычном для человека виде (в виде предложений). Такие языки программирования строились на основе использования определенного алфавита и строгих правил построения предложений (синтаксиса).
Наиболее широко распространенным типом языков программирования высокого уровня являются процедурные языки. В таких языках широко используются управляющие конструкции (операторы), которые позволяют закодировать различные алгоритмические структуры (линейную, ветвление, цикл).
Одним из первых процедурных языков программирования был известный всем Бэйсик (Basic), созданный в 1964 году. В течение последующего времени Бэйсик развивался, появлялись его различные версии (MSX-Basic, Бэйсик-Агат, QBasic и др.). Другим широко распространенным языком программирования алгоритмического типа является Pascal.
Первая версия языка Паскаль была разработана швейцарским ученым Никлаусом Виртом в 1968 году. Первоначально язык предназначался для целей обучения, поскольку он является достаточно детерминированным, т.е. все подчиняется определенным правилам, исключений из которых не так много. Основные характеристики: относительно небольшое количество базовых понятий, простой синтаксис, быстрый компилятор для перевода исходных текстов в машинный код. В 1992 г. фирма Borland International выпустила два пакета, основанных на языке Паскаль: Borland Pascal 7.0 и Turbo Pascal 7.0.
Благодаря языкам программирования высокого уровня, программы больше напоминают инструкции, обращенные к человеку, нежели к машине. Однако следует иметь в виду, что в языках программирования не допускаются даже незначительные (с точки зрения человека) нарушения в правилах написания программ. Ведь даже маленькая неточность может вызвать невыполнимость программы или трудно уловимую ошибку.
Рассмотрим несколько простых примеров на языке программирования Паскаль.
Пример 1. Программа с линейной структурой. Для примера составим программу вычисления периметра треугольника.
program perim; {вычисление периметра треугольника} var a,b,c,p:integer;
begin readln(a,b,c); p:=a+b+c; write(p); end.
Для удобства пользователя можно улучшить эту программу так:
program perim; {вычисление периметра треугольника} var a,b,c,p:integer;
begin
write('Введите стороны треугольника:'); readln(a,b,c);
p:=a+b+c;
write('Периметр равен =',p); end.
Пример 2. Программа с ветвящейся структурой. Для примера составим программу вычисления большего из двух чисел.
program bid; {большее из двух чисел} var a,b,c:integer;
begin readln(a,b);
if a>b then c := a else c := b; write(c);
end.
стр. 51
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Пример 3. Программа с циклической структурой. Для примера составим программу вычисления факториала. Факториал числа это произведение последовательности чисел от 1 до этого числа. N! = 1*2*...*N.
Сначала составим программу, используя циклы со счетчиком. Произведение уже умноженных чисел будем хранить в переменной f, начальное значение которой равно 1.
program faktorial; {вычисление факториала} var n,f,i:integer;
begin readln(n); f:=1;
for i:=1 to n do f:=f*i; write(f);
end.
Теперь составим программу, используя циклы с предусловием. В данном случаи переменная r выполняет роль множителя, значение которого меняется от 1 до n. В теле цикла сначала вычислим очередное произведение, затем увеличим r на единицу.
program faktorial; {вычисление факториала} var n,r,f:integer;
begin readln(n); f:=1; r:=1;
while r<=n do begin f:=f*r; r:=r+1; end; write(f); end.
Рассмотрим несколько простых примеров на языке программирования QBasic.
Пример 1. Программа с линейной структурой. Для примера составим программу вычисления периметра треугольника.
REM вычисление периметра треугольника
DIM a, b, c, p AS INTEGER
INPUT "Введите стороны треугольника", a, b, c p = a + b + c
PRINT "Периметр равен", p
END
Команду описания переменных DIM a, b, c, p AS INTEGER на QBasic можно не использовать, в этом случае компьютер будет считать переменные типа variant.
Пример 2. Программа с ветвящейся структурой. Для примера составим программу вычисления большего из двух чисел.
REM большее из двух чисел
DIM a, b, c AS INTEGER
INPUT "Введите два числа", a, b
IF a > b THEN c = a
ELSE c = b END IF
PRINT "Большее число =", c
END
Пример 3. Программа с циклической структурой. Для примера составим программу вычисления факториала. Факториал числа это произведение последовательности чисел от 1
стр. 52
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
до этого числа. N! = 1*2*...*N.
Сначала составим программу, используя циклы со счетчиком. Произведение уже умноженных чисел будем хранить в переменной f, начальное значение которой равно 1.
REM вычисление факториала
DIM n, f, i AS INTEGER
INPUT "Введите число", n f = 1
FOR i = 1 TO n f = f * i NEXT
PRINT "факториал =", f
END
Теперь составим программу, используя циклы с предусловием. В данном случаи переменная r выполняет роль множителя, значение которого меняется от 1 до n. В теле цикла сначала вычислим очередное произведение, затем увеличим r на единицу.
REM вычисление факториала
DIM n, f, r i AS INTEGER
INPUT "Введите число", n f = 1
r = 1
DO WHILE r <= n f = f * r
r = r + 1 LOOP
PRINT "факториал =", f
END