русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ВЕТВЛЕНИЯ


Дата добавления: 2014-11-28; просмотров: 2562; Нарушение авторских прав


1. Составная команда. Составная команда — это конструкция такого вида:

Begin

<команда 1>;

<команда n>;

end;

Составную команду компилятор рассматривает как одну команду. На это свойство следует обратить особое внимание.

Замечание. Запись begin end; или ;; называется пустой командой.

В дальнейшем под командой будем понимать пустую, простую или составную команду.

2. Логическое выражение - это способ записи на языке программирования условий для поиска необходимых данных. Логическое выражение может принимать значения true (истина) или false (ложь). Логические выражения бывают простые и сложные. Простое выражение - это два арифметических выражения, соединенных символом отношения, а сложное — это простые логические выражения, соединенные логическими операциями not, and или or. Приоритет выполнения логических операций такой:

1) not, 2) and, 3) or.

Ниже приведены определения логических операций.

Выражение   Значение   Выражение   Значение  
not true   false   not false   true  
true and true   true   true or true   true  
true and false   false   false or true   true  
false and true   false   true or false   true  
false and false   false   false or false   false  

Пример. Пусть х = 3, у = -9. Рассмотрим некоторые логические выражения и их значения.

Простые выражения   Значения   Сложные выражения   Значения  
х = 3   true   not (у <= -50)   true  
х > у   true   (1 < х) and (x < 5)   true  
7 mod 3 = 1   true   (х > 4) or (у < -15)   false  
у div 2 = 4   false   (х > 4) ог (у > -15)   true  

 



Двойное неравенство 1 < х < 5 как сложное логическое выражение записывают так: (1 < х) and(х < 5). Совокупность неравенств вида х < 1; х > 5 так: (х < 1)ог(х > 5). Простые логические выражения, из которых состоят сложные, всегда берут в круглые скобки.

3. Команда ветвления if.Команду ветвления if иначе называют условной командой. Она имеет две формы: полную и короткую.

Полная форма команды ветвления выглядит так:

 

if <логическое выражение>then<команда 1>

else<команда 2>;

 

Действие команды. Если логическое выражение истинно, то выполняется команда 1, в противном случае - команда 2. Команды 1 и 2 могут быть простыми или составными.

Пример. Пусть х = 9. Тогда в результате выполнения команд

ifх > 7thenу := х * xelseу := sin(x);

ifх < 5then z :=exp(x) elsez := sqrt(x);

получим у = 81, z = 3.

Пример. Пусть а = 5. Тогда в результате выполнения команд

ifa < 7 then

Begin

b := а- 2;

с := 1 + 2 * а

End

Else

Begin

b := 2 + 5* a;

с := 12 - 4 * (a - 3)

end;

получим b = 3, с = 11.

Задание 1. Вычислите значения b и с, если а = 8.

Задача 1. Вычислить и вывести значения сложной функции у в некоторой заданной пользователем точке х, если

programMyfunction;

usesCrt;

var х, у : real;

Begin

clrscr;

writeln('Введите х');

readln(x);

ifx < -1thenу := ln(abs(x)) else

if(x >= -1)and(x < 1)thenу := sin(x)

elseу := cos(x);

writeln('x =', x:5:2, ' у =', y:5:2); readln

End.

Замечание. В команде ifперед служебным словом elseсимвол «;» не ставится.

Задание 2. Решить задачу № За своего варианта. Задание 3. Решить задачу № 36 своего варианта.

Короткая форма команды ветвления ifвыглядит так:

 

if<логическое выражение> then<команда 1>;

 

Действие команды. Если логическое выражение истинно, то выполняется команда 1, иначе выполняется команда, которая находится после данной конструкции.

Пример. Пусть х = 25. Тогда в результате выполнения команд

ifх > 12thenу := 2 * х; z := 10;

ifх < 5thenz := 10 + х / 2;

получим у = 50, z = 10.

Задание 4. Решить задачу № 36 своего варианта, используя короткую форму команды ветвления.

4. Команда goto.Команда goto— это команда безусловного перехода. Она предназначена для изменения последовательности выполнения команд в программе путём передачи управления некоторой команде с меткой. Команда имеет вид

 

goto<метка>;

 

Метка может стоять перед любой командой в программе. Она отделяется от команды двоеточием (:)

<метка> : <команда>;

Метки нужно заранее объявить в разделе label:

 

label<список меток>;

 

Метка может быть идентификатором или числом от 0 до 9999.

Задача 2. Ввести несколько вариантов значений коэффициентов квадратного уравнения ах2 + Ьх + с = 0, а ¹ 0. Вывести сообщение о наличии действительных корней для каждого варианта.

programUravnenia;

usesCrt;

label99, finish;

var a, b, c, d, х, у : real;

Begin

clrscr;

99: writeln('BBeflHTe коэффициенты квадратного уравнения');

readln(a, b, с);

if a = 0 then gotofinish;

d:=b*b-4*a*c;

ifd >=0 thenwriteln('Данное уравнение имеет действительные корни')

Else

Begin

writeln('Данные введены некорректно');

writeln( "Уравнение действительных решений не имеет');

goto99;

end;

finish: readln

End.

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

5. Команда выбора case.Команда выбора case выглядит так:

case<выражение> of

<список значений 1> : <команда 1>;

<список значений n> : <команда n>

else<команда n+1>

end;

где выражение — это простая переменная целого, символьного, перечислимого или логического типов; списки значений - константы или диапазоны, тип которых должен совпадать с типом выражения. Если список значений состоит из нескольких элементов, то они перечисляются через запятую. Составную часть else<команда n+1> можно не писать, тогда получаем короткую форму команды case.

Действие команды. Если значение выражения совпадает с некоторым значением из i-гo списка, то выполняется команда с номером i, а другие команды этой конструкции не выполняются. Если значение выражения не совпадает ни с одним значением из любого списка, то выполняется команда n+1. В случае короткой формы - следующая команда после команды case.

Задача 3. Пусть населенные пункты обозначены номерами от 1 до 8. Стоимость одного билета к пункту k определяется так:

Сколько стоит m билетов к населенному пункту, номер которого пользователь должен ввести с клавиатуры?

program Bilety;

uses Crt;

var k, m, cena : integer;

Begin

clrscr;

wгitе1n('Введите номер пункта и количество билетов:');

readln(k, m);

case k of

1 : cena:=22;

2..4 : cena:=25;

5,6 : cena:=30

else cena:=35

end;

write(m, ' билетов к пункту ', k, стоят ');

writeln(m * cena);

readln

End.

Если во время выполнения программы данные ввести так: 3 5,то на экране получим:

5 билетов к пункту 3 стоят 125.

Задание 5. Решить задачу № 4 своего варианта.

ЦИКЛЫ

Цикл - это выполнение определенного набора команд некоторое количество раз. Цикл реализуют при помощи конструкции if-gotoили, что значительно эффективнее, при помощи специальных команд цикла. Различают три вида команд циклов: с параметром, с предусловием и с послеусловием.

1. Команда цикла с параметром (for).В языке программирования Паскаль есть два вида команды for. Рассмотрим первый:

 

for<параметр> := <выражение 1> to <выражение 2> do<команда 1>;

 

где параметр - это переменная целого, символьного, логического или перечислимого типов, а выражения 1 и 2 задают начальное и конечное значения параметра.

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

Пример. Пусть s = 0. После выполнения команды

for i := 4 to 6 do begin s := s + i; z := 2 * i end;

переменная s получит значение 0+4+5+6=15, а переменная z -12.

 

Рассмотрим второй вид команды цикла for:

 

for <параметр> := <выражение 1> downto<выражение 2> do <команда 1>;

 

Эта команда действует, как и предыдущая, но шаг изменения параметра равен -1.

Пример. Пусть s = 0. После выполнения команды

fori := 6downto4do begins := s + i; z := 2 * iend;

значение переменной s будет равно 0 + 6 + 5 + 4 = 15, а переменной z - 8.

Замечание. Значение параметра в середине цикла изменять нельзя.

Задача 1. Составить таблицу соответствия между унциями и граммами для нескольких значений унций. Известно, что 1 унция = 28,353495 г. Начальное значение количества унций (uncia), шаг изменения (h) этого значения и количество значений (k) задать самостоятельно в режиме диалога.

programMera;

usesCrt;

constline = '———————————';

var uncia, grammy, h : real;

i, k : integer;

Begin

clrscr;

write('Введите начальное значение, шаг изменения');

writeln(' и количество значений - строк в таблице');

readln(uncia, h, k);

writeln; {Формируем пустую строку}

writeln(line); {Формируем заголовок таблицы}

writeln('Унции Граммы');

writeln(line);

for i := 1 to k do {Выводим таблицу на экран}

Begin

grammy:=28.353495 * uncia;

writeln(uncia:5:2, ' ', grammy:10:6);

uncia := uncia + h;

end;

writeln(line);

readln

End.

Задание 1. Решить задачу № 5 своего варианта.

Задача 2. Вычислить значение выражения, состоящее из суммы и произведения

programSummaProisved;

usesCrt;

vari : integer;

summa, prod, у : real;

fact : longint;

Begin

{Сначала сумма равна нулю, а произведение (prod) единице}

clrscr;

summa := 0;

prod := 1;

fact := 1;

for i := 1 to 25 do

Begin

fact := fact * i; {Вычисляем il = 1 * 2 * 3 * ... * i}

summa := summa + 5 * sqr(i) / fact; {Вычисляем сумму}

prod := prod * i * i; {Вычисляем произведение}

end;

у := summa + prod;

writeln('y = ', y:7:2);

readln

End.

Задание 2. Решить задачу № 6 своего варианта двумя способами: 1) с помощью команды for-to;2) с помощью команды for-downto.

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

