Реферат: Контрольные по информатике

Контрольные по информатике

компании. О даль­нейших попытках реанимировать Turbo BASIC под названием Power BASIC (Мощный Бейсик) кроме рекламных сообщений ничего не изве­стно.

А фирма Microsoft продолжила совершенство­вание своего любимого детища, выпустив в кон­це 80-х гг. мощные системы для профессиональ­ных разработок (Professional Development Sys­tem) BASIC PDS-6 и PDS-7.

Наконец, четвёртое поколение Бейсика свя­зано с появлением в 1991 системы программи­рования Visual BASIC и её последующим совер­шенствованием сотрудниками Microsoft. К на­чалу 1995 поступили сообщения об опытной эксплуатации версии 4.0.

Алгоритмический язык Паскаль был приду­ман в 1968 профессором Института информати­ки при Швейцарской высшей технической школе Н. Виртом. В 1970 под его руководством оыл разработан первый компилятор, а в следу­ющем году появилась и первая публикация. Своё название язык получил в честь известного Франц. математика Б. Паскаля, который в 19-летнем возрасте изобрёл первую суммирую-щую машину.

1

Новый язык, являясь продолжателем тради­ций алгоритмического языка АЛГОЛ-60, был ориентирован, главным образом, на обучение курсу систематического программирования. В Паскале были представлены наиболее распрост­ранённые типы данных и средства для создания пользовательских структур. К числу элементов, способствующих созданию надёжных про­грамм, относились блочные конструкции и тре­бование обязательного описания (объявления) всех объектов - типов данных, констант, пере­менных, меток, функций и процедур.

Заметную роль в разработке стандарта языка Паскаль и совершенствовании его средств вво­да/вывода сыграла рабочая группа Британского института стандартов во главе с А. Эддиманом. Британский стандарт был принят в 1982, а несколько позднее его утвердила международ­ная организация ISO. Однако к этому времени Н. Вирт, недовольный предложениями рабо­чей группы, отказался от сотрудничества по совершенствованию Паскаля и переключился на новый проект Модула.

Язык Паскаль довольно долго оставался средством для изучения программирования в университетах, т. к. ни одна серьёзная компь­ютерная фирма его не поддерживала. Пере­лом в отношении к этому языку наметился в 1984, когда молодой француз Ф. Кан привёз в США необычайно скоростной компилятор Turbo-Pascal для IBM-совместимых ПК и начал торговать им по цене 49 долларов 95 центов. Удачная реклама и «бросовая» цена позволили ему продать за первый месяц более 3000 копий системы и заложить основы фирмы Borland In­ternational. Последующие 8 лет Turbo Pascal ос­тавался наиболее опекаемым продуктом фир­мы, которая сумела выпустить более 9 различ­ных версий. Самая свежая из них (7.0; 1992) включает две системы - Turbo Pascal, функци­онирующую под управлением MS-DOS, и рас­ширенную версию Borland Pascal, работающую в среде Windows. Возможно, что после ухода в 1995 Кана с поста президента фирма Borland изменит свою политику в отношении языка Пас­каль.

Язык Си был придуман в 1972 сотрудником Bell Laboratories (отделение известной телефон­ной компании AT&T) Д. Ритчи, одним из пер­вых пользователей операционной системы Unix, и задумывался не как универсальный алгоритмический язык, а, скорее, как инстру­мент для развития операционной системы и создания новых обслуживающих программ (утилит). Такой подход характерен для боль­шинства системных программистов, разрабаты­вающих сложные проекты и придумывающих для облегчения своего труда различные сервис­ные процедуры, макрокоманды и т. п. По завер-я

i

t шению разработки эти инструментальные набо­ры, как правило, предаются забвению или, в | лучшем случае, остаются в личных архивах | авторов. Язык Си, однако, эта участь миновала. § Вполне возможно, что его становлению способ-| ствовало- последующее всемирное признание •^ операционной системы Unix.

Как алгоритмический язык сравнительно низкого уровня, т. е. достаточно близкий к ас­семблеру, Си имел предшественников в лице . аналогичных инструментальных средств - язы-; ков CPL, BCPL (сокр. от Basic Combined Pro-| gramming Language - базовый комбинирован-i ный язык программирования) и В. Два первых языка разрабатывались в конце 60-х гг. в Кемб­риджском университете в качестве машинно-не­зависимых языков для создания трансляторов1. Последний был придуман К. Томпсоном - со­трудником Bell Laboratories и автором операци­онной системы Unix. В отличие от своих пред­шественников, Ритчи наряду с машинно-ориен­тированными типами данных (байт, слово) ввёл в состав Си объекты и операторы, присущие универсальным языкам (числовые и символь­ные переменные, структурные блоки), сохра­нив при этом элементы, характерные для мак­роассемблера MACRO-11 (логические операции над битами, сдвиги, работа с адресами и реги­страми).

Первым программным продуктом, написан­ным почти полностью на Си, был компилятор с языка Си в код машинных команд PDP-11/20 (прототип СМ-4). В 1973 Ритчи и Томпсон пере­писали на Си большую часть операционной си­стемы Unix. Из 13000 машинных команд для PDP-7, на которой появилась первая версия Unix, только 800 пришлось вручную перевести в ассемблер PDP-11. В процессе перевода Unix из однопользовательской операционной систе­мы, ориентированной на работу в конкретной ЭВМ, превратилась в мобильную операционную систему коллективного пользования. Успех этой операции в значительной мере предопре­делил популярность новой операционной систе­мы и её базового инструмента - языка Си. Б 1976 Ритчи и Томпсон перенесли Unix с ЭВМ фирмы DEC на компьютеры другой архитекту­ры (Interdata 8/32), практически ничего не изменив в ядре операционной системы, напи­санном на Си. Точно таким же образом Unix распространялся на десятках машин различных типов.

В 1978 появилась первая книга, посвящённая описанию Си и технике программирования не

этом языке, которая с большим запозданя была переведена на русский язык (Ken»81* ган Б., Ритчи Д., Фьюэр А. Язык программ^ рования Си. Задачи на языке Си. М.: Фиван и статистика, 1985). От фамилий двух перв^* авторов произошло сокращённое обозначенм* первого, никем не утверждавшегося, но пpивяe того всеми программистами стандарта язык Си - K&R. а

Дальнейшая работа по совершенствованию языка Си и принятию в 1987 первого настояше го стандарта ANSI С была выполнена на обще­ственных началах рабочей группой при Амери­канском национальном институте стандартов Возглавлял эту работу сотрудник Bell Labs Л. Рослер. Наиболее серьёзный вклад в разви­тие языка Си за последние годы внёс ещё один представитель той же лаборатории Б. Страуст-руп, который ввёл в обращение новые объек­ты - классы, объединяющие данные и обраба­тывающие их функции.. С 1983 за расширенной версией языка Си с классами закрепилось назва­ние C++.

Первые версии Си подвергались серьёзной критике за отсутствие достаточной строго­сти, что приводило к многочисленным ошиб­кам из-за работы с неинициализированными переменными, отсутствия контроля за выходом индексов у элементов массивов за установлен­ные пределы, несоответствия типов формаль­ных и фактических параметров функций и т. п. Перед системными программистами Bell Labs эти проблемы остро не стояли, т. к. они пользо­вались специальной программой Lint, которая проводила тщательный анализ программ, напи­санных на Си, перед их трансляцией и выпол­нением. Для рядовых пользователей ситуация изменилась с появлением интегрированных сред, среди которых наибольшую популярность приобрели Турбо-системы фирмы Borland. Пер­вая версия Turbo С, работавшая в среде MS-DOS, была выпущена в 1987. К середине 1995 фирма Borland вышла на рынок с вер­сией 4.5, предназначенной для работы под уп­равлением Windows. Известны и другие реали­зации языка Си на IBM-совместимых ПК - Mi­crosoft С, Lattice С, Zortech С, Symantec С. Но в нашей стране продукция фирмы Borland по­лучила наибольшее распространение.


Задание 1.

Вариант В.


1.

Константа— идентификатор, обозначающий некоторую неизвестную величину (значение данных) определенного типа. Константы, так же как и переменные, объявляться в декларационной части программы (или процедуры) до момента своего использования в процессе вычисления.

Объявление констант начинается зарезервированным словом CONST. Затем следует имя константы, символ равенства и значение этой константы. Например:


CONST Name=’Alex’;


CONST Age=18;


После объявления константы ее можно вызывать по объявленному имени из произвольного места программы.

Типизированные константы представляют собой инициализированные переменные, значение которых используется в программах наравне с обычными переменными. В отличии от нетипизированных констант, описанных выше, в описании типизированной константы указывается как тип, так и значение константы, т.е. она позволяет объявлять переменные и тут же присваивать им начальное значение.

Типизированные константы обладают всеми преимуществами переменных, в частности, они могут использоваться в левой части оператора присваивания. К их преимуществам можно отнести и то, что они инициализируются только один раз— в начале выполнения программы. Таким образом, типизированные константы, объявленные в какой-либо процедуре или функции, при каждом новом ее выполнении не инициализируются заново.


CONST

Year:INTEGER=2000;

Mon:String=’December’;


2.

Тип файл представляет собой последовательность компонент одного типа, расположенных на внешнем устройстве. Компоненты могут быть любого типа, за исключением типа файл (или содержащего компоненты типа файл) и типа объекта. Число компонент в файле не объявляется.

Для задания типа файл следует использовать зарезервированные слова file и of, после чего указать тип компонент файла.

Type

number = file of integer;

symb = file of ‘A’..’Z’;


Стандартный тип Text определяет тип файла, содержащий символы, объединенные в строки. Следует иметь ввиду, что тип Text в Турбо-Паскале не эквивалентен тину file of char.

Введя файловый тип, можно определять переменные файлового типа:


Var

F1:number;

F2:Text;


В Турбо-Паскале можно использовать файл без типа, при определении которого не указывается тип компонент. В этом случае работа с файлом осуществляется на физическом уровне в соответствии с внутренним форматом его данных. При этом реальные компоненты файла могут иметь и различный тип.

Тип файл можно определять и непосредственно при введении файловых переменных.

Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивание значений, сравнивание и т.д.). Кроме того, через файловую переменную можно получить информацию о конкретном файле (тип, параметры, имя и т.д.).

Задание 2(8).


Var

x,a,b,c,y:real;


Begin

write (‘Введите 2 числа’ );

readln ( y,b);

c:=y+b;

a:=sqr (sin(c*c*c)/cos(c*c*c));

b:=sqrt (y+b)/(y*pi);

x:=a+b;

writeln (‘x=’,x:7:2);

End.


Задание 3-а(5).

Uses crt;

Var

a,b:array[1..10] of integer;

i,m:byte;

Begin

clrscr;

m:=1;

for i:=1 to 10 do

begin

write (‘Введите ’,i,‘-ый элемент массива:’);

readln (a[i]);

if a[i]<0 then begin

b[m]:=a[i];

inc(m);

end;

end;

clrscr;

writeln (‘Исходный массив:’);

for i:=1 to 10 do write (a[i]);

writeln;

writeln (‘Массив, состоящий из отрицательных чисел:’);

for i:=1 to m do write (b[i]);


End.

Задание 4(8).

Uses crt;

Type

tcm=record

name: string[50];

amountw:integer;

amountwo:integer;

date:string[8];

Var

cm=tcm;

F1:file of tcm;

F2: text;

m:char;

Begin

clrscr;

assign (F1,’1.dat’);

assign (F2,’1.txt’);

rewrite (F1);

rewrite (F2);

repeat

clrscr;

write (‘Введите фамилию и инициалы ’);

readln (cm.name);

write (‘Введите количество голосующих акций ’);

readln (cm.amountw);

write (‘Введите количество неголосующих акций ’);

readln (cm.amountwo);

write (‘Введите дату регистрации ’);

readln (cm.date);

write (F1,cm);

writeln (‘Чтобы закончить ввод, введите *’);

readln (m);

until m=’*’;

while not eof(F1) do

begin

read (F1,cm);

if cm.amountw>100 then write (F2, cm.name, cm.amountw, cm.amountwo, cm.date);

end;

close (F1);

close (F2);

End.


6. Языки программирования и их классификация.

Отечественное программирование зародилось в 50-х годах 20 века в крупных научных центрах, осваивавших первые советские вычислительные машины БЭСМ и «Стрела».

При поверхностном взгляде выбор языковой гаммы продиктован следующими ступенями становления программиста:

Бэйсик — первая ступень, школьная информатика;

Паскаль — вторая ступень, информатика в специализированных школах и большинстве ВУЗов;

Си, Си++ — третья ступень, стандартное профессиональное образование;

Visual Basic — четвертая ступень, программирование в среде Windows.

Однако при более глубоком анализе можно заметить очень тесное взаимопроникновение со­временных версий алгоритмических языков и сближение их функциональных возможностей. В развитых современных системах программи­рования предлагаются примерно эквивалентные возможности. Там, где трудно обойтись стандар­тными средствами алгоритмического языка вы­сокого уровня, используют вставки из ассемб­лерных строк (т. е. команд машинного языка). Иногда тот или иной язык вырывается вперёд. Например, появление и развитие элементов объ­ектно-ориентированного программирования в Си++ моментально вызвало к жизни аналогич­ные изменения в других языках. Революцион­ная идея общедоступного «визуального» про­граммирования, предложенная в системе Visual BASIC, сразу же была подхвачена в среде Visual С и в той или иной мере нашла своё отражение в новых версиях Borland C++.

Своим названием BASIC обязан сокращению фразы Beginner's All-purpose Symbolic Instruc­tion Code, которая дословно переводится как многоцелевой код (язык) символических инст­рукций для начинающих. Авторство и первая реализация языка Бейсик принадлежат груп­пе преподавателей и студентов Дартмутского колледжа во главе с профессорами Дж. Кемени и Т. Куртцем, которые 1 мая 1964 вдохнули жизнь в первый Бейсик-интерпретатор.

Бейсик был одним из первых алгоритмиче­ских языков, в составе которого изначально присутствовали операторы общения пользова­теля с пошагово выполняющейся программой. Одновременно с текстом сообщения об ошибке Бейсик-система сообщала номер строки про­граммы, нарушившей синтаксис языка или приведшей к аварийной ситуации. Первые Бей­сик-системы, совмещавшие в себе возможности ввода, редактирования, исполнения и отладки программ, послужили прототипами современ­ных интегрированных сред.

Заметную роль в разработке стандарта языка Паскаль и совершенствовании его средств вво­да/вывода сыграла рабочая группа Британского института стандартов во главе с А. Эддиманом. Британский стандарт был принят в 1982, а несколько позднее его утвердила международ­ная организация ISO. Однако к этому времени Н. Вирт, недовольный предложениями рабо­чей группы, отказался от сотрудничества по совершенствованию Паскаля и переключился на новый проект Модула.

Язык Паскаль довольно долго оставался средством для изучения программирования в университетах, т. к. ни одна серьёзная компь­ютерная фирма его не поддерживала. Пере­лом в отношении к этому языку наметился в 1984, когда молодой француз Ф. Кан привёз в США необычайно скоростной компилятор Turbo-Pascal для IBM-совместимых ПК.

Язык Си был придуман в 1972 сотрудником Bell Laboratories (отделение известной телефон­ной компании AT&T) Д. Ритчи, одним из пер­вых пользователей операционной системы Unix, и задумывался не как универсальный алгоритмический язык, а, скорее, как инстру­мент для развития операционной системы и создания новых обслуживающих программ (утилит).

Первым программным продуктом, написан­ным почти полностью на Си, был компилятор с языка Си в код машинных команд PDP-11/20 (прототип СМ-4). В 1973 Ритчи и Томпсон пере­писали на Си большую часть операционной си­стемы Unix. Из 13000 машинных команд для PDP-7, на которой появилась первая версия Unix, только 800 пришлось вручную перевести в ассемблер PDP-11. В процессе перевода Unix из однопользовательской операционной систе­мы, ориентированной на работу в конкретной ЭВМ, превратилась в мобильную операционную систему коллективного пользования. Успех этой операции в значительной мере предопре­делил популярность новой операционной систе­мы и её базового инструмента - языка Си. Б 1976 Ритчи и Томпсон перенесли Unix с ЭВМ фирмы DEC на компьютеры другой архитекту­ры (Interdata 8/32), практически ничего не изменив в ядре операционной системы, напи­санном на Си. Точно таким же образом Unix распространялся на десятках машин различных типов.

