====== Песочница ====== ===== Список ссылок ===== * [[http://www.humanities.edu.ru/db/msg/80303|ИНФОРМАТИКА И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ]] --- Н.А.Савченко. Образовательное электронное Интернет-издания для педагогов. * [[http://moodle.org/index.php?lang=ru_utf8|Moodle]] --- CMS для создания курсов и веб-сайтов. ===== Завораживающая механика ===== ===== Презентации проектов ===== {{playground:familnaja_chest_vusterov.swf?576x522|Фамильная честь Вустеров}} ===== Подсветка синтаксиса ===== ==== Работа с внешним файлом ==== | { Составить программу, которая обеспечивает ввод с клавиатуры и запись во внешний файл следующей информации о студентах гр.3120: фамилии, года рождения и оценки сессии. Обработать созданный внешний файл: вычислить средний бал группы по каждому предмету и распечатать список студентов, средний бал которых выше среднего балла группы и год рождения меньше среднего. } Program gr3120; Uses Crt; Type Student = Record FIO : string[25]; Year : integer; o1, o2, o3 : byte; End; Var f : file of Student; Group : array [1..30] of Student; St : Student; n, i : byte; co1, co2, co3, cYear : real; Begin ClrScr; Write('Введите количество студентов: ');ReadLn(n); WriteLn('Введите сведения о студентах: '); Assign(f,'gr3120.dat'); Rewrite(f); for i:=1 to n do begin with Group[i] do begin Write('Фамилия И.О.: ');ReadLn(FIO); Write('Год рождения: ');ReadLn(Year); WriteLn('Оценки за сессию:'); Write('Предмет1: ');ReadLn(o1); Write('Предмет2: ');ReadLn(o2); Write('Предмет3: ');ReadLn(o3); end; Write(f,Group[i]); end; Close(f); WriteLn('Файл записан.'); WriteLn('Содержимое файла:'); Reset(f); while not Eof(f) do begin Read(f,St); WriteLn(St.FIO:25,St.Year:6,St.o1:3,St.o2:3,St.o3:3); end; Close(f); WriteLn('Обработка данных из файла:'); co1 := 0; co2 := 0; co3 := 0; cYear := 0; Reset(f); for i:=1 to n do begin Read(f,Group[i]); with Group[i] do begin co1 := co1 + o1; co2 := co2 + o2; co3 := co3 + o3; cYear := cYear + Year; end; end; co1 := co1 / n; co2 := co2 / n; co3 := co3 / n; cYear := cYear / n; Close(f); WriteLn('Средний балл по предметам:',co1:6:2,co2:6:2,co3:6:2); WriteLn('Средний год рождения:',cYear:12:0); WriteLn('Список студентов, у которых оценки выше средних'); WriteLn(' и год рождения меньше среднего:'); for i:=1 to n do with Group[i] do if (o1>co1) and (o2>co2) and (o3>co3) and (Year|{{:playground:gr3120.png?360|Результат работы программы}}| ==== Построение графика функции ==== | { Вычислить функции f(x) на отрезке [1,5] с шагом 0.1 x^2 , если 1<= x <=2.5 f(x) ={ x^1/2 (это корень квадратный из ), если 2.5< x <=4.2 -1, если 4.2 < x <= 5 Записать значение функции в файл в виде < x f(x) >. Построить графики функций f(x) в градуированной системе координат. } Program GraphFunc; {$N+ E+} Uses Crt, Graph; Const KoefX = 35; n = 1000; Color = 2; Var f : Text; x : Real; Xasp, Yasp, KoefY : Word; Function Func(x:Extended) : Extended; begin if (x>=1) and (x<=2.5) then Func := x * x else if (x>2.5) and (x<=4.2) then Func := sqrt(x) else Func := -1; end; Procedure SaveFuncFile; begin Assign(f,'Func.txt'); Rewrite(f); WriteLn(f,' x f(x)'); x := 1; repeat WriteLn(f,x:4:1,Func(x):6:2); x := x + 0.1; until x > 5; Close(f); end; Procedure GrInit; var grDriver, grMode, ErrCode : integer; begin grDriver := Detect; InitGraph(grDriver,grMode,''); ErrCode := GraphResult; if ErrCode <> grOk then begin WriteLn('Ошибка графики: ',GraphErrorMsg(ErrCode)); WriteLn('Программа остановлена.'); Halt(1); end; GetAspectRatio(Xasp,Yasp); KoefY := round((Xasp / Yasp) * KoefX); end; Procedure SysCoord; const dx = 2; dy = 2; var x, y : Word; s : string[5]; t : integer; begin Line(0, GetMaxY div 2, GetMaxX, GetMaxY div 2); Line(GetMaxX - 2*dx, GetMaxY div 2 + 2*dy, GetMaxX, GetMaxY div 2); Line(GetMaxX - 2*dx, GetMaxY div 2 - 2*dy, GetMaxX, GetMaxY div 2); OutTextXY(GetMaxX - 15,GetMaxY div 2 - 15,'X'); x := (GetMaxX div 2) mod KoefX; t := (GetMaxX div 2) div KoefX; while x < GetMaxX do begin Line(x, GetMaxY div 2 - dy, x, GetMaxY div 2 + dy); Str(-t,s); t := t - 1; OutTextXY(x + dx, GetMaxY div 2 + 8, s); x := x + KoefX; end; Line(GetMaxX div 2, 0, GetMaxX div 2, GetMaxY); Line(GetMaxX div 2 - 2*dx, 2*dy, GetMaxX div 2, 0); Line(GetMaxX div 2 + 2*dx, 2*dy, GetMaxX div 2, 0); OutTextXY(GetMaxX div 2 + 10, 10,'Y'); y := (GetMaxY div 2) mod KoefY; t := (GetMaxY div 2) div KoefY; while y < GetMaxY do begin Line(GetMaxX div 2 - dx, y, GetMaxX div 2 + dx, y); Str(t,s); t := t - 1; if s<>'0' then OutTextXY(GetMaxX div 2 - 20, y - dy, s); y := y + KoefY; end; end; Procedure DrawGraph; var xi, yi, h : Extended; begin h := 0.1 / KoefX ; xi := 1; while xi < 5 do begin yi := Func(xi); PutPixel(GetMaxX div 2 + round(xi * KoefX), GetMaxY div 2 - round(yi * KoefY),Color); xi := xi + h; end; end; Begin ClrScr; SaveFuncFile; GrInit; SysCoord; DrawGraph; ReadKey; CloseGraph; End. |Содержимое полученного файла (FUNC.TXT): x f(x) 1.0 1.00 1.1 1.21 1.2 1.44 1.3 1.69 1.4 1.96 1.5 2.25 1.6 2.56 1.7 2.89 1.8 3.24 1.9 3.61 2.0 4.00 2.1 4.41 2.2 4.84 2.3 5.29 2.4 5.76 2.5 6.25 2.6 1.61 2.7 1.64 2.8 1.67 2.9 1.70 3.0 1.73 3.1 1.76 3.2 1.79 3.3 1.82 3.4 1.84 3.5 1.87 3.6 1.90 3.7 1.92 3.8 1.95 3.9 1.97 4.0 2.00 4.1 2.02 4.2 2.05 4.3 -1.00 4.4 -1.00 4.5 -1.00 4.6 -1.00 4.7 -1.00 4.8 -1.00 4.9 -1.00 5.0 -1.00 {{:playground:funs.jpg?320|Результат работы программы}}| | { Вычислить функции sin(x), cos(x), f(x) на отрезке [-Pi,Pi] с шагом Pi/20 sin(x), если -Pi <= x <= 0 f(x) ={ cos(x), если 0 < x <= Pi Записать значение функции в файл в виде < x sin(x) cos (x) f(x) >. Построить графики функций f(x) в градуированной системе координат. } Program GraphFunc; {$N+ E+} Uses Crt, Graph; Const KoefX = 70; n = 1000; Color = 2; Var f : Text; x : Real; Xasp, Yasp, KoefY : Word; Function Func(x:Extended) : Extended; begin if (x >= -Pi) and (x <= 0) then Func := sin(x) else Func := cos(x); end; Procedure SaveFuncFile; begin Assign(f,'Func.txt'); Rewrite(f); WriteLn(f,' x sin(x) cos(x) f(x)'); x := -Pi; repeat WriteLn(f,x:4:1,sin(x):7:2,cos(x):9:2,Func(x):8:2); x := x + Pi/20; until x > Pi; Close(f); end; Procedure GrInit; var grDriver, grMode, ErrCode : integer; begin grDriver := Detect; InitGraph(grDriver,grMode,''); ErrCode := GraphResult; if ErrCode <> grOk then begin WriteLn('Ошибка графики: ',GraphErrorMsg(ErrCode)); WriteLn('Программа остановлена.'); Halt(1); end; GetAspectRatio(Xasp,Yasp); KoefY := round((Xasp / Yasp) * KoefX); end; Procedure SysCoord; const dx = 2; dy = 2; var x, y : Word; s : string[5]; t : integer; begin Line(0, GetMaxY div 2, GetMaxX, GetMaxY div 2); Line(GetMaxX - 2*dx, GetMaxY div 2 + 2*dy, GetMaxX, GetMaxY div 2); Line(GetMaxX - 2*dx, GetMaxY div 2 - 2*dy, GetMaxX, GetMaxY div 2); OutTextXY(GetMaxX - 15,GetMaxY div 2 - 15,'X'); x := (GetMaxX div 2) mod KoefX; t := (GetMaxX div 2) div KoefX; while x < GetMaxX do begin Line(x, GetMaxY div 2 - dy, x, GetMaxY div 2 + dy); Str(-t,s); t := t - 1; OutTextXY(x + dx, GetMaxY div 2 + 8, s); x := x + KoefX; end; Line(GetMaxX div 2, 0, GetMaxX div 2, GetMaxY); Line(GetMaxX div 2 - 2*dx, 2*dy, GetMaxX div 2, 0); Line(GetMaxX div 2 + 2*dx, 2*dy, GetMaxX div 2, 0); OutTextXY(GetMaxX div 2 + 10, 10,'Y'); y := (GetMaxY div 2) mod KoefY; t := (GetMaxY div 2) div KoefY; while y < GetMaxY do begin Line(GetMaxX div 2 - dx, y, GetMaxX div 2 + dx, y); Str(t,s); t := t - 1; if s<>'0' then OutTextXY(GetMaxX div 2 - 20, y - dy, s); y := y + KoefY; end; end; Procedure DrawGraph; var xi, yi, h : Extended; begin h := Pi/20 / KoefX ; xi := -Pi; while xi < Pi do begin yi := Func(xi); PutPixel(GetMaxX div 2 + round(xi * KoefX), GetMaxY div 2 - round(yi * KoefY),Color); xi := xi + h; end; end; Begin ClrScr; SaveFuncFile; GrInit; SysCoord; DrawGraph; ReadKey; CloseGraph; End. |Содержимое полученного файла (FUNC.TXT): x sin(x) cos(x) f(x) -3.1 -0.00 -1.00 -0.00 -3.0 -0.16 -0.99 -0.16 -2.8 -0.31 -0.95 -0.31 -2.7 -0.45 -0.89 -0.45 -2.5 -0.59 -0.81 -0.59 -2.4 -0.71 -0.71 -0.71 -2.2 -0.81 -0.59 -0.81 -2.0 -0.89 -0.45 -0.89 -1.9 -0.95 -0.31 -0.95 -1.7 -0.99 -0.16 -0.99 -1.6 -1.00 -0.00 -1.00 -1.4 -0.99 0.16 -0.99 -1.3 -0.95 0.31 -0.95 -1.1 -0.89 0.45 -0.89 -0.9 -0.81 0.59 -0.81 -0.8 -0.71 0.71 -0.71 -0.6 -0.59 0.81 -0.59 -0.5 -0.45 0.89 -0.45 -0.3 -0.31 0.95 -0.31 -0.2 -0.16 0.99 -0.16 -0.0 -0.00 1.00 -0.00 0.2 0.16 0.99 0.99 0.3 0.31 0.95 0.95 0.5 0.45 0.89 0.89 0.6 0.59 0.81 0.81 0.8 0.71 0.71 0.71 0.9 0.81 0.59 0.59 1.1 0.89 0.45 0.45 1.3 0.95 0.31 0.31 1.4 0.99 0.16 0.16 1.6 1.00 0.00 0.00 1.7 0.99 -0.16 -0.16 1.9 0.95 -0.31 -0.31 2.0 0.89 -0.45 -0.45 2.2 0.81 -0.59 -0.59 2.4 0.71 -0.71 -0.71 2.5 0.59 -0.81 -0.81 2.7 0.45 -0.89 -0.89 2.8 0.31 -0.95 -0.95 3.0 0.16 -0.99 -0.99 3.1 0.00 -1.00 -1.00 {{:playground:func.jpg?320|Результат работы программы}}| ===== Вставка рисунка ===== {{:playground:vodjanye_lilii.jpg?150|}} ===== Хранение файла ===== {{:playground:akt1.xls|Акт 1}} ===== Сценарий тематического урока =====