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

Автор работы: Пользователь скрыл имя, 01 Мая 2014 в 10:17, лекция

Краткое описание

Основные типы переменных, используемые в Паскале:
Integer – целый тип. Переменные этого типа могут хранить целые числа в диапазоне от −2147483648 до 2147483647 (это −231 и 231−1).
Real – вещественный тип. Так называемые числа с плавающей точкой. Может быть обычной десятичной дробью (например, 1234.543), но может также содержать порядок – символ «е» и какое-либо число за ним, например, 1.2345е3. Такая запись означает, что число 1.2345 нужно умножить на 103. Максимальное количество цифр в числе 15, порядок может быть в диапазоне от −308 до 308.
Char – символьный тип. Значением этой переменной может быть одиночный символ – буква латинского алфавита (большие и малые буквы здесь различаются), цифра или какой-либо из специальных символов.
String – строка. Значения — наборы символов.
Boolean – логический тип. Переменная может принимать два значения: true (истина) и false (ложь). Такие значения могут быть, например, у логических выражений наподобие «x>2». Если Истинно, что x>2, то выражение принимает значение true иначе значение false.

Прикрепленные файлы: 1 файл

Языковое программирование.docx

— 212.81 Кб (Скачать документ)

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

Основные типы переменных, используемые в Паскале:

Integer – целый тип. Переменные этого типа могут хранить целые числа в диапазоне от −2147483648 до 2147483647 (это −231 и 231−1).

Real – вещественный тип. Так называемые числа с плавающей точкой. Может быть обычной десятичной дробью (например, 1234.543), но может также содержать порядок – символ «е» и какое-либо число за ним, например, 1.2345е3. Такая запись означает, что число 1.2345 нужно умножить на 103. Максимальное количество цифр в числе 15, порядок может быть в диапазоне от −308 до 308.

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

String – строка. Значения — наборы символов.

Boolean – логический тип. Переменная может принимать два значения: true (истина) и false (ложь). Такие значения могут быть, например, у логических выражений наподобие «x>2». Если Истинно, что x>2, то выражение принимает значение true иначе значение false.

Чтобы указать тип переменной в Паскале нужно написать ключевое слово var, затем написать имя переменной, двоеточие и тип. Например:

1

2

3

4

5

var

x: integer;

y, z: real;

a22: char;

b_b: string;


 

Задание типа в Паскале называется описанием переменной. Отдельные описания разделяются символом точка с запятой. Если необходимо несколько переменных одного типа, их можно писать через запятую

Операторы

Всякая программа представляет собой последовательность команд или инструкций. Элементарные команды, из которых конструируются более сложные, называются операторами.

Одно из самых фундаментальных действий, которые можно сделать с переменной это присваивание значения. Соответствующая инструкция имеет вид:

x:=2;


 

Символ «:=» (двоеточие и равно) называется оператором присваивания. Слева от оператора должна стоять переменная, справа выражение, значение которого имеет тот же тип, что и переменная. 
Примеры неправильного использования оператора присваивания:

x:=2.5; {переменной x целого  типа присваивается            

нецелое значение}  

x:=y;   {переменной целого типа присваивается            

значение переменной вещественного типа}


 

Однако инструкция y:=x; допустима, так как целые числа являются подмножеством вещественных. 
Чтобы присвоить значения переменным символьного и строкового типа, соответствующий символ или строку надо взять в одинарные кавычки:

a22:='x';  

b_b:='Hello, world!';


 

Отдельные инструкции в Паскале (а каждое присваивание является отдельной инструкцией) разделяются символом точка с запятой.

Арифметические операторы: +, — , *, /, div, mod. Первые четыре обычные операции сложения, вычитания, умножения, деления. div – взятие целой части от деления двух целых чисел, mod – взятие остатка от деления двух целых чисел. Результат работы этих операторов может быть присвоен переменной:

x:=2*2;  

y:=(2+x)/5;


 

Следует помнить, что оператор деления «/» в Паскале всегда дает результат в виде вещественного числа и не может быть присвоен переменной целого типа. То есть например, недопустима инструкция:

x:=4/2;


 

Вместо этого следует писать

x:=4 div 2;


 

Сама переменная, которой присваивается значение, может использоваться в выражении стоящем справа от оператора присваивания. Допустимы, например, следующие инструкции:

x:=x+1;   {увеличивает значение переменной x на 1}  

x:=2*x*x;


 

Стандартные функции

Кроме арифметических операторов в выражениях могут участвовать функции. У функций есть аргументы и говорят, что функция возвращает значение. Аргументы пишутся в скобках вслед за именем функции, например, sin(y) – возвращает синус от значения переменной y. Возвращаемые значения можно присваивать переменным или использовать в выражениях:

z:=sin(y);  

y:=(1+2*sin(y))/2;


 

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

Кроме того, возвращаемое функцией значение тоже имеет определенный тип. Функция sin возвращает вещественное значение и его нельзя присвоить целочисленной переменой, а скажем, функция length(s)возвращает целочисленное значение.

Перечислим несколько наиболее распространенных стандартных функций:

round(y) — округление числа. Аргумент целое или вещественное число. Возвращаемое значение целого типа.

trunc(y) – отбрасывание дробной части. Возвращаемое значение целого типа.

sin(y), cos(y) – синус и косинус.

ln(y) – натуральный логарифм.

exp(y) – экспонента.

sqr(y) – возведение в квадрат. Тип возвращаемого значения зависит от типа аргумента. Если аргумент был целым, то результат будет целым. Иначе результат будет вещественным.

sqrt(y) – квадратный корень. Возвращаемое значение вещественного типа.