2. Команда цикла с предусловием (while).Команда while выглядит так:

while<логическое выражение> do<команда 1>;

 

Действие команды. Пока значение логического выражения истинно, выполняется команда 1. Истинное логическое выражение определяет условие продолжения цикла.

Пример. Пусть переменные х, s равны х = 4, s = 0. После выполнения команды

whileх <= 8 do begins := s + х; х := х + 1end;

они получат значения s = 4 + 5 + 6 + 7 + 8 = 30, х = 9.

Пример. Вывести на экран таблицу чисел от 20 до 30, их квадраты и кубы, используя команду while,можно так:

i := 20;

whilei <= 30do

Begin

writeln(i:4, i * i:6, i * i * i:8);

i := i + 1

end;

Пример. Определить действительное положительное число а, для которого выполняется соотношение а/2 = 0 в компьютерной арифметике действительных чисел. Заметим, что такое число является значением нижней положительной границы типа данных real.

programMinRealNumber;

uses Crt;

var a : real;

Begin

clrscr;

a:=l;

whilea / 2 > 0doa := a / 2;

writeln('a =', а) {Ответ: а = 2.9Е-39};

readln

End.

Задача З. Табулирование функции. Составить таблицу значений аргумента х и функции у = sin(x) на отрезке [0; 3,1] с шагом h = 0,1. Вычислить среднее арифметическое (s1) значений функции больших, чем 0,1, и меньших, чем 0,6.

programFindSrednee;

usesCrt;

var х, у, s, si, h, xk : real;

n : integer;

Begin

clrscr;

x :=0;

xk := 3.1;

h := 0.1;

s :== 0;

n := 0;

whilex <= xk + h / 2do

(Слагаемое h / 2 обеспечивает включение последней точки xk в таблицу]

Begin

у :== sin(x) ;

