Главная Другое
Экономика Финансы Маркетинг Астрономия География Туризм Биология История Информатика Культура Математика Физика Философия Химия Банк Право Военное дело Бухгалтерия Журналистика Спорт Психология Литература Музыка Медицина |
страница 1 ФЕДЕРАЛЬНОЕ АГЕНТСТВО ОБРАЗОВАНИЯ Государственное образовательное учреждение высшего профессионального образования “Оренбургский государственный университет” Кафедра программного обеспечения вычислительной техники и автоматизированных систем
Методические указания к контрольным работам ЧАСТЬ 1
государственного образовательного учреждения высшего профессионального образования “Оренбургский государственный университет”
УДК 004.44(075.8) ББК 32.973.26-018.1я73 И 97
Рецензент Доктор технических наук Шепель В.Н. Юркевская Л.А. И 97 Программирование на языках высокого уровня: Методические указания к контрольным работам. - Оренбург: ГОУ ОГУ, 2008. – с. В методических указаниях содержатся материалы, необходимые для самостоятельной подготовки студентов к выполнению контрольных работ по курсу «Программирование на языках высокого уровня». В описание лабораторных работ включены цель работы, порядок ее выполнения, рассмотрены теоретические вопросы, связанные с реализацией поставленных задач, приведена необходимая литература. В приложениях представлены правила оформления результатов лабораторной работы. Методические указания предназначены для выполнения контрольных работ по дисциплине «Программирование на языках высокого уровня»для студентов специальности 220400 – «Программное обеспечение вычислительной техники и автоматизированных систем».
И
1404000000 6Л9-04
ББК 32.973.26-018.1я73 © Юркевская Л.А., 2008 © ГОУ ОГУ, 2008
Содержание Введение 4 1 Задание № 1.Стандартные типы данных.Программирование алгоритмов линейной структуры. 5 2 № 2. Программирование алгоритмов ветвящейся структуры. 93 Задание № 3. Программирование алгоритмов циклических вычислительных процессов4 Задание № 4. Обработка символьных и числовых последовательностей 5 Задание № 5. Массивы и множества. 6 Задание № 6. Модульное программирование. Создание пользовательских подпрограмм.
7 Задание № 7. Файлы. Использование файлов для обработки и хранения данных.Список использованных источников 43 Приложение А Пример оформления отчета контрольной работы 44Приложение Б Пример оформления приложений отчета контрольнойработы 51![]() Введение Предлагаемый материал посвящен основам программирования на языках высокого уровня одной из важнейших составных частей инженерного образования по информатике и вычислительной технике. Язык программирования – это средство записи программы решения различных задач на ЭВМ в «понятной для компьютера форме». В настоящее время используются несколько сотен языков программирования, которые используются пользователями для решения задач различной сложности. Наиболее распространенными являются языки программирования Паскаль и Си, языки гипертекстовой разметки для создания Web- приложений и другие. В данных методических указаниях рассмотрены примеры создания программ на языке Паскаль(часть 1) и на языке Си(часть вторая). Основы программирования являются фундаментом для курсов «Объектно–ориентированное программирование», «Структуры и алгоритмы обработки данных» и , кроме того, опыт программирования , приобретенный студентами при изучении данного курса будет активно использоваться при дальнейшем обучении. В методических указаниях содержатся материалы, необходимые для самостоятельной подготовки студентов к выполнению лабораторных работ по разделу «Программирование на языках высокого уровня». В описание лабораторных работ включены цель работы, порядок ее выполнения, рассмотрены теоретические вопросы, связанные с реализацией поставленных задач, приведена необходимая литература. В приложениях представлены правила оформления результатов лабораторной работы. 1 Задание № 1. Программирование линейных вычислительных процессов. Цель: - закрепить понятия «синтаксис языка», «семантика языка», «структура программы», «тип данного»; - сформировать умения и навыки программирования линейных вычислительных процессов; - сформировать навыки изображения алгоритма программы в виде схемы. Основы теории Алфавит языка Паскаль
которые используются для построения лексем. Лексемой является минимальная смысловая единица языка программирования. В Паскале различаются следующие классы лексем:
Стандартные идентификаторы и зарезервированные слова запрещается использовать в качестве имен переменных, констант, пользовательских подпрограмм, модулей и т.д.. СТРУКТУРА ПРОГРАММЫ. Программа представляет собой специально организованную последовательность шагов по преобразованию данных, приводящую к решению некоторой задачи. Основной принцип : все именованные объекты (данные, процедуры, функции и др.), на которые имеются ссылки в программе должны быть предварительно объявлены. Программа на языке Паскаль состоит из двух частей: заголовка и блока операторов. Общая структура программы
A2: <> = <выражение>; задание констант TYPE T1 =<вид типа>; введение нестандартных типов данных VAR <список переменных >:<тип>; описание переменных PROCEDURE описание процедур и функций FUNCTION
Процедуры и функции должны вызываться <операторы> END.
ЦЕЛЫЕ ТИПЫ ПАСКАЛЯ
Над целочисленными значениями определены основные операции: + , - , *, div , mod, / арифметические операции над целочисленными значениями выдают результат целого типа , за исключением операции / , выдающей результат действительного типа. С целыми значениями можно производить операции сравнения: >, <, >=, <=, < > ВЕЩЕСТВЕННЫЕ ТИПЫ
С вещественными типами используются четыре арифметических операции: +, -, *, /, выдающие результат вещественного типа Вычисление XY рекомендуется производить следующим образом:
Логический тип данных описывается ключевым словом boolean, например: Const a=true; /////////// Const cil:Boolean=false; ///////////////////////////////// Var t:boolean; ////////////////////////// First_1:Boolean: Переменная логического типа может принимать значения: либо логического выражения, либо логической переменной, либо значения false или true. Символьный (литерный ) тип данных. Переменные этого типа принимают значения из определенной упорядоченной последовательности символов, обозначающих алфавит компьютера. Список символов содержится в таблице ASCII кодов(АСКИ – код- американский стандартный код для обмена информацией). Номер, который имеет символ в таблице, называется кодом этого символа. Символ в памяти занимает 1 байт. Кодовая таблица ASCII содержит 256 символов и делится на две части: основную и альтернативную. Первая часть содержит символы с кодами 0-127. В эту группу входят:
Для задания литерных констант наряду с классической формой (символ в апострофах) используется представление #<код>. Так запись ‘A’ эквивалентна #65, а ‘T’- #49. Для распознавания символов могут пригодиться следующие неравентсва: ‘0’<=C<=’9’-символ С –цифра; ‘a’<=C<=’z’-символ С- строчная буква латинского алфавита; ‘A’<=C<=’Z’- символ С – прописная буква латинского алфавита. С литерными значениями работают функции: Succ(C), Pred(C) и три функции преобразования Ord(c),Chr(код),Upcase( c). Например, Ord(‘0’)=48; Chr(49)=’0’;Ord(‘A’)=65, Chr(65)=’A’, pred(‘b’)=’a’, pred(‘9’)=’8’, succ(‘8’)=’9’, upcase(‘y’)=’Y’(аналогично и для любого другого символа, отличного от строчной латинской буквы). Объявление переменных символьного типа: Var c1,c2,sim: char; Const s=’A’; (или равносильно const s=#65) НЕКОТОРЫЕ СТАНДАРТНЫЕ ФУНКЦИИ ЯЗЫКА ПАСКАЛЬ
Алгоритм - это точное предписание, задающее вычислительный процесс, направленный на получение результатов соответствующих определенным входным данным. Для представления алгоритма в виде схемы используют следующие графические блоки: ![]() ![]() А ![]() ![]() лгоритм линейной структуры - алгоритм, в котором блоки выполняются последовательно друг за другом, в порядке, заданном схемой. Такой порядок выполнения называется естественным. Пример: Вычислить площадь треугольника со сторонами a,b,c по формуле Герона S = O p(p-a)(p-b)(p-c) , где p = (a + b + c) / 2 ![]() Правила записи выражений в Паскале. Выражения используются для задания порядка действий и содержат константы, переменные, названия функций, знаки операций (арифметических, логических, сравнения), круглые скобки. Результатом вычисления выражений могут быть переменные любого типа за исключением файлового. Порядок выполнения операций в выражении определяется :
Значение выражение вычисляется следующим образом: сначала выполняются вычисления в скобках, затем все действия в выражении слева направо с учетом приоритета операций. Приоритет операций:
Оператор присваивания в Паскале имеет вид А:=С; Где А – переменная любого типа за исключением файлового; С- выражение, совместимое по типу с А. Ввод данных в программе осуществляется при помощи следующих ператороов: Read(a1,a2,…,an); Readln(a1,a2,….,an); Где а1, а2, …, аn- идентификаторы числовых, литерных или строковых типов. Отличие операторов readln и read в том, что после считывания значения для последней переменной оставшаяся часть строки данных пропускается. Например, 1 23 55 66 22 80 90 после считывания операторами readln(a,b,c); read(d,e); переменные примут значения: a=1,b=23,c=55,d=80,e=90. После считывания с клавиатуры данных операторами Read(a,b,c);read(d,e); Переменные примут следующие значения. a=1,b=23,c=55,d=66,e=22. Вывод данных на дисплей осуществляется при помощи операторов Write(b1,b2, .., bn); Writeln(b1,b2,..,bn); . Здесь b1,b2, .., bn – переменные, константы и выражения, имеющие любой стандартный или строковый тип. Отличие этих двух операторов состоит в том, что после выполнения процедуры Write курсор на экране остается на строке вывода, во втором случае после вызова процедуры Writeln курсор на экране переводится на следующую строку. ПРИМЕРЫ ЛИНЕЙНЫХ ПРОГРАММ Рассмотрим простой пример программы на языке Pascal. Программа вычисляет площадь круга.
Пример1.
Найти произведение цифр заданного целого положительного четырехзначного числа N. PROGRAM PR_1; VAR N,P :word; N1, N2, N3, N4 : byte; BEGIN
Writeln(‘ введите натуральное 4-х значное число’); Readln (N); {ввод заданного числа} N4:= N mod 10; { последняя цифра} N1:= N mod 1000; { первая цифра} N2:= N div 100 mod 10;{вторая цифра} N3:= N div 10 mod 10; {третья цифра} P:= N1*N2* N3*N4; Writeln (‘ ‘,N :5, ‘ ‘, P:6); Readln; End.
Пример 2. Для заданного вещественного числа определить последнюю цифру его целой части и первую цифру дробной части PROGRAM PR_2; VAR A: real; {исходное вещественное число} B: longint; C : real; {рабочая переменная} BEGIN Writeln (‘ Введите вещественное число ‘); { строка – приглашение к вводу} Readln (A); {ввод числа} B:= Trunc (A); {отбрасывание дробной части} Writeln( ‘ Последняя цифра целой части‘, B mod 10); C:= Frac( A); {выделение дробной части} Writeln (‘ Первая цифра дробной части‘, Trunc (C*10)); Readln;
End. Пример 3. Написать программу, которая печатает true или false в зависимости от того, выполняется или нет заданное условие: Квадрат заданного трехзначного целого положительного числа равен кубу суммы цифр этого числа. PROGRAM PR_3; VAR
N1,N2, N3, S :byte; {} N: word; {} T: boolean; {} BEGIN
Writeln (‘ ‘); Readln (N); N1:= N div 100; N3:=N mod 10; N2:= N div 10 mod 10; S:=N1+N2+N3; T:= Sqr(N)= Sqr (S) *S; Writeln(T); Readln; End.
ВАРИАНТЫ ИНДИВИДУАЛЬНЫХ ЗАДАНИЙ К КОНТРОЛЬНОЙ РАБОТЕ ЗАДАНИЕ №1 ЗАДАЧА 1.
uses CRT; function func(xx: Extended): Extended; begin func:=exp(-2*xx) - 2*xx + 1 end; function dfunc(xx: Extended): Extended; begin
dfunc := -2*exp(-2*xx) - 2 end;
eps0 : Real = 0.1; deps = 10; eps_count = 12; x0 :Extended = 3; VAR r, r1: Extended; count: array [1..eps_count] of Integer; i, c: Integer; ln10: Extended; BEGIN
ClrScr; ln10 := ln(10); for i:=1 to eps_count do begin
r1 := x0; r := r1 - func(r1)/dfunc(r1); c:=1; while abs(r - r1) > eps0 do begin r1 := r; r := r1 - func(r1)/dfunc(r1); { writeLn(c,' ',r,' ',r1);} inc(c);
{ if KeyPressed then Halt(0);} end;
count[i]:=c; WriteLn(r,' ',eps0:8,' ', count[i],' ',-ln(eps0)/ln10:8:0); eps0 := eps0 / deps; end;
END.
ЗАДАЧА 2 Написать программу, в результате выполнения которой булевская переменная t получает значение TRUE, если выполняется заданное условие, и FALSE в противном случае (Оператор If не использовать).
2 Задание № 2. Тема: «Программирование алгоритмов ветвящейся структуры»Цель: - изучить операторы перехода языка программирования - сформировать умения и навыки программирования разветвляющихся вычислительных процессов; - сформировать навыки изображения алгоритма программы в виде схемы. Основы теории Простые операторы Операторы, не содержащие в себе никаких других операторов, называются простыми. Оператор присваивания (:=) Этот оператор предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор, который расположен в левой части. Формат: <идентификатор>:=<выражение>; Пример:
Sort:=1; Result:=Sin(A)+Cos(B)
Goto М; безусловный оператор, используется для перехода в программе на оператор с меткой М. Метка должна быть описана в разделе описаний, например: Label m1; …..
m1: a:=2; …. Goto m1; ........ Оператор вызова процедуры состоит из идентификатора, непосредственно за которым распологается в круглых скобках список фактических параметров. Оператор процедуры без параметров состоит только из идентификатора процедуры, например: sin(x), random. Выполнение оператора процедуры приводит к активизации действий, описанных в её теле. Структурные операторы Структурные операторы представляют собой структуры, построенные из других операторов по строго определенным правилам. Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками begin и end. Формат:
begin <оператор> ............ <оператор> end: Пример: begin A:=A*B+(N-D); Rez:=A+B*Pi; writeln(Rez:12:6); end;
Оператор условия обеспечивает выполнение или невыполнение некоторого оператора, группы операторов или блока в зависимости от заданных условий Pascal допускает использование двух условных операторов: if и case. Оператор условия if может принимать одну из следующих форм: if B then S1 else S2; - если условие B выполняется( т.е. принимает значение TRUE), то выполняется оператор S1, иначе (т.е. B равно FALSE) выполняется оператор S2. if B then S1; - если условие B равно TRUE, то выполняется оператор S1 , иначе никаких действий не производится и управление передается следующему за if оператору. ![]() Рисунок 2.1 Схема действия оператора if B then S1 else S2. if B then S1; - если условие B равно TRUE, то выполняется оператор S1 , иначе никаких действий не производится и управление передается следующему за if оператору. ![]() Рисунок 2.2 Схема действия оператора if B then S1. B-это выражение булевского типа. S1,S2,S- простые или составные операторы. Пример:
A:=2; B:=8; if A>B then writeln ( ‘A больше B ‘) else writeln (‘ A меньше B ‘); Один оператор if может входить в состав другого оператора if. В таком случае говорят о вложенности операторов: if B1 then if B2 then S1 else S2; B1,B2-это выражениe булевского типа. S1,S2- простые или составные операторы. При вложенности операторов каждое else соответствует тому then, которое непосредственно ему предшествует. Пример:
if A begin writeln( ‘A D:=A*B; end else begin writeln(‘ A>=B ‘); D:=A/B; end; Оператор выбора case является обобщением оператора if и позволяет сделать выбор из произвольного числа имеющихся вариантов в зависимости от ключа выбора. Как и в операторе if здесь может присутствовать слово else, имеющее тот же смысл. Формат: Case N of M1: S1; …… Mi : Si Else S End;
Здесь N- переменная или выражение, именуемое переключателем варианта; M1,…,Mi- значения (константы) переключателя, называемые его меткамиж S1,…,Si - простые или составные операторы; S- совокупность операторов. Пример:
Case (K+1) *z of 1..10 : begin end; 2 : Add (A, B); 11..15 : begin end; 4 : Multiply (A, B); 0 : Subtract (A, B); else end; Writen ( Ошибка! ); end;
Переключатель и его метки могут быть любого порядкового типа.Переключатель и его метки обязательно должны совпадать по типу. Метки переключателя являются внутренними метками оператора Case и не должны описываться в разделе описаний Label основной программы. Перед выполнением оператора Case значение переключателя должно быть определено. Case передает управление тому оператору из S1,…,Si, значение метки которого совпадет со значением переключателя. Если значение переключателя не совпадает ни с одним значением меток S1,…,Si, то управление передается оператору S.
Рисунок 2.3 – Схема действия оператора case ВАРИАНТЫ ИНДИВИДУАЛЬНЫХ ЗАДАНИЙ Задание №2 Задача 1. 1Даны 3 различных действительных числа X,Y,Z. Если их сумма меньше 1, то наименьшее из них заменить полусуммой двух других, в противном случае заменить наименьшее из X иY полусуммой двух оставшихся. 2 Даны действительные числа X,Y. Если X,Y- отрицательны, то каждое значение заменить его модулем; если отрицательно только одно из них, то оба значения увеличить на 0.5; если оба значения не отрицательны и ни одно из них не принадлежит отрезку [0.5,2], то оба значения уменьшить в 10 раз; в остальных случаях X и Y оставить без изменения. 3 Определить в какую четверть координатной плоскости попала точка с координатами (X,Y). Переменной N присвоить номер четверти. Если точка попала в начало координат, то N=0. Если точка попала на ось или , то напечатать сообщение об этом. 4 Даны числа A1,B1,C1,A2,B2,C2. Напечатать координаты точек пересечения прямых: A1x+B1y=C1 и A2x+B2y=C2, либо сообщить, что эти прямые совпадают, не пересекаются или вовсе отсутствуют. 5 Даны действительные числа A,B,C,D,S,T,U(S,T одновременно не равны нулю). Определить, лежат ли точки (A,B) и (C,D) на прямой, заданной уравнением Sx+Ty +U=0. Если нет, то выяснить принадлежат ли они разным полуплоскостям. 6 Для целого числа К от 1 до 99 напечатать фразу «мне К лет», учитывая при этом, что при некоторых значениях, К слово «лет» надо заменить на слово «год» или «года». 7 Даны действительные числа x,y,z. Получить разность между максимальным и минимальным из этих чисел. 8 Даны натуральные числа А,В, С, которые обозначают число, месяц и год. Получить тройку чисел, соответствующую следующему дню. 9 Даны тройки чисел A1,B1,C1 и A2,B2,C2 , которые обозначают две даты. Вычислить количество дней, прошедших между этими датами. 10 Даны тройки чисел A1,B1,C1 и A2,B2,C2 , которые обозначают две даты. Вычислить количество полных лет, прошедших между этими датами. 11 Даны числа A,B,C, которые обозначают дату. Определить количество дней, прошедших с начала года. 12 Написать программу, которая вводит номер года нашей эры и печатает его название по старояпонскому календарю. В старояпонском календаре года носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. (1984 год – год зеленой крысы был началом очередного цикла). 13 Написать программу, которая по введенной дате рождения выводит название знака зодиака, соответствующее введенной дате по гороскопу. 14 Даны тройки чисел A1,B1,C1 и A2,B2,C2 , которые обозначают две даты. Определить какая дата более ранняя. Если даты равны вывести об этом сообщение. 15 Даны произвольные числа a,b,c. Выяснить существует ли треугольник с такими длинами сторон. Если треугольник существует, то определить является ли он равносторонним ил каким-либо иным. Смотрите также: Л а. юркевская программирование на языках высокого уровня
323.93kb.
1 стр.
Программа курса программирование
137.1kb.
1 стр.
2 Программирование на языке высокого уровня
4806.37kb.
29 стр.
-
281.49kb.
1 стр.
Семинар высокого уровня по модернизации статистической продукции и услуг
17.85kb.
1 стр.
Отчет пленарному заседанию по пунктам 1, 2 и сегменту высокого уровня ссылки
97.82kb.
1 стр.
Программа дисциплины программирование на языке высокого уровня С++ для специальности 2201
100.63kb.
1 стр.
Методические указания по учебной практике г. Чебоксары 2011 Введение Целью учебной практики является закрепление и углубление теоретических знаний, полученных студентами при изучении дисциплин
114.1kb.
1 стр.
Доклад комитета высокого уровня министров и должностных лиц о работе его пятого совещания
107.7kb.
1 стр.
Отчет по лабораторной работе. Лабораторная работа №1 Вычисление энтропии Шеннона Порядок выполнения работы
48.63kb.
1 стр.
Верификация программных требований к по. Инструменты автоматизации этапа
238.67kb.
1 стр.
Рішення від 23. 12. 2008 №5/26 4734 м. Маріуполь о ретрансляции российских 43.13kb.
1 стр.
|