CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Специалисты компании iiyama предлагают своим клиентам новый крупноформатный монитор. Речь идет о ...
Производители материнских плат уже давно озаботились тем, чтобы предложить своим клиентам идеальную ...
Специалисты компании Epox предлагают своим клиентам новенькую материнскую плату компактных размеров ...
Итак, состоялся анонс восьмого поколения смартфонов Apple iPhone вместе с юбилейным iPhone X. И ...
Сколько, по вашему мнению, должно быть камер в смартфоне? Huawei, похоже, считает, что можно установить ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Решить задачу раз плюнуть

Олег ДАНИЛЮК lezha@realtel.net.ua

Сегодня, дорогой читатель, мы будем учиться писать программы. Я не буду рассказывать вам, как написать Notepad или что-нибудь подобное. Мы будем решать задачи подобные тем, которые решают в школах и институтах, а также на олимпиадах по информатике.

В МК было напечатано огромное количество статей по программированию. Часть из них просто описывала структуру и операторы языка, в других описывались некоторые приемы, используемые программерами, причем в визуальной среде разработки (типа Delphi или Visual Basic). Но начинать свою карьеру (или хобби) все же следует с изучения ДОСовских языков, например Паскаля (Pascal) или Бейсика (Basic). Я намерено не упомянул Си, так как он сложнее других языков программирования. Проще выучить тот же Паскаль, а с него перейти на Си.

Некоторые читатели заметят: «Как же так? Ведь в графической среде склепать программку намного легче и быстрее. Зачем нам учить какой-то Паскаль, который намного сложнее Delphi? И вообще, кому сейчас нужны проги под ДОС?» Так то оно так, но на самом деле Паскаль легче для начальных шагов. В нем вы узнаете основные принципы программирования, выучите алгоритмы, которые будете использовать в графической среде (для тех, кто не знает, что такое алгоритм, — это последовательность команд, выполнение которых позволяет получить ответ задачи).

Итак, приступим к первому заданию:

Задача № 1

Скорость автомобиля в любой момент определяется по формуле Vt=V0+GT, где V0 — начальная скорость, G — ускорение, T — время, а Vt — скорость в момент времени T. Составить программу, которая принимает с пульта V0 и G. Через какое время машина будет иметь скорость 100 км/час (то есть Vt = 100), если G>0? Через какое время машина остановится, если G<0?

Это одна из самых легких задач, но в ней есть один маленький подвох. Вот ее решение:

Мой вам совет: всегда, когда это возможно, решайте задачу в той же последовательности, что и в условии — это сэкономит кучу времени, так как вы никогда не перепутаете, что уже сделано, а что еще предстоит решить. Еще лучше записать все действия на листик бумаги и поочередно выполнять их, зачеркивая сделанные.

Простенькую задачку для разминки решили. Давайте сделаем что-то посложнее:

Задача № 2

Составить программу вывода всех трехзначных чисел, сумма цифр которых равна данному числу N. Число N должно быть целым, не превышать 27 и вводиться оператором INPUT.

Практически все задачи по программированию (кроме самых элементарных) можно решить несколькими способами, эта — не исключение. Цель программиста — не только решить задачу, но и решить ее оптимальным путем. Естественно, чтобы определить число, сумма цифр которого равна данному числу N, нужно эти цифры найти. Случается, что решающий переводит целочисленные трехзначные числа в строковой тип, потом вытягивает из него каждый знак и переводит их назад в целочисленный и только после этого находит их сумму. Это, конечно, правильно, но можно сделать и намного проще. Как? Смотрите решение:

Как я уже говорил, задачу можно решить по-разному. Вместо того, чтобы завершать выполнение программы, если N не удовлетворяет условию, вы можете, например, повторить его ввод.

Теперь давайте поподробнее рассмотрим алгоритм определения каждого знака трехзначного числа. Пусть, к примеру, переменная i будет равна 386. Вычисляем сначала первый знак (тройку): n1 := Trunc(386/100) — на сто делим потому, что искомый знак принадлежит разряду сотен, соответственно переменная n1 должна равняться 3.86; но функция Trunc отбрасывает дробную часть числа, поэтому n1 = 3. Первую цифру нашли, пора искать вторую (восьмерку). Она означает десятки, но если 386 поделить на 10, то получим не совсем то (точнее, совсем не то :-)), что хотели. Чтобы все получилось, нужно от 386 отнять 300, то есть первый знак умножить на сто (n1*100). Далее можно спокойно делить на 10, что мы и делаем: n2 := Trunc((i-n1*100)/10), не забывая при этом отбросить дробную часть. И самое простое — находим третью цифру. Для этого всего лишь отнимаем от 386 первый знак, умноженный на сто, и второй, умноженный на десять: n3 := i — (n1*100+n2*10). Все это в коде занимает только три строчки, в то время как ранее описанный метод — целых одиннадцать, то есть почти в четыре раза больше!

Ну что, поехали дальше? На сей раз нас ждет задача с массивами.

Задача № 3

Организовать линейный массив из 55 элементов. Заполнить случайными числами в интервале от 200 до 300. Вывести его в строку, напечатав рядом с наименьшим числом в скобках слово min и наибольшим —max. Например: 210 289 201(min) 275 … 298(max) 201(min).

Найти наименьшие и наибольшие числа несложно. Самый простой способ — найти их по ходу заполнения массива:

Вот так решаются несложные задачки с массивами. На том и закончим наше занятие. Куда побежали? А домашнее задание?

Задача № 4

Каждый элемент таблицы A размерностью 3х3 может иметь значения 7, 8 и 9. Составить программу подсчета количества повторений каждого из этих чисел в таблице. Предполагается, что вначале идет блок заполнения данных по какому-либо закону.

Задание несложное, но если возникнут проблемы — пишите. Кстати, если вы знаете, как решить предыдущие задачи более оптимальным способом — тоже пишите. На следующем занятии я решу домашнее задание, а потом будем заниматься задачками посложнее. Смотрите, не прогуляйте урок :-).

(Продолжение следует)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov