Разработка простейших программ




 

Цель: научиться использовать стандартные функции и операции над числовыми данными при разработке линейных программ.

 

Фундаментальным понятием в любом языке программирования высокого уровня является понятие типа данных.

Все типы данных разделяются на простые (скалярные) и структурные (составные).

Простой тип — это тип данных, значения которых не содержат составных частей (компонентов).

Простые типы — базовые, на их основе строятся более сложные типы.

 

Integer — целый тип. Диапазон значений от –32 768 до 32 767.

Над целыми переменными типа integer можно проводить арифметические операции +, -, *, /, div (деление нацело), mod (вычисление остатка от целочисленного деления). Определены операции отношения: =, <>, >, <, >=, <=, вырабатывающие результат булевского типа. С аргументом целого типа можно использовать следующие стандартные функции.

Имя функции Значение Тип результата
Sin (x) Sin x Real
Cos (x) Cos x Real
Ln (x) Ln x Real
Sqrt (x) √х Real
Arctan (x) Arctg x Real
Exp (x) ех Real
Sqr (x) х2 Integer
abs (x) │x│ Integer
Odd(x) для четного аргумента значение функции False, для нечетного — True. Boolean
Succ(x) Следующее целое число. Integer
Pred(x) Предыдущее целое число. Integer

Real — вещественный (действительный) тип. Данные этого типа могут иметь две формы записи: с фиксированной точкой и с плавающей точкой (для значений с десятичным порядком). Числас фиксированной точкой записываются в виде целой и дробной частей числа, разделенных десятичной точкой. Например, 1.23, 12.56. Числа с плавающей точкой используются для записи чисел, изменяющихся в широком диапазоне значений (от очень маленьких до очень больших). Например, 1.23Е000, 1.256Е001, -1.6Е4. Диапазон значений от 2.9*10-39 до 1.7*1038. Над переменными вещественного типа определены арифметические операции +, -, *, / и операции отношения. С аргументом вещественного типа могут использоваться стандартные арифметические функции (смотри функции целого аргумента, кроме функций Odd, Pred, Succ). Все они вырабатывают результат вещественного типа. Кроме них, существуют стандартные функции преобразования значения вещественного типа в значение целого типа: Trunc (х) — отбрасывание у значения вещественной переменной x дробной части; Round (х) — округление значения вещественной переменной х до ближайшего целого.

 

Примеры.

Значение х Trunc(х) Round(х)
21.53    
-2.7 -2 -2
-2.2 -3 -2

Boolean — логический тип. Данные этого типа могут принимать только два значения: True (истинно) и False (ложно).

Над переменными определены три логические операции:

- and — конъюнкция (логическое умножение);

- or — дизъюнкция (логическое сложение);

- not — отрицание.

Булевский тип определен так, что False < True. Таким образом, данным булевского типа можно применять операции отношения. Определены следующие значения стандартных функций:

- Ord(True)= 1;

- Ord(False)= 0;

- Succ(False)= True;

- Pred(True)= False.

Char — данные символьного (литерного) типа могут принимать значение только одного символа, имеющегося в наборе данной ЭВМ.

Существуют две стандартные, обратные по отношению друг к другу, функции преобразования:

- Ord (S) — возвращает порядковый номер символа S в упорядоченном множестве символов;

- Chr (I) возвращает символ, стоящий под номером I, в упорядоченном множестве символов.

Пример. Ord ('A')=65, Chr (65)= 'A'.

Справедливы следующие формулы:

Chr(Ord (S))= S, Ord(Chr (I))= I.

Над переменными символьного типа определены операции отношения. Пусть С1 и С2 — переменные символьного типа. Отношение С1<С2 истинно тогда и только тогда, когда Ord(С1) < Ord(C2).

К аргументам символьного типа применимы стандартные функции:

- Pred (S) — возвращает предыдущий символ;

- Succ (S) — возвращает следующий символ.

Пример. Succ ('A') = 'B', Pred ('B')= 'A'.

Справедливы равенства:

Pred (S)= Chr(Ord (S)-1), Succ (S)= Chr(Ord (S)+1).

Выражения в языке Паскаль. Выражения в языке Паскаль конструируются из констант, перемененных, имен функций, знаков операций и круглых скобок (). Значения выражений вычисляются с учетом расставленных скобок и старшинства операций. Действия, встречающиеся в выражениях, выполняются в следующем порядке:

1) not;

2) *, /, mod, div, and;

3) +, -, or;

4) <, <=, >, >=, <>, =.

