200.15K
Category: programmingprogramming

Символьные данные (лекция часть 3)

1.

Информатика
Лекция
Часть 3
Старший преподаватель
Елисеева Елена Николаевна.
[email protected]
Тел. 8-960-508-13-95

2.

Символьные данные
• Помимо численных переменных в языке Pascal могут
использоваться символьные переменные. То есть такие, которые
способны хранить символы – знаки, буквы или их
последовательности;
• Тип переменных char позволяет хранить один символ;
• Переменная этого типа занимает в памяти 1 байт, таким образом
этот тип переменных может иметь 256 различных значений;
• Существует система кодировок – таблиц, в которых перечислены
все символы одной системы и способы их кодирования: каждому
символу соответствует своё число в десятичной или
шестнадцатеричной системе, обращаясь к которому, можно
вызвать нужный символ.
• В качестве примера кодировки можно привести ASCII (American
Standard Code for Information Interchange).
2

3.

Ввод символьных переменных
Задать значение для символьной переменной можно
одним из этих способов:
1) Присвоить переменной значение символа,
заключенного в апострофы:
C:=‘A’;
2) Присвоить десятичное значение, выделив его
символом #:
C:=#65;
3) Присвоить шестнадцатеричное значение, выделив его
символами #$:
C:=#$41.
3

4.

Действия над символьными переменными
Функция
Действие
Пример
chr(x)
Возвращает символ по его коду
chr(71)=‘G’
ord(c)
Возвращает код введённого символа
ord(‘G’)=71
upcase(x)
Возвращает прописную букву
upcase(‘a’)=‘A’
4

5.

Массивы
В программе массивами называют набор однотипных переменных,
объединённых общим названием. Элементы массива расположены в
одном месте памяти и каждая переменная, входящая в его состав
имеет свой номер - индекс. Элемент массива может иметь любой тип
данных, а его индекс только порядкового типа, т.е. , чаще всего,
целым числом.
Массив можно сравнить с математическим понятием матрицы, но в
матрице могут находится только числовые значения, в массиве могут
присутствовать любые типы данных, с тем условием, что в одном
массиве могут находится элементы одного типа.
Если элемент в массиве представлен только одним индексом. Он
называется одномерным массивом или вектором, а если двумя или
более – многомерным.
5

6.

Примеры массивов различных типов данных
Массив A
A[1]
A[2]
A[3]
A[4]
A[5]
A[6]
A[7]
Тип - byte
0
22
13
42
9
15
21
Массив B
B[1]
B[2]
B[3]
B[4]
B[5]
B[6]
B[7]
Тип - string
‘красный’
‘оранжевый’
‘желтый’
‘зелёный’
‘голубой’
‘синий’
‘фиолетовый’
Массив C
C[1]
C[2]
C[3]
C[4]
C[5]
C[6]
C[7]
Тип - boolean
true
true
false
true
false
false
true
6

7.

Работа с массивами
Как и всякая переменная массив необходимо объявить в отделе описаний
переменных. Это выглядит следующим образом:
var
A: array <диапазон> of <тип переменной>
Пример A: array[1..10] of real;
Array – служебное слово обозначающее массив.
<тип переменной> - любой тип переменных языка Pascal.
Многомерному массиву необходимо задать несколько диапазонов для
значений индекса.
B: array <диапазон1, диапазон2> of <тип переменной>
Пример B: array[1..10, 1..15] of real;
При обращении к элементам массива в программе следует обозначить имя
массива и его индекс или индексы:
A[i], B[i,j].
7

8.

Строковые данные
• Помимо типа данных способного хранить 1 символ, в Pascal
имеется тип данных, способный хранить последовательность
символов;
• Таким типом является тип string;
• Переменная такого типа занимает 256 байт и способна хранить
последовательность из 255 символов. Еще один символ хранит
информацию о длине строки;
• При вводе переменной данного типа в блоке описаний указывается
длина строки – исключение, если длина строки максимальна 255
символов:
Пример:
var
A:string[15];
B:string;
8

9.

Действия со строковыми данными: сравнение
Две строковые переменные можно сравнить между собой.
Чтобы они были равны их длина и набор символов должны
быть одинаковы. Большей будет считаться та строковая
переменная, у которой вначале будут символы с большими
численными значениями кода, т.е. которые находятся ближе к
концу алфавита или у которой больше длина;
Пример:
str_1:=‘астра’;
str_2:=‘тюльпан’;
L:=str_1<str_2;
9

10.

Действие со строковыми переменными:
сложение, определение символа по его позиции
• Две строковые переменные можно сложить с помощью знака +. В
итоге получится строковая переменная, состоящая из двух
сложенных переменных:
Пример
str_1:=‘Добрый’;
str_2:=‘день!’;
str_3:=str_1+’ ’+str_2;
str_3=‘Добрый день!’
• Строковая переменная является разновидностью массива, и как
для массива для строки можно определить значение символа по
его позиции.
Пример: Пусть str_1=‘Конференция’, тогда str_1[4]=‘ф’
10

11.

Функции, для работы со строковыми
переменными
Функция
Действие
Пример:
Str_1=‘кон’, Str_2=‘ференция’
length(s)
Возвращает длину строки
length(str_1)=3;
length(str_2)=8;
concat(s1, s2)
Возвращает строку, представляющую
собой сцепление двух строк
concat(str_1,
str_2)=‘конференция’
copy(s, i, cnt)
Копирует из строки s cnt символов,
начиная с символа номер i
copy(str_2, 3, 3)=‘рен’
pos(subst, s)
Отыскивает в строке s первое
вхождение подстроки subst и выдаёт
номер позиции
pos(‘он’, str_1)=2;
pos(‘он’, str_2)=0.
11

12.

Использование оператора присваивания
Операция присваивания всегда происходит справа налево, т.е.
сначала вычисляется выражение справа, и лишь после этого
происходит перемещение результата в переменную слева.
Данные которые задаются для переменной рассматриваемого
типа должны соответствовать заявленному типу переменной.
Пример:
A:=2.0;
B:=‘М’;
C:=TRUE; D:=5+1;
F:=2*A+4; G:=F<10;
H:=G and C;
I[3]:=4.5.
12

13.

Операторы ввода и вывода
Программа в процессе своей работы может
взаимодействовать с пользователем. То есть она может
запросить у него некоторую информацию, или, наоборот
предоставить её ему. Общение с пользователем
происходит с помощью операций ввода и вывода.
Если речь идёт о выводе, данные могут поступать на
различные устройства (экран, принтер, файл, звуковая
система). Наиболее распространенным устройством
вывода при общении человека и ЭВМ является монитор, а
устройством ввода клавиатура.
13

14.

Операторы вывода
Для вывода текстовой информации на языке Pascal в консольном
режиме служат две процедуры: write и writeLn. Они имеют
следующий формат:
write(a, b, c, …);
writeLn(a, b, c, …); - это команда после вывода переводит курсор на
строку ниже.
Где a, b, c - параметры вывода (переменные, константы, выражения).
Процедура writeLn может быть задана без параметров, тогда она
переводит курсор на строку ниже.
Если необходимо вывести текст, то текстовый фрагмент записывается
в операторе в апострофах.
writeLn(‘текстовый фрагмент’).
14

15.

Вывод вещественных значений
Если выводить число в вещественном виде, то оно выйдет в
экспоненциальном виде.
x:=5.001;
write(x);
На экране: 5.001000000000000E+0000
Такая запись не всегда удобная, поэтому для более удобного вывода
используется маска вывода write(x:m:n). Для числа указывается m общее количество мест на экране, выделяемое для вывода числа
число знаков после точки n - число знаков после точки.
Для целочисленных значений нет необходимости указывать число
знаков дробной части, и используется только значение m.
15

16.

Пример использования функции вывода
Выводимые данные
Код программы
Результат на экране
Числовое значение
Числовая переменная
A=8 (byte)
Write(5)
Write(A)
Числовая переменная
B=5.03
Текстовая переменная
C=‘текст’
Write(B:3:2)
5.03
Write(C)
текст
Фрагмент записи
Write(‘A=‘,A)
А=8
5
8
16

17.

Операторы ввода
Для ввода значений с клавиатуры используют процедуры read и
readLn (readLn – переводит курсор на следующую строку). Они
приостанавливают работу программы, ожидая ввода значения. После
нажатия клавиши Enter набранное значение помещается в первую
переменную указанную в качестве параметра процедуры. Затем
после следующего ввода выбранное значение помещается в
следующую переменную. Формат записи таков: readLn(a, b, c, …), где
a, b, c – параметры ввода (переменные).
Если процедура ReadLn задана без параметров, в этом случае она
приостанавливает выполнение программы до тех пор пока не будет
нажата клавиша Enter.
Для более понятной работы пользователя с программой следует при
использовании операторов ввода следует предусматривать
комментарии, выводимые с помощью оператора write и writeLn.
17

18.

Пример использования оператора ввода:
Program_1;
var
x, y:real;
begin
write(‘x=’);
readln(x);
y:=x*2.5;
writeLn(‘y=‘,y:5:3);
end.
На экране:
x=1.5
y= 3.75
18

19.

Операторные скобки
В выражении вида: 13 + 22 ∙ 9 + (4 − 1)2 cкобки играют важную
роль. Они показывают очередность выполнения действий в
выражении, и связывают элементы между собой. Без этих скобок
первыми следовало бы выполнять такие действия как возведение в
степень и умножение.
За схожую роль в программе служебные слова begin и end называют
операторными скобками. Они группируют несколько операторов в
составной оператор. Стоит отметить, что тело программы тоже
начинается и заканчивается этими служебными словами.
Использование операторных скобок позволяет прописывать более
сложные действия в условном операторе или циклических
структурах. Внутри одних операторных скобок могут заключатся
другие, нет ограничений на то сколько этих скобок может быть.
19

20.

Условный оператор
Развилка является одной из наиболее часто употребляемых
алгоритмических структур. Для осуществления этой структуры
используется условный оператор.
Общая схема записи развилки такова:
• Полная развилка:
If L then
управляющий оператор положительной ветви
else
управляющий оператор отрицательной ветви;
• Неполная развилка
If L then
управляющий оператор положительной ветви;
20

21.

+
L
Полная
развилка
-
-
+
Неполная
развилка
21

22.

Условный оператор: пример
Возвести в квадрат только наибольшее из неравных чисел A и B.
program_2;
var A, B: integer;
begin
writeLn(‘Введите 2 различных числа A, B’);
readLn(A, B) ;
if A>B then
A:=sqr(A)
else
B:=sqr(B)
writeLn(‘A=‘, A, ‘B=‘, B);
end.
22

23.

Циклические структуры
В Pascal представлены три циклические алгоритмические
управляющие структуры:
• Цикл с предусловием или цикл «пока»
while L do
тело цикла;
• Цикл с постусловием
repeat
тело цикла;
until L;
L – логическая переменная, условие.
23

24.

Циклические структуры со счётчиком
• Цикл с параметром и с шагом +1 записывается:
For k:=n to m do
тело цикла;
• Если цикл идёт в обратную сторону, т.е. шаг равен –1, то
цикл имеет вид:
For k:=n downto m do
тело цикла;
24

25.

I:= K, N, M
Тело цикла
+
-
Тело цикла
Тело цикла
+
Цикл с предусловием
Цикл с постусловием
Цикл со счётчиком
25

26.

Примеры циклических структур
Задача: вывести значение для функции y=x2 на промежутке [-2,
1] с шагом 0.5.
• Цикл с предусловием:
Program_3;
var x, y: real;
begin
x:= -2;
while x<=1 do Условие
begin
y:=sqr(x);
writeLn(‘f(‘,x:5:1,’)=‘,y:8:3);
x:=x+0.5;
end;
end.
26

27.

• Цикл с постусловием:
Program_4;
var x, y: real;
begin
x:= -2;
repeat
y:=sqr(x);
writeLn(‘f(‘,x:5:1,’)=‘,y:8:3);
x:=x+0.5;
until x>1; Условие
end;
end.
27

28.

• Цикл со счётчиком:
Program_5;
var a, b, x, y: real;
i, N: integer;
begin
a:= -2;
b:=1;
N:=trunc(2*(b-a));
for i:=0 to N do Счётчик
begin
y:=sqr(a+i*0.5);
writeLn(‘f(‘, (a+i*0.5) :5:1,’)=‘,y:8:3);
end;
end.
28

