Как делать надо pascalabc луна
Перейти к содержимому

Как делать надо pascalabc луна

  • автор:

Надо нарисовать луну

Author24 — интернет-сервис помощи студентам

Нарисовать луну
Вот такая луна (с piant-ом плоховато, надо чтобы была ровная).У меня что-то получается, но она не.

Нарисовать солнце и луну
Напишите мне пожалуйста программу на qbasic " нажатии клавиши «Д» (день) рисует солн¬це, при.

498 / 344 / 162
Регистрация: 15.03.2010
Сообщений: 601

1 2 3 4 5 6 7
uses GraphABC; begin Circle(100,100,60); Circle(130,100,50); SetPenColor(ClWhite); Circle(137,100,50); end.

Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
uses graph; var g,d:integer; begin g:=0; initgraph(g,d,''); setcolor(14); circle(getmaxX div 2,getmaxY div 2,150); setfillstyle(1,14); floodfill(getmaxX div 2,getmaxY div 2,14); setcolor(0); circle(getmaxX div 2+75,getmaxY div 2,150); setfillstyle(1,0); floodfill(getmaxX div 2,getmaxY div 2,0); readln end.

Регистрация: 23.02.2010
Сообщений: 30
а как можно изменить размеры
498 / 344 / 162
Регистрация: 15.03.2010
Сообщений: 601

ЦитатаСообщение от Expert1202N Посмотреть сообщение

а как можно изменить размеры

эт ты у кого спрашиваешь. PascalABC?
я для АБЦ писал
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181

ЦитатаСообщение от Expert1202N Посмотреть сообщение

а как можно изменить размеры

Измени радиусы окружностей, перекрытие — смести центр черного круга вправо или влево, при желании положение кругов и их радиуса можно вводить с клавиатуры, поэтому, если сильно заняты и некогда читать хотя бы электронные книги, посмотрите встроенный Хелп Паскаля, видимо Вы первый раз видите те буковки, которые Вам написали.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Нарисовать луну, божью коровку
Помогите пожалуйста решить две задачи в free pascal: 1. Добавить к звездному небу луну. 2.

Нарисовать луну (месяц) без заливки
1) Нужно просто нарисовать луну ( месяц) без заливки . 2)Нужно составить прогрумму , чтобы при.

Нарисовать луну на фоне ночного небе с мерцающими звездами
Ребят помогите нарисовать в турбо паскале луну на фоне ночного небе с мерцающими звездами) Спасибо.

Надо нарисовать фигуру
Надо нарисовать фигуру: ___* __*_* _*___* *_____* Использовать цикл

Или воспользуйтесь поиском по форуму:

Как делать надо pascalabc луна

Задача: посадить АЛС «Луна — 9» на. НА ЛУНУ. внезапно. ))
Исходные данные:
масса аппарата — 300 кг.
горючего — 1500 кг(твёрдое)).
высота с которой начинается спуск — 7000м.
Начальная скорость — 20км\ч.
что хочу сделать:
Посадить посудину на поверхность луны. Критическая скорость снижения на высоте 10м = 20км\ч. И чтобы при скорости больше 20 км\ч врубались тормозные движки (которые жрут топливо), а при скорости меньше 20 — вырубались.
НЕ ПОЛУЧАЕТСЯ:
Пробовал присвоить h тип word — послало нахрен.
Пробовал вбить предусловие (цикл for h:=7000 downto 0 do: ) — пишет, что h могёт быть только real.
Не получается показать зависимость лунного притяжения от высоты (формула — детская, но. немогу никак в степень возвести. Пробовал писать 22 нуля после запятой, тобишь 27Е22, не проконало.)
Вот конечный результат ночных мучений:

 Program SsykaLyna; var v,m,z,h,a:real; begin writeln('Тяга? (0 - 100)'); read(z); v:=20; m:=1500; z:=0; h:=7000; -исходные данные while h>10 do writeln('Горючее ',m:5:1,' кг, ','высота ',h:5:1,' м, ','скорость ',v:5:1,' м/сек'); if vэто режим свободного падения, если скорость меншье нужной end else begin а это вклучение тормозных движков a:=1.62-z*0.045; m:=m-z*0.15; h:=h-(v-a/2); v:=v+a; end; if vэто условие, при котором посадка считается мягкой. Написал 20 км\ч. else begin writeln; writeln('Вы разбились!'); end; end.

z-тяга двигателя (меняется в пределах 1-100, проценты от максимальной тяги).
h-высота
a-ускорение
1.6-g луны. На поверхности. f=g*((mЛуныmАЛС)/h+rЛуны^2)) — эту формулу не получается вбить из-за больших чисел m1m2 и r^2 и мать его g=const=6.67Е-11.

Изначально брал программу для пошаговой посадки.
Текаст:

Program ssykalynagame; uses crt; var v,m,z,h,a:real; n:integer; begin ClrScr; v:=8;m:=90;z:=0;h:=50;n:=0; writeln('Мягкая посадка':40); writeln(' Вы управляете Лунным модулем, ваша задача -'); writeln(' тормозя, посадить модуль на поверхность Луны без аварии.'); writeln(' Запас горючего ограничен'); writeln('Поехали!':40); repeat writeln; write('Горючее ',m:5:1,' кг, ','высота ',h:5:1,' м, '); write('скорость ',v:5:1,' м/сек'); if m>0 then begin writeln; writeln('Тяга? (0 - 100)');read(z);end else begin m:=0; z:=0; end; a:=1.62-z*0.045; m:=m-z*0.15; h:=h-v-a/2; v:=v+a; n:=n+1; until h 

___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 29.12.2011 в 08:52 .

Процедуры в PascalABC.NET

столкнулся со следующей проблемой: в Форме рисуется график с определенными параметрами, в этой же форме присутствует текст-бокс с помощью которого можно изменять параметры. Как сделать так, чтобы после обновления параметра, без перезапуска программы, процедура выполнялась заново и рисовала новый график, уже учитывая измененный параметр. Пытался повторно вызвать процедуру в процедуре текст бокса, но не получилось. Повторный запуск формы внутри процедуры, выдает ошибку. Как можно реализовать то, что изначально задумывалось?

Program BetterKursach;    uses System.Windows.Forms; uses System.Drawing; uses System; uses System.Net; Label m; function cot(x:real):real; begin cot:=cos(x)/sin(x); end; function F1(x:real):real; begin F1 := tan(x); end; var Txt: TextBox; Form1: System.Windows.Forms.Form; G1: System.Drawing.Graphics; i, b, x0, y0, xx, yy, code:integer; x, mx, my:real; i1, i2, o:string; ///////////////////////////////////////////////////////////// procedure osi (sender : object; e : System.Windows.Forms.PaintEventArgs); //Построение осей begin G1.DrawLine (new System.Drawing.Pen (System.Drawing.Color.Black,1), 0,y0,500,y0); //Ось икс G1.DrawLine (new System.Drawing.Pen (System.Drawing.Color.Black,1), x0,0,x0,500); //Ось игрек for var i:=1 to b do begin str(i,i1); str(-i,i2); G1.Drawline(new System.Drawing.Pen (System.Drawing.Color.Black,1),x0+round(i*mx),y0-3,x0+round(i*mx),y0+3); //засечки на оси +Х G1.Drawline(new System.Drawing.Pen (System.Drawing.Color.Black,1),x0-round(i*mx),y0-3,x0-round(i*mx),y0+3); //засечки на оси -Х G1.Drawline(new System.Drawing.Pen (System.Drawing.Color.Black,1),x0-3,y0+round(i*my),x0+3,y0+round(i*my)); //засечки на оси +Y G1.Drawline(new System.Drawing.Pen (System.Drawing.Color.Black,1),x0-3,y0-round(i*my),x0+3,y0-round(i*my)); //засечки на оси -Y G1.DrawString(i1,new System.Drawing.Font ( ' Times New Roman ' , 7 , System.Drawing.FontStyle.Bold ),System.Drawing.Brushes.Black,x0+round(i*mx)-4,y0+10);//подпись оси +Х G1.DrawString(i2,new System.Drawing.Font ( ' Times New Roman ' , 7 , System.Drawing.FontStyle.Bold ),System.Drawing.Brushes.Black,x0-round(i*mx)-6,y0+10);//подпись оси -Х G1.DrawString(i1,new System.Drawing.Font ( ' Times New Roman ' , 7 , System.Drawing.FontStyle.Bold ),System.Drawing.Brushes.Black,x0-20,y0-round(i*my)-6);//подпись оси Y G1.DrawString(i2,new System.Drawing.Font ( ' Times New Roman ' , 7 , System.Drawing.FontStyle.Bold ),System.Drawing.Brushes.Black,x0-25,y0+round(i*my)-6);//подпись оси -y end; G1.DrawString('X',new System.Drawing.Font ( ' Times New Roman ' , 7 , System.Drawing.FontStyle.Bold ),System.Drawing.Brushes.Black,xx-30,y0-15); G1.DrawString('Y',new System.Drawing.Font ( ' Times New Roman ' , 7 , System.Drawing.FontStyle.Bold ),System.Drawing.Brushes.Black,x0+5,10); end; procedure Graf(sender: Object; e: PaintEventArgs); begin var g := e.Graphics; x:=-b; while x -2*b) and (F1(x) < 2*b) then begin g.FillRectangle(System.Drawing.Brushes.Red, x0+round(x*mx), y0-round(F1(x)*my), 1, 1); // График x:=x+0.001; end else x:=x+0.001; end; end; procedure kp(Sender : Object; Args : KeyEventArgs); begin if Args.KeyCode = Keys.Enter then // это сработает при нажатии Энтер begin o := (Sender as TextBox).Text; Args.SuppressKeyPress := true; Val(o, b, code); writeln(b); Application.Run(Form1);end; end; ///////////////////////////////////////////////////////// begin //Различные параметры xx:=500; yy:=500; b:=13; x0:=240; y0:=250; mx:=(xx-x0-30)/b; my:=(y0-30)/b; x:=-b; //Свойства формы 1 Form1 := new Form(); Form1.Text := 'Курсовая работа'; //Заголовк Form1.Width := 200 + xx; //Размер Form1.Height := yy; Form1.StartPosition := FormStartPosition.CenterScreen; // Центр Form1.BackColor := System.Drawing.Color.White; //Фон цвета Form1.MaximizeBox := true; // Кнопка Развернуть Form1.Paint+=osi; // Выполнение осей Form1.Paint+=Graf; // Выполнение фигур Txt := new TextBox; Txt.Left := xx+50; Txt.Top := 80; Txt.KeyDown += kp; Form1.Controls.Add(Txt); Form1.ActiveControl := Txt; //фокус на TextBox //Свойства рисования G1 := System.Drawing.Graphics.FromHwnd (Form1.Handle);; Application.Run(Form1); end. 

Все типы - классы

Можно долго программировать в PascalABC.NET в обычном стиле и не замечать, что все типы стали классами. Но в один прекрасный момент кто-то после имени переменной нажмет точку и . получит список методов для этой переменной как объекта класса. Например, достаточно описать целую переменную

var i: integer;

и потом набрать в коде

begin i.

После точки всплывет окно с так называемыми экземплярными методами, применимыми к переменной i класса integer. Их всего 6, и на первых порах только один метод из них полезен. Это метод ToString, преобразующий значение i к строке:

var s: string; s := i.ToString;

Точечная запись в самом начале обучения воспринимается в основном в штыки: слишком непосилен груз нового в обучении. Вам будут говорить: 1) это не Паскаль! 2) это только в этом дурацком .NET так! 3) объекты школьникам - это зло, а для студентов надо давать C++ 4) .