Дальнейшая работа по совершенствованию языка Си и принятию в 1987 первого настоящего стандарта ANSI С была выполнена на обще­ственных началах рабочей группой при Амери­канском национальном институте стандартов Возглавлял эту работу сотрудник Bell Labs Л. Рослер. Наиболее серьёзный вклад в разви­тие языка Си за последние годы внёс ещё один представитель той же лаборатории Б. Страуструп, который ввёл в обращение новые объек­ты - классы, объединяющие данные и обраба­тывающие их функции.. С 1983 за расширенной версией языка Си с классами закрепилось назва­ние C++.

Вообще, дается большое количество классификаций языков программирования по различным признакам, но наиболее распространенными являются:

языки программирования бывают — высокого (Паскаль, Бэйсик) и низкого уровня (Ассемблер); строго типизированными (Паскаль) и нестрого типизированными (Бэйсик); с поддержкой объектно-ориентированного программирования (Си++) и без и т.д.


Задание №1.

Вариант Р.


  1. Какие строковые функции используются в Турбо-Паскале? Задайте какие-либо строковые переменные и примените к ним строковые функции.


В Турбо-Паскале существует тип данных String (строка), специально предназначенный для обработки строк (цепочек символов). Он не относится к простым типам данных и занимает промежуточное место между простыми и структурированными типами данных.

Переменная типа String состоит из цепочки символов, т.е. элементов типа Char. Строки могут выводиться на экран монитора посредством стандартных процедур Write и WriteLn и вводиться с помощью стандартной процедуры ReadLn или Read. В большинстве случаев переменные типа String используются для хранения слов и сообщений, состоящих из нескольких символов.

Турбо-Паскаль представляет в распоряжение пользователей целый ряд процедур и функций, предназначенных для обработки строк.

Length — позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной.

Var

Words: String;

Begin

Write (‘ Введите слово:’);

ReadLn (Words);

WriteLn;

WriteLn (‘Это слово состоит из ‘, Length (Words),’букв’);

End.

UpCase — позволяет преобразовать любой символ из строчного в прописной. Эта функция рассчитана на обработку отдельного символа. Русские литеры не могут обрабатываться этой функцией.

Var

S: String;

I: Integer;

Begin

S:=’alex’;

For I=1 to 4 do S[I]:=UpCase (S[I]);

WriteLn (S);

End.

На экран будет выведена надпись: ALEX.

Copy — позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая данную функцию необходимо указать следующие параметры:

  1. имя строки, из которой должен извлекаться копируемый фрагмент;

  2. позицию в строке, начиная с которой будет копироваться фрагмент;

  3. число копируемых символов.

Var

s:string[8];

s1:string[3];

Begin

s:=’домашний’;

s1:=Copy (s,1,3);

writeln (s1); {на экран выводится: дом}

End.

Pos — с помощью этой функции можно осуществить в некоторой строке поиск определенного фрагмента. Если заданный фрагмент в строке присутствует, то функция возвращает номер позиции в строке, с которой этот фрагмент начинается. Если фрагмент не найден в строке, то функция возвращает нуль.

...

s:=’машина’;

i:=pos (‘шина’,s);

if i=0 then writeln (‘ данный фрагмент не содержится в строке’) else

writeln (‘ данный фрагмент содержиться в строке начиная с ‘,i:3,’ позиции.’);

...


  1. Как формируется имя переменной файлового типа в тексте программы? По каким правилам формируется имя файла в операционной системе MS-DOS? Какая процедура используется для связывания конкретной файловой переменной программы с конкретным файлом на внешнем устройстве? Приведите примеры имен файловой переменной и имен файла на внешнем устройстве.


Правила формирования файловой переменой в языке Турбо-Паскаль совпадают с правилами формирования обычной переменной:

  1. переменная должна состоять из латинских строчных и/или прописных букв, а также арабских цифр от 0 до 9 (цифры можно использовать наряду с буквами начиная со второй позиции) и символа подчеркивания (ASCII-код 95);

  2. имя переменной должно начинаться с латинской буквы или символа подчеркивания;

  3. пробел в Турбо-Паскале является разделителем и не может быть использован в имени переменной;

  4. применение других символов в именах переменных не допускается;

  5. зарезервированные слова также не могут быть использованы в качестве имен переменных.


Имена файлов в системе MS-DOS.