abs(y) – модуль. Тип возвращаемого значения зависит от типа аргумента. Если аргумент был целым, то результат будет целым. Иначе результат будет вещественным.

arctan(y) – арктангенс.

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

random – возвращает случайное число в диапазоне от 0 до 1.

pi – возвращает число π.

Аргументом функции может быть не только одна переменная, но произвольное выражение, в том числе содержащее другие функции. Например:

x:=2+round(sin(2*pi*y)+2);


 

 

Структура программы

Структура программы на Паскале представлена ниже:

1

2

3

4

5

6

7

8

9

program <Имя программы>; 

 

<Раздел описаний> 

 

begin 

 

<Раздел операторов> 

 

end.


 

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

1

2

3

4

5

6

program MyFirstProgram;

var  

x: integer;

begin  

x:=2;

end.


 

Ввод/вывод в текстовом режиме

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

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

1

writeln('Hello');


 

Печатается слово “Hello”.

1

writeln(x);


 

Напечатается значение переменной x.

1

2

x:=2;

writeln('x = ', x);


 

В одну строчку напечатается строка «x = » и значение переменной x, то есть в результате будет напечатано «x = 2».

1

2

3

x:=2;

y:=3;

writeln(x, y);


 

В одну строчку напечатаются значения переменных x и y, то есть «23».

1

writeln(x, ' ', y);


 

Между значениями x и y будет располагаться пробел.

1

2

writeln(x);

writeln(y);


 

Значения x и y будут напечатаны на разных строках.

1

writeln(2*x+y);


 

Будет напечатано значение выражения 2*x+y.

1

writeln;


 

Вызов writeln без параметров приводит к переходу на новую строку. Несколько таких вызовов подряд вставят в выводимый текст несколько пустых строк.

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

Ввод информации осуществляется с помощью процедуры

1

readln(<список переменных>);


 

которая позволяет ввести с клавиатуры значения нескольких переменных. Например:

1

readln(x);


 

Выполнение программы приостановится, пока пользователь не введет значения переменной x и не нажмет Enter.

1

readln(x, y, z);


 

Программа ожидает ввода значений трех переменных. После каждого ввода следует жать Enter.

1

write('x = '); readln(x);


 

Курсор будет мигать не на пустой строке, а на строке содержащей приглашение вида «x = ».

1

readln;


 

В отсутствии параметров процедура просто приостанавливает выполнение программы до нажатия пользователем клвиши Enter.

Используем наши новые знания, написав программу, запрашивающую у пользователя два числа и печатающую их сумму.

?

1

2

3

4

5

6

7

8

9

10

program Summa;

var  

x, y: integer;

begin  

write('x = ');  {Вывод текста 'x = '}  

readln(x);      {Ввод значения переменной x пользователем программы}  

write('y = ');  {Вывод текста 'y = '}  

readln(y);      {Ввод значения переменной y пользователем программы}  

writeln('Summa = ', x+y);  {Печать результата}

end.


 

 

Контрольная работа №1

1. Дайте определение алгоритма.

2. Каким ключевым словом  открывается раздел описания  переменных?

3. Объявите переменную  целого типа.

4. Какие присваивания в  приведенной программе являются  недопустимыми (укажите соответствующие  номера строк)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

var  

x: integer;  

y, z: real;  

a22: char;

begin  

x:=y;  

y:=x;  

y:=(x*z+5)*ln(x);  

y:=x*y;  

x:=x*y;  

x:=x/2;  

x:=x+5;  

x:=x*x*x*x*x;  

a22:=round(x);  

x:=round(x);  

a22:='x';  

y:=y div 2;

end.


 

5. Вычислите значения следующих  выражений или укажите, что вычисление  невозможно.

а) 25 div 6   

б) -25 mod 6   

в) 25.1 mod 5   

г) 24 mod 0   

д) 3 mod 5   

е) 3 div 5   

ж) 14 mod 1   

з) sqrt(ln(1)-1)   

и) -4 / 2*2   

к) 3/2 div 5   

л) 3 div 5/2   

м) trunc(-14)   

н) round(-5.5)   

о) trunc(14.234e2);


 

6. Чему равны переменные  после выполнения следующих фрагментов  программ

1

2

x:=3.14159;

x:=round(100*x)/100;

1

2

x:=11;

x:=trunc(x/2);


1

2

x:=22;

x:=(x-x)*x;

1

2

3

x:=193745;

y:=x+1;

x:=(x+y) mod 2;


1

2

3

4

x:=2;

y:=6;

x:=y;

y:=x;

1

2

3

4

5

a:=1;

b:=2;

c:=a;

a:=b;

b:=c;


1

2

3

4

5

a:=11;

b:=45;

a:=b-a;

b:=a-b;

a:=a-b;


 

7. Нарисуйте графики функций

а) y = round(sin(x))   

б) y = trunc(2*sin(x))   

в) y = abs(cos(x))   

г) y = trunc(sin(x)+1)


 

Линейные программы: арифметические операторы, стандартные функции и ввод/вывод в текстовом режиме

Задание 1: Линейные программы, арифметические операторы

1. Создайте программу, печатающую  при запуске текст «Hello, World» (традиционный  текст для первой программы  при изучении языка программирования, ваша первая программа приветствует  мир). Опробуйте на ней возможности  среды разработки. Запустите ее (F9), просмотрите результат выполнения, сохраните на диск (Ctrl-S), загрузите  с диска снова (Ctrl-O). Пользуясь  копированием через буфер (Ctrl – C, Ctrl – V), сделайте так, чтобы программа  выводила слово «Hello» 20 раз.

Информация о работе Языковое программирование