Но факт остается фактом - так писать можно, а значит, все равно так будут писать, и вряд ли это можно будет удержать. Ведь вспомнить имя стандартной функции

s := IntToStr(i);

будет куда как не проще. К тому же, в Delphi для ее использования модуль SysUtils подключать надо. А, да, забыл - есть еще процедура Str с двумя параметрами, один из которых - ссылочный - она еще в теме "Строки" проходится - где-то через полгодика. А здесь мы получили интуитивно понятную запись и сразу начали ее использовать:

Эту запись можно трактовать двояко. Можно считать, что мы даем команду ToString объекту i, и он по этой команде возвращает свое строковое представление. Можно считать, что объект i имеет в своем составе команду ToString и сам ее вызывает. Последняя идея мне нравится больше: все объекты - активные, каждый имеет свою систему команд и готов их вызывать в любой момент.

Здесь мы сталкиваемся с еще одним психологическим барьером: если даже тип integer - класс, то наверняка программа будет работать очень медленно, ведь в ма-аленькой переменной integer - столько методов! они наверняка все и замедляют! Увы - это неверно. На скорость работы программы наличие большого числа методов у объекта класса никак не сказывается.

Но - продолжим! Однажды начав исследовать методы классов, кто-то обязательно наберет точку после имени типа, а не имени переменной:

integer.

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

Кроме статических методов, мы увидим также две константы:

integer.MaxValue integer.MinValue

По названиям нетрудно догадаться, что они обозначают наибольшее и наименьшее значения для переменных типа integer. Знатоки скажут, что вместо integer. MaxValue проще написать MaxInt и будут правы - короче. Только подобные константы определены во всех числовых типах: real.MaxValue, byte.MaxValue, word.MaxValue и т.д. А длинная запись - ну, это не самое страшное. Разве для объяснения мы используем самые короткие слова? К тому же, понятно, что значение MaxValue связано именно с типом integer и ни с каким другим.

Среди статических методов класса integer выделяется метод Parse для преобразования строк в целые:

i := integer.Parse('345');

В переменную i, как мы догадываемся, попадет значение 345. Конечно, если мы подадим на вход методу Parse строку, не являющуюся числом, то возникнет исключение, его надо будет обрабатывать, либо использовать статический метод TryParse:

var b: boolean := integer.TryParse('345',i);

Не сможет преобразовать - так и вернет False. Короче, надо разбираться. Отложим пока.

Заметим, что наш алгоритм исследования статических и экземплярных методов класса integer напоминает действия маленького ребенка, исследующего мир: он ПРОБУЕТ ВСЕ и что-то у него получается. Это что-то он будет повторять много раз, потому что ему понравилось, а непонятное отложит - до поры. Это - лучший из известных простых способов исследования мира 🙂

Классов в .NET - тысячи, так что исследования хватит надолго. Наша задача - только дать пищу для размышлений. Ну, например, в классе real мы увидим константы

real.PositiveInfinity; // бесконечность real.NegativeInfinity; // минус бесконечность real.NaN; // не число real.Epsilon; // самое маленькое положительное вещественное 

Это выглядит странно, но, может, кто и догадается, что теперь при работе с вещественными числами можно получить бесконечность, а значит, переполнения никогда не произойдет:

Интересно еще поделить на ноль и извлечь корень из отрицательного числа:

r := r / 0; writeln(r); r := sqrt(-1); writeln(r);

Дальнейшие исследования можно продолжить с типом DateTime. Для этого, правда, придется, подключить пространство имен System:

uses System;

DateTime.Now вернет текущие дату и время, их можно присвоить переменной типа DateTime, а потом вычленить из нее день, месяц, год, часы, минуты и секунды с помощью свойств Day, Month, Year, Hour, Minute, Second:

begin var d: DateTime := DateTime.Now; writeln(d.Day,'.',d.Month,'.',d.Year); writeln(d.Hour,':',d.Minute,':',d.Second); end.

Как, вы еще не знаете, что такое пространства имен и свойства классов? О, да у вас еще все впереди!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *