- •II курса заочного отделения
- •Проблемы и перспективы информатизации общества
- •Назначение и структура рынка информационных услуг
- •Правовое регулирование на информационном рынке
- •Предмет и задачи информатики
- •Информация и формы ее представления
- •Понятие количества информации
- •Свойства и формы адекватности информации
- •Информационные процессы и технологии
- •Система классификации информации
- •Архитектура современных вычислительных средств
- •Архитектура организации эвм основных классов и типов Методы классификации компьютеров
- •Классификация по назначению
- •Большие эвм (Main Frame)
- •МиниЭвм
- •МикроЭвм
- •Персональные компьютеры
- •Классификация по уровню специализации
- •Классификация по размеру
- •Классификация по совместимости
- •Дискретная вычислительная техника
- •Структура современного персонального компьютера
- •Перспектива развития вычислительных средств
- •Архитектура современных программных средств и основы программирования
- •Языки описания архитектуры
- •Виды (views)
- •Состав и функции программного обеспечения эвм Программное обеспечение
- •Системное по
- •Прикладное по
- •Инструментальное по
- •Этапы подготовки и решения задач на эвм
- •2. Постановка задачи
- •3. Математическое описание задачи
- •4. Выбор и обоснование метода
- •5. Алгоритмизация вычислительного процесса
- •6. Составление программы
- •7. Отладка программы
- •8. Решение задачи на эвм и анализ результатов
- •Категория специалистов, занятых разработкой и эксплуатацией программного обеспечения
- •Алгоритмы и способы их описания Понятие алгоритма
- •Основные понятия программирования
- •Обзор языков программирования Язык: Фортран (fortran)
- •Язык: Кобол (cobol)
- •Язык: Бейсик (basic)
- •Язык: Си (c)
- •Язык: Паскаль (Pascal)
- •Язык: Пёрл (Perl)
- •Язык: Питон (Python)
- •Язык: Руби (Ruby)
- •Язык: php
- •Язык: Java
- •Язык: JavaScript
- •Язык: Ruby on Rails (фреймворк на Ruby)
- •Япву Turbo Pascal
- •Массивы Turbo Pascal
- •Рекурсии Turbo Pascal Рекурсия Pascal-Паскаль
- •Записи Turbo Pascal
- •Системное программное обеспечение эвм Системное по
- •Характеристика и виды операционных систем
- •1.3.3. Классификация операционных систем
- •Оболочки операционных систем
- •Программы обслуживания магнитных дисков
- •Программы архивирования данных
- •Компьютерные вирусы и антивирусные продукты
- •Работа антивируса
- •Базы антивирусов
- •Операционная система Windows
- •Графические интерфейсы и расширения для dos
- •Семейство Windows 9x
- •Семейство Windows nt
- •Семейство ос для карманных компьютеров
- •Краткая история создания ос Windows
- •1975 ─ 1981: Microsoft загружается
- •1982 ─ 1985: Введение в Windows 1.0
- •1987 ─ 1992: Windows 2.0 ─ 2.11. Больше окон, больше скорости
- •1990 ─ 1994: Windows 3.0 ─ Windows nt. Графика
- •1995 ─ 2001: Windows 95. Компьютер взрослеет, Интернет становится популярным
- •2001 ─ 2005: Windows xp. Стабильнее, надёжнее и быстрее
- •2006 ─ 2008: Windows Vista. Упор на безопасность
- •2009 ─ Сегодняшний день: Windows 7. История продолжается
- •Новые возможности Windows 7
- •Прикладное программное обеспечение общего назначения рикладное программное обеспечение общего назначения
- •Компьютерные сети и телекоммуникации
- •Архитектура компьютерных сетей
- •Семиуровневая сетевая архитектура
- •Локальные вычислительные сети (лвс)
- •Построение сети
- •Адресация
- •Общие сведения об Интернете Общие сведения об Internet/Intranet
- •1.1. Основы технологии Internet/Intranet
- •1.1.1. Сети Internet и www
- •Передача информации в Интернете
- •World Wide Web-Всемирная Информационная паутина Интернет, World Wide Web - www, Web
Рекурсии Turbo Pascal Рекурсия Pascal-Паскаль
Подпрограммы в Паскале могут обращаться сами к себе. Такое обращение называется рекурсией.
Для того чтобы такое обращение не было бесконечным, в тексте подпрограммы должно быть условие, по достижению которого дальнейшее обращение к подпрограмме не происходит.
Пример.
Рассмотрим математическую головоломку из книги Ж. Арсака «Программирование игр и головоломок».
Построим последовательность чисел следующим образом: возьмем целое число i>1. Следующий член последовательности равен i/2, если i четное, и 3 i+1, если i нечетное. Если i=1, то последовательность останавливается.
Математически конечность последовательности независимо от начального i не доказана, но на практике последовательность останавливается всегда.
Применение рекурсии позволило решить задачу без использования циклов, как в основной программе, так и в процедуре.
Пример программы с использованием рекурсии
Program Arsac;
Var first: word;
Procedure posledov (i: word);
Begin
Writeln (i);
If i=1 then exit;
If odd(i) then posledov(3*i+1) else posledov(i div 2);
End;
Begin
Write (‘ введите первое значение ’); readln (first);
Posledov (first);
Readln ;
End.
Программист разрабатывает программу, сводя исходную задачу к более простым. Среди этих задач может оказаться и первоначальная, но в упрощенной форме. Например, для вычисления F( N) может понадобиться вычислить F( N-1). Иными словами, частью алгоритма вычисления функции будет вычисление этой же функции.
Алгоритм, который является своей собственной частью, называется рекурсивным. Часто в основе такого алгоритма лежит рекурсивное определение.
Пример рекурсивного алгоритма
N! = ( N-1)!* N, если N=0, то N!= 1
Любое рекурсивное определение состоит из двух частей. Одна часть определяет понятие через него же, другая часть – через иные понятия.
Пример рекурсивного алгоритма
2n= 2 n-1*2, если n=0, то 2 n= 1
Процедура является рекурсивной, если она обращается сама к себе прямо или косвенно (через другие процедуры).
Заметим, что при косвенном обращении все процедуры в цепочке – рекурсивные.
Все сказанное о процедурах целиком относится и к функциям.
Записи Turbo Pascal
Записи в Паскале – фиксированное число элементов одного или нескольких типов, то есть в отличие от массивов, в которых содержатся элементы одного типа, в записях могут содержаться элементы как одного, так и разных типов. Тема, например, сведения о книгах имеет структуру: автор, название книги, издательство, год издания, её цена. Первые три элемента относится к строковому типу данных, четвертый к целому, а цена - к вещественному типу. Элементами записей могут быть базовые типы, переменные, массивы, указатели, записи и т.д. Элементы записи вместе с их описанием называются полями записи. Над элементами записи можно выполнять действия, допустимые для данных этого типа.
Все записи должны быть описаны в разделе TYPE . Описание записи начинается со служебного слова RECORD заканчивается END, между которыми указывается список имен и типов полей, выбранных пользователем. Все идентификаторы полей в записи должны быть различными. Например, запись Воок можно описать следующим типом card:
TYPE card = record Author : string [15]; Title: string [20]; Firm: string[10]; year : integer ; cena : real End; VAR Book : card;
Тип записи (например, card) вводит только шаблон записи и с его именем не связан никакой конкретный обьект. Обращение к полю выполняется с помощью составного имени (селектора записи), которое состоит из : Имя_записи . имя_элемента
Например, присвоить значения элементам записи Author и Title можно так: Book.author:=’Довгаль С.И.’; Book.title:=’Турбо Паскаль V 7.0’;
Ввод цены книги с клавиатуры : readln (Book.cena);
Для упрощения и сокращения записи составных имен используется оператор присоединения WITH. Имя записи выносится в заголовок оператора присоединения, а в блоке используются только имена полей записи. Общий вид оператора присоединения: WITH имя записи DO оператор;
Предыдущие операторы можно записать проще:
With Book do begin author:=’Довгаль С.И.’; title:=’Турбо Паскаль V 7.0’; readln (cena); end;
Пример: Из ведомости 3-х студентов с их оценками ( порядковый номер, Ф.И.О. и три оценки) определить количество отличников и средний бал каждого студента.
Program Spic; Type wed = record {Тип wed включает 3 поля: n, fio, bal} n : integer ; fio : string[40] ; bal : array [1..3] of integer {Поле bal – массив из 3 оценок } end; Var spisok : wed ; {Запись spicok типа wed} i, j, kol, s : integer; sr : real; Begin kol:=0; {kol- количество отличников} With spisok do {with присоединяет имя записи spisok ко всем } For i:=1 to 3 do { полям внутри цикла For по i } begin n:=i; Write (' Vvedite FIO # ', i ,' '); Readln (fio); s:=0; For j:= 1 to 3 do begin write ( 'Vvedite ocenky: ' ); readln ( bal [j] ); s := s+ bal [j]; end; if s=15 then kol:=kol+1; {подсчет количества отличников} sr := s/3; writeln ( fio, ', Sredniy bal = ', sr:4:1); end; writeln ( ' Kolichestvo otlichnikov = ', kol ); readln; end.