- •Язык pascal программирование для начинающих Содержание
- •1.Начала программирования
- •2.Процедуры и функции
- •1.Начала программирования Понятия программирования
- •История и особенности языка программирования Паскаль (Pascal)
- •Словарь языка Pascal
- •Компиляция
- •Структура программы на языке Паскаль
- •Пунктуация в программах на Паскале
- •Операторы
- •Оператор присваивания
- •Составной оператор
- •Выражения
- •Ввод и вывод данных
- •Переменные и константы
- •Длина переменных
- •Типы данных
- •Целые типы
- •Вещественные типы
- •Использование константы pi
- •Символьный тип (Char)
- •Перечисляемый тип
- •Ограниченный тип (интервал)
- •Булевы типы. Логические выражения и логические операции
- •Битовая арифметика и операции над битами
- •Условные операторы
- •Оператор case
- •Вложенные конструкции if-else
- •Циклы в Паскале
- •Операторы goto, break и continue Оператор безусловного перехода goto
- •Операторы break и continue
- •Генератор псевдослучайных чисел
- •Эквивалентность и совместимость типов
- •Совместимость типов
- •Функция sizeof
- •2.Процедуры и функции Структурное программирование
- •Стандартные функции языка Pascal
- •Арифметические функции
- •Тригонометрические функции
- •Функции преобразования из вещественного в целый тип
- •Логические функции
- •Функции над дискретными типами Функция ord
- •Функция chr
- •Функции succ и pred
- •Процедуры и функции
- •Формальные параметры
- •Параметры-значения
- •Параметры-переменные
- •Побочные эффекты
- •Процедуры и функции в качестве параметров
- •Локальные и глобальные переменные
- •Рекурсивные функции
- •3.Массивы в Pascal Общее представление о массивах
- •Одномерные массивы
- •Двумерные массивы
- •Открытые массивы
- •4.Графика и псевдографика Модуль Crt
- •Модуль Graph
- •Процедура Line. “Звезды на экране”
- •Процедура Circle. “Разноцветные окружности”
- •Прямоугольники. Процедуры Rectangle, Bar и Setfillstyle
- •5.Строки Строковый тип данных в Паскале
- •Процедуры и функции для работы со строками
- •Строки и массивы символов
- •6.Работа с файлами Работа с файлами в Паскале. Общие сведения
- •Создание файла и запись данных в него
- •Чтение данных
- •Функция ioResult
- •Редактирование файла
- •7.Записи в Pascal Записи (Record)
- •Сравнение записей с массивами
- •Оператор With
- •Запись с вариантами
- •8.Множества Множества (Set)
- •Данные типа set
- •Операции над множествами
- •9.Динамические структуры данных Указатели, или ссылки (Pointer)
- •Ссылочные и динамические переменные
- •Процедура New
- •Операции над указателями
- •Процедура Dispose
- •Стек ("магазин")
- •Очередь
- •Запись новых компонент
- •Нелинейные структуры
- •Решение Задач Содержание
- •1.Линейные алгоритмы
- •2.Условные операторы
- •3.Циклы
- •4.Графика и псевдографика
- •5.Процедуры, функции, рекурсии
- •6.Массивы
- •7.Строки
- •1.Линейные алгоритмы Вычисление площади поверхности цилиндра
- •"Заем". Арифметические выражения, возведение в степень
- •2.Условные операторы Извлечение цифр числа
- •Поразрядное сравнение чисел
- •Перевод шестнадцатеричного числа в десятичное число
- •Перевод десятичного числа в шестнадцатеричное
- •Определение принадлежности даты диапазону времени
- •Программа, определяющая количество дней в месяце
- •Фильтрация данных
- •Поиск максимального элемента среди минимальных элементов столбцов
- •Удаление элементов одномерного массива
- •Выбор элементов массива
- •Процедура вычисления корней квадратного уравнения
- •Программа "Угадай число"
- •Перевод римских чисел в арабские. Пример автоматного распознавателя
- •Определить возможность существования треугольника по сторонам
- •Определение четверти на координатной плоскости
- •Оператор case в задаче выбора
- •Найти максимальное число из трех
- •Вычисление площадей геометрических фигур
- •Вычисление значения функции
- •3.Циклы Определить количество элементов массива, значение которых больше соседних элементов
- •Определить количество простых чисел
- •Сумма элементов различных рядов
- •Поменять слова местами
- •Определение различных цифр, входящих в число
- •Извлечение цифр числа
- •Поразрядное сравнение чисел
- •Использование повторяющихся изображений для создания орнаментов
- •Перенос и анимация геометрических фигур
- •Сумма и произведение цифр числа
- •Окна в crt. Программа для угадывания числа
- •Вычисление средних арифметических массивов
- •Удаление последнего слова в строке
- •Как избавиться от goto
- •Вывод квадратов натуральных чисел
- •Числа Фибоначчи
- •Запись табличных данных в файл и их чтение оттуда
- •Фильтрация данных
- •Поиск максимального элемента среди минимальных элементов столбцов
- •Умножение матриц
- •Удаление элементов одномерного массива
- •Выбор элементов массива
- •Сумма элементов двумерного массива
- •Поиск максимального элемента в массиве
- •Функция, вычисляющая наибольший общий делитель
- •Фильтр строки
- •Заполнение массива и вычисление суммы элементов
- •Возведение числа в степень
- •Вывод на экран таблицы ascii
- •Вычисление суммы ряда чисел
- •Программа "Угадай число"
- •Перевод римских чисел в арабские. Пример автоматного распознавателя Задача:
- •4.Графика и псевдографика Масштабирование фигуры
- •Использование повторяющихся изображений для создания орнаментов
- •Перенос и анимация геометрических фигур
- •Окна в crt. Программа для угадывания числа
- •Вывод строки по диагонали
- •5.Процедуры, функции, рекурсии Вычисление средних арифметических массивов
- •Перевод шестнадцатеричного числа в десятичное число
- •Перевод десятичного числа в шестнадцатеричное
- •Перевод десятичного числа в двоичную или восьмеричную систему счисления.
- •Перевод двоичного числа в десятичное
- •Пример, иллюстрирующий использование интервального типа и манипуляции над множествами
- •Псевдослучайные числа. Функция, возвращающая значение и меняющая параметр
- •Программа решения задачи о ханойской башне
- •Заполнение массива и его вывод на экран
- •Рекурсия. Процедура перевода чисел из десятичной системы счисления в другие
- •Процедура вычисления корней квадратного уравнения
- •Нахождение нод (наибольшего общего делителя) с помощью рекурсивной функции
- •Функция, вычисляющая наибольший общий делитель
- •Функция, вычисляющая наибольший общий делитель
- •Обмен значений переменных
- •Функции вычисления площади геометрических фигур
- •Вычисление площади поверхности цилиндра
- •"Заем". Арифметические выражения, возведение в степень
- •6.Массивы Определить количество элементов массива, значение которых больше соседних элементов
- •Определение различных цифр, входящих в число
- •Поразрядное сравнение чисел
- •Вычисление средних арифметических массивов
- •Использование динамических массивов
- •Копирование данных в обратном порядке
- •Поиск самой длинной заданной последовательности в массиве
- •Поиск максимального элемента среди минимальных элементов столбцов
- •Умножение матриц
- •Алгоритм шифрования данных
- •Выделение слов из строки
- •Сортировка выбором
- •Длина последовательности
- •Слияние двух упорядоченных массивов
- •Удаление элементов одномерного массива
- •Сортировка методом пузырька
- •Исключение одинаковых элементов массива
- •Выбор элементов массива
- •Вставка элемента в массив
- •Сумма элементов двумерного массива
- •Поиск максимального элемента в массиве
- •Сумма и произведение элементов одномерного массива
- •Заполнение массива и его вывод на экран
- •Фильтр строки
- •Заполнение массива и вычисление суммы элементов
- •7.Строки Поменять слова местами
- •Сортировка данных строки
- •Удаление из строки слов заданной длины
- •Удаление последнего слова в строке
- •Добавление пробелов в строку
- •Удаление одинаковых символов
- •Удаление лишних пробелов
- •Вывод строки по диагонали
- •Частота встречаемости символа в строке
- •Палиндром
- •Переворот строки
- •Замена подстроки в строке
- •Вставка подстроки
- •Удаление подстроки
- •Копирование части строки
- •Определение длины строки
- •Замена последовательности символов в строке
- •Перевод двоичного числа в десятичное
- •Выделение слов из строки
- •Фильтр строки
- •8.Файлы Запись данных в бестиповой файл
- •Проверка файла с данными на наличие записи
- •Замена последовательности символов в строке
- •Запись табличных данных в файл и их чтение оттуда
- •Копирование нетипизированного файла
- •Копирование данных в обратном порядке
- •Копирование текстовых файлов
- •Фильтрация данных
- •Запись в типизированный и текстовый файлы
- •9.Записи Пример использования записи с вариантами
- •Фильтрация записей по значению поля
- •Проверка файла с данными на наличие записи
- •Преобразование даты в числовой формат
- •Определение принадлежности даты диапазону времени
- •Программа, определяющая количество дней в месяце
- •10. Множества и интервалы Пример, иллюстрирующий использование интервального типа и манипуляции над множествами
- •11. Динамические структуры Использование динамических массивов
- •Процедуры для работы с динамической структурой спискового типа
- •Процедуры, обслуживающие стек
- •Вставка динамической переменной
- •Примечания:
Копирование текстовых файлов
Алгоритм решения задачи:
Копирование текстовых файлов с помощью средств языка Pascal реализовать достаточно просто. Копируемый файл открывается в режиме чтения (reset), а планируемая копия – в режиме записи (rewrite). И пока не будет достигнут конец первого файла (eof), считывать данные из одного и записывать их в другой. По окончании следует закрыть оба файла (close).
Программа на языке Паскаль:
var
f1, f2: text;
s: string;
begin
assign (f1, 'c:\file1.txt');
reset (f1);
assign (f2, 'c:\file2.txt');
rewrite (f2);
while not eof (f1) do begin
readln (f1, s);
writeln (f2, s)
end;
close (f1);
close (f2);
end.
Задачу можно усложнить, добавив возможность пользователю самостоятельно указывать адресное имя файл. Также в программу желательно добавить программный контроль наличия файла, отключив стандартную проверку операций ввода-вывода. Это делается для избегания нежелательных сообщений об ошибках при отсутствии указанного файла.
var
f1, f2: text;
s: string;
name1, name2: string;
err: boolean;
begin
err := true;
while err = true do begin
write ('File name: ');
readln (name1);
assign (f1, name1);
{$I-}
reset (f1);
{$I+}
if IOResult = 0 then
err := false;
end;
write ('File name of copy: ');
readln (name2);
assign (f2, name2);
rewrite (f2);
while not eof (f1) do begin
readln (f1, s);
writeln (f2, s)
end;
close (f1);
close (f2);
end.
Фильтрация данных
Задача:
Скопировать из одного файла в другой только определенные символы (например, ряд гласных) и посчитать их общее количество.
Алгоритм решения задачи:
Первый файл открывается на чтение, второй – на запись.
Первый цикл while читает поэлементно исходный файл. Если текущий символ является одним из ‘a’, ‘e’ или ‘u’, то он записывается во второй файл. Также переменная-счетчик (k) увеличивает свое значение на единицу.
После окончания чтения первого файла, оба закрываются. Далее второй файл открывается на чтение, и из него считываются и выводятся на экран данные. Их общее количество хранится в переменной k, значение которой также выводится на экран.
Программа на языке Паскаль:
var f1, f2: file of char;
c: char;
k: integer;
begin assign (f1, 'c:\file1.txt');
reset (f1);
assign (f2, 'c:\file2.txt');
rewrite (f2);
k := 0;
while not eof (f1) do begin
read (f1, c);
if (c = 'a') or (c = 'e') or (c = 'u') then begin
write (f2, c);
k := k + 1
end
end;
close (f1);
close (f2);
reset (f2);
while not eof (f2) do begin
read (f2, c);
write (c:2)
end;
writeln;
writeln (k);
readln
end.
Запись в типизированный и текстовый файлы
Задача:
Осуществить запись одинаковых данных в типизированные и текстовый файлы.
Сравнить размер файлов.
Описание переменных:
file_r, file_i, file_t – переменные связываемые с файлами для хранения действительных чисел, целых чисел и текста соответственно;
n – количество записываемых чисел;
a – текущее число.
Алгоритм решения задачи:
Сначала файловые переменные связываются с конкретными файлами на диске. Файлы открываются на запись. Если файлов не было, то они будут созданы.
У пользователя запрашивается количество вводимых чисел.
В цикле for считывается очередное число и записывается в три разных файла.
В конце файлы закрываются.
Программа на языке Паскаль:
var
file_r: file of real;
file_i: file of integer;
file_t: text;
i, n: integer;
a: integer;
begin
assign(file_r,'c:/rfile.txt');
assign(file_i,'c:/ifile.txt');
assign(file_t,'c:/tfile.txt');
rewrite(file_r);
rewrite(file_i);
rewrite(file_t);
write('n=');
readln(n);
for i:= 1 to n do begin
write('a=');
readln(a);
write(file_r,a);
write(file_i,a);
write(file_t,a);
end;
close(file_r);
close(file_i);
close(file_t);
readln
end
Примечания:
Размер типизированного файла из вещественных чисел всегда будет равен произведению количества записываемых чисел (n) и размеру памяти, отводимого под тип real (скорее всего 8 байт). Например, если записать в файл 5 чисел, то он будет равен 40 байтам.
Файл из целых чисел при тех же данных будет равен 10 байтам, если под каждое данное типа integer отводится 2 байта.
Размер текстового файла напрямую зависит от того, сколько символов-цифр было введено и не зависит от количества записываемых чисел. Так, если было введено 5 одноразрядных чисел, то файл будет равен 5 байтам, если же присутствовали два двухразрядных и три одноразрядных, то размер файла увеличится до 7 байт и т.д. (Под каждый символ выделяется 1 байт).