- •Язык 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. Динамические структуры Использование динамических массивов
- •Процедуры для работы с динамической структурой спискового типа
- •Процедуры, обслуживающие стек
- •Вставка динамической переменной
- •Примечания:
Удаление последнего слова в строке
Задача:
Требуется в произвольной строке удалить последнее слово, т.е. все символы после последнего пробела в строке.
Описание переменных:
s – строка;
len – ее длина.
Алгоритм решения задачи:
-
Посимвольно просматриваем строку, начиная с конца.
-
Как только встретится пробел, удаляем все символы от текущей позиции до конца строки и прерываем выполнение цикла.
Программа на языке Паскаль:
var
s: string;
len,i: byte;
begin
write('String: ');
readln(s);
len := length(s);
for i:=len downto 1 do
if s[i]=' ' then begin
delete(s,i,len-i+1);
break;
end;
writeln(s);
readln
end.
Примечания:
Если не использовать инструкцию break, то цикл продолжит выполняться и постепенно удалит все слова из строки за исключением первого.
Выражение len-i+1 дает в результате длину удаляемой части. Например, если длина строки равна 10, просматривается 7-й символ, и он оказывается пробелом, то приведенное выше выражение вернет 4. Будет удалена подстрока из 4-х символов, начиная с 7-го.
Как избавиться от goto
Программа на языке Паскаль:
Как можно переписать эту программу, чтобы избавиться от метки.
label lab;
var month;
begin
lab:
write('Введите номер месяца: ');
readln(month);
if not (month in [1..12]) then
goto lab;
Используйте какой-нибудь цикл. Например, так:
var month: byte;
begin
repeat
write('Номер месяца : ');
readln(month);
until month in [1..12];
readln
end.
Однако с циклом While еще проще:
...
while not (month in [1..12]) do begin
write('Номер месяца : ');
readln(month);
end;
...
Вывод квадратов натуральных чисел
Задача:
Вывести все квадраты натуральных чисел, не превосходящие данного
числа N.
Пример: N=50 | 1 4 9 16 25 36 49
Алгоритм решения задачи:
-
Ввести число N.
-
Присвоить x единицу.
-
Пока y < n
-
Возвести x в квадрат и присвоить полученное значение переменной y.
-
Если y < n, вывести значение y на экран.
-
Увеличить значение x на единицу.
Программа на языке Паскаль:
var
x,y,N:integer;
begin
{1 вариант}
write('Enter N: ');
readln(N);
x:=1;
while y<N do begin
y:=x*x;
if y<n then
write(y,' ');
x:=x+1;
end;
writeln;
{2 вариант}
write('Enter N: ');
readln(N);
x:=1;
repeat
y:=x*x;
if y<n then
write(y,' ');
x:=x+1;
until y>N;
readln
end.
Условный оператор if используется в цикле для того, чтобы не выводить последнее значение y, которое уже превосходит N.
Можно ли как-нибудь решить задачу проще? Да, если избавиться от переменной у
var x,n: integer;
begin
write('n = ');
readln(n);
x := 1;
while sqr(x) < n do begin
write(sqr(x),' ');
x := x + 1
end;
readln
end.
Числа Фибоначчи
Задача:
Вывести на экран ряд чисел Фибоначчи, состоящий из n элементов.
Числа Фибоначчи – это элементы числовой последовательности
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …, в которой каждое последующее число равно сумме двух предыдущих.
Описание переменных:
n – количество элементов ряда;
a, b – значения двух последних элементов ряда;
c – буферная («запасная») переменная;
i – счетчик.
Алгоритм решения задачи:
1. Получить значение n.
2. Присвоить a и b значения 0 и 1 соответственно (это первые числа ряда Фибоначчи). Вывести их на экран.
3. Начиная с 3-го элемента по n,
a. выводить на экран сумму a и b,
b. сохранить значение переменной b в c,
c. записать в b сумму a и b,
d. присвоить a значение с.
Программа на языке Паскаль:
var
a,b,c,i,n: integer;
begin
write('n = ');
readln(n);
a := 0;
write(a,' ');
b := 1;
write(b,' ');
for i:=3 to n do begin
write(a+b,' ');
c := b;
b := a + b;
a := c
end;
readln
end.