Каждый файл на диске имеет обозначение, которое состоит из двух частей: имени и расширения ( часто имя и расширение вместе также называют именем, как правило, это не приводит к путанице). В имени файла может быть от 1 до 8 символов. Расширение начинается с точки, за которой следует от 1 до 3 символов. Например:

command

autoexec.bat

config.sys

paper.doc

Имя и расширение могут состоять из прописных и строчных латинских букв, цифр и символов: - _ $ # & @ ! % () {} ’ ~ ^

Расширение имени файла является необязательным. Оно, как правило, описывает содержимое файла, поэтому использование расширения файла весьма удобно.

В имени и расширении имени файла прописные и строчные латинские буквы являются эквивалентами, так как DOS переводит все строчные буквы в соответствующие прописные буквы.


Процедурой, которая связывает имя файловой переменной с конкретным файлом на диске, является процедура Assign(<имя файловой переменной>,<имя файла на диске>).

Var

filename: file of integer;

path:string;

Begin

write (‘ Введите имя файла на диске:’);

readln (path);

assign (filename,path);

...


Задание №2.

9.Вычислить значение переменной по расчетной формуле и исходным данным. На экран вывести значение исходных данных и результаты расчетов.

Q=


uses crt;

var

q,b,s,x:real;

begin

clrscr;

write ('Введите значение x:');

readln (x);

write ('Введите значение b:');

readln (b);

write ('Введите значение s:');

readln (s);

clrscr;

q:=(b*sqrt(x)-s)/(exp(s*x)-1);

writeln ('Исходные данные');

writeln ('x=',x:5:2,',b=',b:5:2,',s=',s:5:2);

writeln ('Результат');

writeln ('Q=',q:8:2);

readln;

end.


Задание №3а.

  1. Ввести одномерный массив X вещественных чисел. Размерность массива 7. Переписать элементы этого массива в обратном порядке в массив Y. Вывести на экран массивы X и Y.


uses crt;

var

x,y:array [1..7] of real;

i:integer;

begin

clrscr;

writeln ('Ввод элементов массива');

for i:=1 to 7 do

begin

gotoxy (29,2);

writeln (' ');

gotoxy (1,2);

write ('Введите ',i,'-й элемент массива:');

readln (x[i]);

end;

for i:=7 downto 1 do y[i]:=x[8-i];

clrscr;

writeln ('Массив X:');

for i:=1 to 7 do

begin

write (x[i]:3:2,';');

end;

writeln;

writeln ('Массив Y:');

for i:=1 to 7 do

begin

write (y[i]:3:2,';');

end;

end.


Задание №3б.

  1. Написать программу анализа динамики поквартального роста дохода различных социальных слоев населения в течении года. Для этого ввести количество категорий слоев населения, название категорий населения и величину дохода каждой категории по кварталам. Определить средний доход по всем категориям за каждый квартал и во сколько раз увеличился доход в четвертом квартале по сравнению с первым. Исходные данные и результаты расчетов представить в виде таблицы.


uses crt;

type

tkat_inf=record

name:string[30];

income:array [1..4] of real;

end;


var

num,int:integer;

kat_inf:array [1..100] of tkat_inf;

first,second,third,forth:real;


procedure input_data(var n:tkat_inf);

var i:integer;

begin

clrscr;

write ('Введите название категории:');

readln (n.name);

for i:=1 to 4 do

begin

gotoxy (44,2);

writeln (' ');

gotoxy (1,2);

write ('Введите доход данной группы за ',i,'-й квартал:');

readln (n.income[i]);

end;

end;


procedure output_data (b:tkat_inf);

var i:integer;

begin

writeln

(b.name:30,'|',b.income[1]:7:2,'|',b.income[2]:7:2,'|',b.income[3]:7:2,'|',b.income[4]:8:2,'|',b.income[4]/b.income[1]:15:2);

writeln ('------------------------------+-------+-------+-------+--------+---------------');

end;

Begin

clrscr;

num:=101;

while num>100 do

begin

write ('Введите количество категорий населения (<=100):');

readln (num);

end;

for int:=1 to num do input_data (kat_inf[int]);

clrscr;

writeln ('-----------------------------------------------------------------------------------------');

writeln ('Название категории | Средний доход | Увеличение ');

writeln (' |----------------------------------| дохода ');

writeln ('