29.

Структура программы в языке Pascal
№ Название раздела
Служебные слова
Пример заполнения
1
Раздел заголовка
программы
Program <название программы>
Program program_1;
2
Раздел подключаемых
библиотек
Uses <название библиотек>;
Uses CRT, graph;
3
Раздел описания меток
Label <список меток>;
Label m1, m2, m3;
4
Раздел описания
констант
Const <описание констант>;
Const А=5;
B=1; С=‘переменная’;
5
Раздел описания
пользовательских типов
Type <перечень типов>;
Type Tint = integer;
Tmassive = array [1..20,1..10] of real;
6
Раздел описания
переменных
Var <наименования переменной>:
<тип переменных>;
Var x, y, z: real;
i, k: integer;
7
Раздел описания
процедур и функций
Procedure <описание процедуры,
входящих в неё параметров,
получаемых результатов>;
8
Раздел основной
программы
Begin
<тело программы>;
End.
Begin
z:=A*x+B*y;
write(z);
End.
29

30.

Подключаемые библиотеки
Модулем или библиотекой можно назвать совокупность
подпрограмм, объединенных произвольным образом в
отдельный файл. Существуют как стандартные модули языка
Pascal, так и пользовательские, т.е. созданные или подобранные
пользователем самостоятельно.
Модуль, который предполагается использовать в программе
следует объявить в разделе подключаемые модули.
Пример:
Uses CRT;
CRT – модуль, который содержит процедуры и функции работы со
стандартными устройствами ввода/вывода (например, экраном в
текстовом режиме.
Graph – модуль, который содержит графические процедуры и
функции.
30

31.

Пользовательские типы
Помимо базовых стандартных типов в Pascal могут
использоваться так же пользовательские типы. Они могут
формироваться как на основании существующих типов, так
задаваться в виде массивов, интервальных или перечисляемых
типов.
Пользовательские типы должны быть заявлены в разделе
«описание пользовательских типов».
Пример:
Type
Tint=integer;
Tarray=array[1..10] of real;
Lat_bukvy=a..z;
Week=‘sun’, ‘mon’, ‘tue’, ‘wed’, ‘thu’, ‘fri’, ‘wed’;
31

32.

Метки
В языке Pascal существует возможность адресации строк с
помощью меток. Оператор безусловного перехода goto
позволяет выполнить переход к строке, адресованной с помощью
этих меток.
Метка может быть числом от 1 до 9999, либо
последовательностью латинских букв и цифр (m1, m2, mark1,
metka2).
Перед тем как использовать метку в теле программы, её
необходимо описать в разделе описания меток:
Label m1, m2, m3, m4;
Использование безусловного перехода следует производить с
осторожностью, так как оно усложняет чтения программы. Любой
алгоритм можно описать с помощью следования, развилки и
цикла.
32

33.

Пример использования меток
program ex_label;
label m1, m2, m3;
var x:char;
begin
readln(x);
if x=‘1’ then
goto m1
else
goto m2;
m1: writeLn(‘m1’);
m2: writeLn(‘m2’);
m3:
end.
33

34.

Список использованных источников:
1. Информатика: основы программирования на языке Паскаль:
учеб.-метод. Пособие / Л.Г. Акулов, В.Ю. Наумов, О.А. Авдеюк;
ВолгГТУ. – 2е изд. Стер. – Волгоград, 2016. – 268 с.
2. Сулыненков И.Н., Кваша Е.Н. Учебно-методическое пособие по
дисциплине «Информатика» для студентов факультета заочного и
вечернего обучения направления подготовки «Электроэнергетика
и электротехника»: Учеб.-метод. пособие/ ФГБОУВПО
«Ивановский государственный энергетический университет имени
В.И. Ленина» - Иваново, 2015. – 100с.
3. Информатика : учеб. Пособие / Г.В. Ващенко. – Красноярск : Сиб.
Федер. Ун-т, 2013. – 204 с.
34

35.

Спасибо за внимание!
English     Русский Rules