- •5.091405 «Обслуговування комп’ютеризованих інтегрованих та робототехнічних систем»
- •Виды алгоритмов
- •Структура програми. Алфавіт. Типи даних та операції
- •Структура программы
- •Алфавит языка
- •Знаки операций
- •Комментарии
- •Типы данных и операции
- •Описание меток
- •Описание переменных
- •Var имя переменной : тип;
- •Описание типов
- •Арифметические выражения
- •Логические выражения
- •Основные операторы
- •Операторы ввода и вывода
- •Ввод с консоли
- •Вывод на консоль
- •Форматный вывод
- •Условные операторы Условный оператор if
- •Оператор выбора case
- •Циклічні розрахункові процеси
- •Оператор цикла с параметром
- •Оператор цикла с условием
- •Регулярний тип (масив)
- •Сортировка массивов
- •Улучшенные сортировки
- •Сортировка Шелла
- •Символьный тип данных
- •Тип динамічні рядки (string)
- •Типи даних, що визначаються користувачем
- •Var Имя множества:Set of базовый тип;
- •Var Имя множества:Имя типа;
- •1. Var Имя записи:record
- •Var Имя записи:Имя типа для записи;
- •Складні програми. Робота з файлами Робота з процедурами та функціями
- •Види файлів. Робота з файлами
- •Когда нужно использовать файлы
- •Разновидности файлов
- •Открытие файла
- •Закрытие файла
- •Считывание из файла
- •Запись в файл
- •Модульна структура програми. Створення інтерфейсу користувача
- •Стандартные модули языка Pascal
- •Подключение модулей
- •Секция реализации
- •Секция инициализации
- •Взаимодействие модулей
- •Компиляция модулей
- •Пример модуля
- •Передача аргументов из командной строки
- •Створення інтерфейсу користувача Текстовый режим
- •Позиционирование
- •Ожидание
- •Пример использования текстовой графики
- •Решение
- •Создание дружественного интерфейса
- •Заставка
- •Ввод информации
- •Приглашения
- •Мова Сі Основні поняття та складові частини мови Сі
- •Структура програми на мові Сі. Елементи мови Сі
- •Типи даних та їх об"явлення. Базові типи даних.
- •1.2.1 Категории типов данных
- •Типи даних, що визначаються користувачем.
- •Вирази та присвоювання
- •Програмування на мові Сі
- •Види операторів. Умовні оператори
- •Оператори циклів
- •Оператори передачі керування
- •Процедури та функції
- •Виклик функцій зі змінною кількістю параметрів. Параметри функції main
- •Структура програми та класи пам"яті. Область життя та область видимості
- •Покажчики та операції над покажчиками
- •Масиви. Робота з масивами
- •Динамічний розподіл пам"яті. Динамічне розміщення масивів
- •Директиви препроцесора
- •Лінійні списки. Робота зі списками
- •Стеки та черги
- •Сортування та злиття списків
- •Пошук в лінійних списках
- •Технологія створення програм
- •Робота з файлами та потоками
- •Открытие файла: функция fopen
- •Константа null
- •Диагностика ошибок: функция perror
- •Функции бинарного чтения и записи fread и fwrite
- •Закрытие файла: функция fclose
- •Пример: подсчет числа символов и строк в текстовом файле
- •Форматный ввод-вывод: функции fscanf и fprintf
- •Понятие потока ввода или вывода
- •Функции scanf и printf ввода и вывода в стандартные потоки
- •Функции текстового преобразования sscanf и sprintf
- •Другие полезные функции ввода-вывода
- •Робота з рядками
- •Определение типов символов
- •Пример: программа "Записная книжка"
- •Аргументы командной строки
Символьный тип данных
Стандартний скалярний тип (char). Значення цього типу є символами з множини ASCII.
Кожен символ займає в памяті 1 байт (8 двійкових розрядів).
Традиційний запис значення символьного типу має вигляд ‘a’, ‘J’, ‘1’.
Якщо символ не має представлення на клавіатурі він може бути доступний через його код. Перед цим кодом ставиться міжнародний знак номеру #.
Над значеннями цього типу допустимі операції порівняння. Результат операції визначається порівнянням кодів символів.
Тип динамічні рядки (string)
String [n];
Максимальна довжина рядка 255 символів. Вони називаються динамічними тому що можуть мати змінну довжину в рамках заданих границь.
Type S1=string [126];
Var Stroc1 : S1;
В змінній Stroc1 може зберігатися рядок довжиною від 0 до 126 символів.
Якщо довжина рядка не вказується, то вона за умовчання приймається довжиною 255 символів.
При спробі записати в змінну рядок більшої довжини, ніж було вказано, менша частина відсікається.
Значенням рядкового типу може бути будь-яка послідовність символів, що заключна в одинарні лапки. ‘123_ 1234’, ‘Hello’. Рядки різної довжини сумісні в операторах присвоювання та порівняння, але несумісні при передачі параметрів процедури та функції.
Рядок може бути розглянутий як масив символів вказаної довжини.
Var st1: string [15];
Write (st1);
або for i:=1 to 15 do write (st1[i]);
Причому до кожного елементу масиву можна звернутися за його індексом. Нульовий елемент рядка містить інформацію про його довжину.
Для робот из динамічними рядками в Паскаль э спеціальна бібліотека функцій.
-
Операції, що виконуються над рядками.
-
присвоювання
S1:= ‘hello’
S2:=S1;
S3:= ‘world’
-
злиття
S4:= S1+’ ‘+S2+’S3’+’!’
-
порівняння
Порівняння здійснюється посимвольно. Рядки вважаються однаковими, якщо мають однакову довжину та посимвольно еквівалентні.
‘abcd’=’abcd’;
‘ab cd’<>’abcd’;
‘abce’<>’abcd’;
-
Процедури та функції для роботи з рядками
-
Функция concat(s1,_,sN:string):string осуществляет слияние (конкатенацию) всех перечисленных строк или символов в указанном порядке. Если длина итоговой строки больше 255-ти символов, то произойдет отсечение "хвоста". Кроме того, даже если результат конкатенации не был усечен, но программа пытается сохранить его в переменную заведомо меньшей длины, то усечение все равно состоится:
concat('abc','3de',' ','X','yz') = 'abc3de Xyz'
-
Функция copy(s:string;i,k:byte):string вычленяет из строки s подстроку длиной k символов, начиная с i-го. Если i больше длины строки, то результатом будет пустая строка. Если же k больше, чем длина оставшейся части строки, то результатом будет только ее "хвост":
copy('abc3de Xyz',2,4) = 'bc3d'
copy('abc3de Xyz',12,4) = ''
copy('abc3de Xyz',8,14) = 'Xyz'
-
Процедура delete(s:string;i,k:byte) удаляет из строки s подстроку длиной k символов, начиная с i-го. Если i больше длины строки, то ничего удалено не будет. Если же k больше, чем длина оставшейся части строки, то удален будет только ее "хвост":
{s = 'abc3de Xyz'} {s = 'abc3de Xyz'}
delete(s,2,3); delete(s,8,13);
{s = 'ade Xyz'} {s = 'abc3de '}
-
Процедура insert(ss,s:string;i:byte) вставляет подстроку ss в строку s, начиная с i-го символа. Если i выходит за конец строки, то подстрока ss припишется в конец строки s (если результат длиннее, чем допускается для строки s, произойдет его усечение):
{s = 'abc3de Xyz'} {s = 'abc3de'}
insert('xyz',s,2); insert('xyz',s,12);
s = 'axyzbc3de Xyz'} {s = 'abc3dexyz'}
-
Функция length(s:string):byte возвращает длину строки s:
length('abc3de Xyz') = 10
-
Функция pos(ss,s:string):byte определяет позицию, с которой начинается первое (считая слева направо) вхождение подстроки ss в строку s. Если ss не встречается в s ни разу, функция вернет 0:
pos('abc3de Xyz','X') = 8
-
Процедура str(x[:w[:d]],s:string) превращает десятичное число x (можно указать, что в этом числе w цифр, из них d дробных) в строку s. Если число короче указанных величин, то спереди и/или сзади оно будет дополнено пробелами:
str(156.4:7:2,s);
{s = ' 156.4 '}
-
Процедура val(s:string;i:<арифметический_тип>;err:byte) превращает строку s в десятичное число x (в случае ошибки в переменную err будет записан номер первого недопустимого символа):
{s = '15.47'}
val(s,x,err);
{x = 15.47}
Лекция 7