В этот раз мы немного попрограммируем, порешаем некоторые, пока весьма маленькие, задачки, а заодно и разберёмся что к чему.
Начнём с простеньких задачек.
По заданному радиусу отпределить длину окружности и площадь круга.
Здесь нам понадобится три переменные R, S, l
#lang "qb"
R=17
l=2*3.1415*R
S=3.1415*R*R
print "R="; R; " S=";s;" l=";l
В конце программы нужно сделать паузу, чтобы увидеть результат
sleep
Если команда sleep без параметра, то программа остановится и будет ждать нажатия клавиши; с параметром - остановится на указанное количество миллисекунд.
Но чтобы решить задачу с другими данными нам нужно изменять каждый раз текст программы, пусть даже маленькую строку R=17
. А не можно ли чтобы программа в процессе выполнения запрашивала нужные данные?
Для этого есть оператор INPUT
используется он так:
INPUT "подсказка"; переменная, переменная...
"Подсказка" - произвольный текст, где нужно обьяснить что и сколько параметров программа ожидает, далее идёт одна или несколько переменных.
Перепишем вторую строку - вместо R=17
напишем
INPUT "введите величину радиуса"; R
Теперь можно не изменяя текст программы запускать её много раз и она выдаст результат для разных значений радиуса.
Лучше всё-таки перейти на FreeBASIC)) для этого прийдется ипользуемые переменные объявлять в начале программы, и определять их тип.
В некоторых системах при выполнении программы вместо русских букв, кириллицы, отображаются непонятные символы. А функции для корректного отображения кириллицы есть во FreeBASIC, для этого и убираем директиву #lang "qb", а в начале программы нужно написать две строки #include "windows.bi"
и
SetConsoleCP(1251) : SetConsoleOutputCP(1251)
Или если используете #lang "qb"
тогда нужно вместо кириллических символов использовать латинские, транслитерацией - vot tak. И всё равно при копировании текста программы из этого окна и вставке его в fbIDE кириллические символы не переносятся, нужно русский текст перенабрать заново
Вычислить площадь треугольника по трем его сторонам.
Площадь вычисляется по формуле Герона.
а квадратный корень на FreeBASIC - sqr
в программе нам понадобятся пять вещественных переменных, a,b,c - стороны, промежуточная(вспомогательная) переменная - p для полупериметра, и S - для результата, сохранения пощади треугольника
Dim as single a,b,c,p,s
INPUT "введите длины сторон треугольника"; a,b,c
теперь нужно вычислить полупериметр
p=(a+b+c)/2
саму площадь -
s=sqr(p*(p-a)*(p-b)*(p-c))
и вывести результат на экран
print "Треугольник со сторонами ";a;", ";b;" и ";c;" имеет площадь s=";s
sleep
#include "windows.bi"
SetConsoleCP(1251)
SetConsoleOutputCP(1251)
Dim as single a,b,c,p,s
INPUT "введите длины сторон треугольника"; a,b,c
p=(a+b+c)/2
s=sqr(p*(p-a)*(p-b)*(p-c))
print "Треугольник со сторонами ";a;", ";b;" и ";c;" имеет площадь s=";s
sleep
Давайте запишем данное трехзначное число задом наперёд, т.е. если у нас дано 678 программа должна вывести 876
Задачу решим двумя способами
Значала чистой математикой))
input "введите трехзначное число"; a
первой цифрой будет a1=int(a/100)`` второй
a2=int(a-a1*100)/10а третья как остаток от деления на 10
a3= a mod 10`
а второй способ через строки(символьные переменные)
сначала преобразуем число в строку
astr=str(a)
переь возьмем из поученной строки astr симол справа, посредине и слева и запишем их в новую строку
rez=right(astr,1)+mid(astr,2,1)+left(a,1)
и преобразуем строку rez в число
r=val(rez)
Давайте например определим, тысяча секунд - сколько это? А миллион?
возьмём сначала тысячу секунд
's = 1000',
чтобы узнать сколько здесь минут разделим s на 60
'm = s \ 60'.
Деление мы выберем целочисленное, ведь нам нужно узнать количество полных минут.
А в переменную c запишем остаток, сколько секунд осталось
'c = s mod 60'
Но минут может ведь тоже оказаться слишком много, больше 60 во всяком случае. Поэтому такие же действия произведём и с минутами выделяя из них часы.
'h = m \ 60'
и запишем теперь в минуты оставшиеся не полные минуты
'm = m mod 60'
Далее может оказаться что и часов получилось слишком много))) выделяем из них дни
'd = h \ 24'
а назад в h запишем остаток
'h = h mod 24'
За количество дней в месяце возьмём 30
Так как переменная m занята под минуты мы для переменной под месяц возьмём ms
'ms = d \30'
В d же записываем остаток
'd = d mod 30'
Осталось вывеси результат
'print s;" секунд - это ";ms;" месяцев ";d;" дней ";h;" часов ";m;" минут ";c;" секунд"'
Dim As LongInt s,m,c,h,d,ms,y
s = 1000000000
m = s \ 60
c = s mod 60
h = m \ 60
m = m mod 60
d = h \ 24
h = h mod 24
ms = d \30
d = d mod 30
y=ms\12
ms=ms mod 12
print s;"секунд это ";y;"год ";ms;"месяц ";d;"день ";h;"часов ";m;"минут ";c;"секунд"
sleep
Очень многие удивляются тому зачению которое означает миллион секунд)))
Решая указанные выше задачи можна было столкнуться с некорректными данными, например, когда вместо трехзначного числа человек сознательно или допустив ошибку вводит двух- или четырехзначное число. А в задаче на формулу Герона можно ввести такие стороны треугольника с которым не существует.
Как же быть?
Нужно как то анализировать вводимые данные - об этом в следующих уроках.
предлагаю самим решить такие задачи
- записать четырехзначное число задом наперёд: 1205 -> 5021
- сделать из трехзначного числа число такого вида: 158 -> 15851
- вычислить диагональ квадрата со стороной а
- вычислить сторону квадрата если известна его диагональ
- вычислить сторону квадрата если известна его площадь
04 FreeBasic - графика
03 FreeBASIC. Текстовые переменные и операции с ними
02 FreeBASIC Переменные в Бейсике
01 Начинаем изучать FreeBasic
00 FreeBASIC лучший из диалектов бейсика
15/6/18 23:26
✅
✅
Сюда приплывал Моби Дик
✅🤙 🚀