writeln(x:3:l, y:6:2);

if(y > 0.1) and(y<0.6) then

Begin

s := s + y;

n := n + 1

end;

x := x + h ;

end;

ifn > 0then

Begin

si := s / n;

writeln ('Среднее =', si)

End

elsewriteln('Таких значений нет п=0');

readln

End.

Задача 4. Пусть х - некоторое число, а е = 0.001. Вычислить сумму элементов бесконечно убывающей знакопеременной последовательности {аn}, где аn = (-l)n(2x)n/n!, удовлетворяющих условию |аn| > е, n = 1,2,... Определить количество слагаемых. Вывести на экран результаты вычислений.

programSummal;

usesCrt;

conste, = 0.001;

varsumma, x, a : real;

fact, n, z : integer;

Begin

clrscr;

writeln('Bведите число x:');

readln(x);

summa := 0;

n:-l;

fact := 1;

a :- -2 * x;

z :- -1;

whileabs(a) >edo

Begin

summa := summa + a;

n := n + 1; (Вычисляем а„+1}

z := -z; (Вычисляем (-1)"+1}

fact := fact * n; {Вычисляем факториал}

a := z * exp(n * ln(2 * x)) / fact (См. замечание)

end;

writeln('Сумма =', summa:5:2);

writeln('Количество слагаемых =', n-1);

readln

End.

Замечание. Существует более экономный способ вычисления значения переменной а (элемента именно данной последовательности), используя предыдущее значение и команду присваивания вида а := а * М, где для данного примера М = -х / (n + 1). Реализуйте этот способ самостоятельно.

Задание 3. Решите задачу № 7 своего варианта тремя способами: 1) используя программу-пример Summal; 2) модифицируя программу, учитывая замечание (это будет программа Summa2); 3) модифицируя программу-пример при помощи следующей конструкции для вычисления знакопеременной суммы:

if odd(n) then summa := summa — a else summa := summa + a

(это будет программа SummaS). Сравните результаты. Сохраните файлы программ, поскольку они будут нужны для выполнения задания № 5 из § 8.

 

3. Команда цикла с послеусловием (repeat). Команда repeat имеет вид

repeat <команды> until <логическое выражение>;

 

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

Пример. Пусть переменные х, у имеют значения х = 5, у = 0. В результате выполнения команды

Repeat

у := у + х;

z := 2 * х;

х := х - 2

untilх <= 1;

переменные у, z, x получат значения у = 0 + 5 + 3 = 8, z = 6, х = 1.

Задача 5. Протабулировать функцию у = sin(x) на отрезке [-p,p] с шагом h = p/5. Результаты вычислений вывести на экран в виде таблицы. Найти максимальное (max) и минимальное (min) значения функции на этом отрезке.

Максимальное или минимальное значения функции или значение, удовлетворяющее некоторому условию поиска, определяют методом сканирования (перебора, просмотра) всех подряд значений функции и их сравнения с некоторым эталоном.

programTabulfuncii;

usesCrt;

var h, x, y, max, min : real;

Begin

clrscr;

h := pi / 5;

x := -pi;

max := sin(x); (Предполагаем, что max и min}

min := sin(x); (достигаются в первой точке]

writeln(' x у');

Repeat

у := sin(x);

writeln(x:7:2, y:7:2);

if у > max then max := у;(Определяем максимум функции]

if у < min then max := у; (Определяем минимум функции]

x := x + h; (Увеличиваем х на h}

untilx > pi + h / 2;(Проверяем условие выхода из цикла]

writeln('max =', max:5:2, ' min =', min:5:2);

readln

End.

Замечание. Чтобы кроме этого определить значение аргумента (хmах), при котором функция достигает, например, максимального значения, условную команду следует использовать так:

xmax := -pi;



<== предыдущая лекция | следующая лекция ==>
ПРОСТЫЕ ПРОГРАММЫ | МАССИВЫ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.062 сек.