Операции одного достоинства выполняются слева направо.

При выполнении арифметических операций над величинами типов Real и Integer вырабатывается результат типа Real.

Пример. Пусть Var NI, KL: integer; TER, X: Real; S: Char. Найдем значение выражения (TER - Ln(x) > 2.5 * KL) and (Ord(S) < NI).

Обозначим отдельно выполняемое действие через Ai. Результаты при выполнении действий рассматриваемого выражения примут следующие типы:

1. A1:= Ln(x) Real
2. A2:= 2.5 * KL Real
3. A3:= TER - A1 Real
4. A4:= A3 > A2 Boolean
5. A5:= Ord(S) Integer
6. A6:= A5< NI Boolean
7. A7:= A4 and A6 Boolean

Операторы языка Паскаль

1. Составной оператор. Объединение нескольких операторов в одну группу называется составным оператором. Форма записи данного оператора: Begin [ список операторов] end, где операторы в списке операторов разделяются точкой с запятой (;). После Begin и перед end точка с запятой не ставится. В этой конструкции служебные слова Begin и end называются операторными скобками.

2.Оператор присваивания. С помощью этого оператора переменной или функции присваивается значение выражения. Форма записи: переменная:= выражение. Например, В:=60; А:=Sqrt(X). Переменная и выражение должны иметь одинаковый тип (исключение: тип переменной Real, тип выражения Integer).

Примечание. Нельзя с помощью одного оператора присваивать одно значение разным переменным. Запись правильная: i:=0;K:=0;j:=0. Запись не правильная: i,K,j:= 0.

3. Пустой оператор. Оператор, не выполняющий никакого действия, называется пустым оператором. Пустому оператору соответствует отсутствие записи на том месте, где по правилам должен быть какой-нибудь оператор. В этом случае ставится символ точки с запятой (;). Например, А:=4; В:=6;; С:=В+А.

4. Процедуры стандартного ввода и вывода данных. Процедуры ввода обеспечивают программу исходными данными, необходимыми для решения задачи, а процедуры вывода осуществляют вывод результатов решения. Поэтому практически любая программа содержит эти процедуры.

Для стандартного ввода данных используются встроенные процедуры: Read [(список_имен_переменных)] и ReadLn [(список_имен_переменных)], — где список_имен_переменных состоит из имен переменных, которые разделяются запятой.

Процедуры стандартного ввода вызывает приостановку программы, переключение на экран пользователя и ожидание ввода значений из предопределенного текстового файла с именем InPut, который по умолчанию связан с клавиатурой. После набора всех вводимых значений и нажатия клавиши Enter происходит переключение на программу, и она продолжает свою работу. При вводе значений необходимо согласовывать типы вводимых значений с типами соответствующих переменных из списка переменных. Переменные, упоминаемые в списке имен переменных, могут быть типа Real, Integer, Char. Ввод переменных логического типа при помощи стандартных процедур не допустим. Значения переменных числовых типов, имена которых упоминаются в списке переменных оператора ввода, при вводе разделяются пробелом или нажатием клавиши Enter, а значения символьного типа вводятся без разделителей.

Пример. Пусть переменные CH1, CH2, CH3 типа Char. Тогда если записан оператор ReadLn(CH1, CH2, CH3), то пользователь вводит (без каких-либо) разделителей три символа, которые должны быть присвоены в качестве значений переменным CH1, CH2, CH3 и нажимает в конце клавишу Enter. В результате первый символ будет присвоен переменной CH1, второй — CH2, третий — CH3.

 

Стандартный вывод выполняется в предопределенный текстовый файл с именем OutPut, который по умолчанию связан с дисплеем. Для стандартного вывода информации используется встроенные процедуры: Write [(список_выражений)] и WriteLn [(список_выражений)], — где список_выражений состоит из выражений (в частном случае, переменных и констант), разделенных запятой. Процедуры вывода позволяют выводить значения выражений (в том числе и переменных) типа Real, Integer, Char, Boolean и строковые константы. Окончание имени Ln означает, что после ввода или вывода курсор переходит в начало следующей строки, иначе он остается справа от выведенного значения.

Примеры различной организации вывода значений переменных А,В,С, при А=50, В=100, С=150:

1) Write(A,B,C); Результат на экране: 50100150

2) WriteLn(A,' ',B,' ',C); Результат на экране: 50 100 150

3) WriteLn('Значение переменной А=',A);

WriteLn('Значение переменной В=',В);

WriteLn('Значение переменной С=',С); Результат на экране:

Значение переменной А=50

Значение переменной В=100

Значение переменной С=150

Помимо стандартного формата вывода данных, который определен по умолчанию для данных стандартных типов, можно задавать свой формат вывода для каждого данного, путем указания ширины поля вывода и точности представления для вещественных чисел. Для организации форматного вывода на экран значений переменных в языке Паскаль существуют следующие средствами управления печатью. Для этого элементы списка выражений процедуры вывода должны иметь вид: выражение [:ширина_поля[:точность]], где ширина поля — это выражение целого типа, определяющее ширину поля вывода; точность — это выражение целого типа, определяющее точность представления вещественного числа (точность используется только при выводе значений выражений вещественного типа).

Ширина поля вывода— целая величина, указываемая через двоеточие после соответствующего выражения в операторе вывода, определяющая, сколько позиций приходится на вывод значения данного выражения. При этом выводящиеся значения центрируются по правому краю, а слева значения дополняются пробелами до ширины поля;

Точность представления вещественного числа — целая величина, указываемая через двоеточие после ширины поля, которая задает, сколько десятичных знаков выводить после десятичной точки у значения выражения вещественного типа. Если точность указана, то вещественное число выводится на экран в формате с фиксированной запятой, в противном случае — в формате с плавающей запятой (в экспоненциальной форме).


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

Program Format_OutPut; {программа иллюстрирующая вывод данных}

Var R, S: Real; { описание переменных }

I, J: Integer;

C, D: Char;

B: Boolean;

Begin

B:=False;

Write(‘Ввести сначала два символа, затем вещественные и

целые числа: ’);

Read (C, D);

ReadLn(R, S, I, J,);

 

WriteLn(‘Вывод вещественных чисел в стандартном формате’);

WriteLn (R, S);

WriteLn(‘Форматный вывод вещественных чисел с шириной поля 7, и точностью 2’);

WriteLn (' R= ', R:7:2, ' и S= ', S:7:2);

WriteLn(‘Форматный вывод вещественных чисел с шириной поля 10, и точностью 1’);

WriteLn (' R= ', R:10:1, ' и S= ', S:10:1);

WriteLn(‘Вывод целых чисел в стандартном формате’);

WriteLn (I, J);

WriteLn(‘Форматный вывод целых чисел с шириной поля 10’);

WriteLn (' I= ', I:10, ' и J= ', J:10);

WriteLn(‘Форматный вывод целых чисел с шириной поля 4’);

WriteLn (' I= ', I:4, ' и J= ', J:4);

WriteLn(‘Вывод символов в стандартном формате’);

WriteLn (С, D);

WriteLn(‘Форматный вывод символов с шириной поля 2’);

WriteLn (' C= ', C:2, ' и D= ', D:2);

WriteLn(‘Форматный вывод значения булевской переменной с шириной поля 10’);

WriteLn (' B= ', B:10)

end.

 

Задача 2. Составить программу вычисления площади треугольника по формуле Герона по трем сторонам a,b,c.

 

Program Pl1;

Var a,b,c, p, s: Real;

Begin

Writeln('Вычисление площади треугольника');

Write('Введите длины сторон треугольника: ');

Readln(a,b,c);

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

writeln('S = ',s:8:4)

End.

 

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

 

Program pl2;

Var a,b: Real;

L: Boolean;

Begin

Writeln('Проверка A < B');

Write('Введите два числа: ');

Readln(a,b);

L:=a<b; { a<b - это высказывание, которое может быть}

{ истинно или ложно в зависимости от значений a,b}

Writeln(a:1:0,' < ',b:1:0,' = ',L)

End.

 

 

Задача 4. Составим программу вычисления значения выражения.

Program Prog01;

Const g=9.8;

Var x,y: Real;

Begin

Write('X = ');

Readln(x);

y:=(Sin(x)+Sqrt(5))/Sqr(1-Cos(x));

Writeln('Y = ',y:8:3)

End.

 

Задача 5. Составим программу вычисления значения выражения.

 

Program Prog02;

Var x,z: Real;

y: Integer;

Begin

Write('X = '); ReadLn(x);

Write('Z = '); ReadLn(z);

y:=Trunc((Ln(Abs(x)/Ln(10)-Abs(x))/ArcTg(z));

Write('Y = ',y:8:3);

End.

 

 

Задание:

 

1. Проверить программы из текста работы.

2. Выполнить задания из списка заданий для самостоятельного решения.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-13 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: