пятница, 26 ноября 2010 г.

Задачи с применением оператора выбора (if)

Комментарий: это – несложные задачи, предназначенные в первую очередь для того, чтобы достаточно уверенно научиться использовать оператор выбора в несложных случаях.

Задача №1
Напиши класс (программу), которая принимает с клавиатуры двузначное число и проверяет, составлено ли оно из одинаковых цифр. В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение.

Задача №2
Напиши класс (программу), которая принимает с клавиатуры двузначное число и проверяет, является ли в нем первая цифра (десятков) больше второй (единиц). В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение.

Задача №3
Напиши класс (программу), которая принимает с клавиатуры двузначное число и проверяет, какая из его двух цифр является большей. В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение. Не следует выводить на экран никакого сообщения, если число составлено из одинаковых цифр.

Задача №4
Трехзначное число называется "симметричным", если первая и последняя его цифры – одинаковы. Напиши программу, которая принимает с клавиатуры трехзначное число и проверяет, является ли оно "симметричным". В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение.

Задача №5
Трехзначное число называется "дважды четным", если и оно само и сумма его цифр – четные. Напиши программу, которая принимает с клавиатуры трехзначное число и проверяет, является ли оно "дважды четным". В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение.

Обратите внимание: задача имеет решение с использованием одного-единственного оператора if с простым условием!

Задача №6
Трехзначное число называется "четно-красивым", если и оно само и каждая из его цифр – четные. Напиши программу, которая принимает с клавиатуры трехзначное число и проверяет, является ли оно "четно-красивым". В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение.

Обратите внимание: задача имеет решение с использованием одного-единственного оператора if с простым условием!

Задача №7
Назовем "уровнем четности" числа количество четных цифр в его составе (например, степень четности для 2346 равна 3). Напиши программу, которая принимает с клавиатуры трехзначное число и определяет, какова его "степень четности". В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение.

Задача №8
Четырехзначное число называется "парно-симметричным", если две его первых цифры и две его последних цифры образуют одинаковые числа (например – 5252). Напиши программу, которая принимает с клавиатуры четырехзначное число и определяет, является ли оно "парно-симметричным". В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение.

Задача №9
Четырехзначное число называется "зеркально-симметричным", если две его первых цифры и две его последних цифры образуют числа с обратным порядком цифр(например – 5225). Напиши программу, которая принимает с клавиатуры четырехзначное число и определяет, является ли оно "зеркально-симметричным". В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение.

Задача №10
Напиши программу, которая принимает с клавиатуры трехзначное число и проверяет, содержится ли в нем хотя бы один ноль. В соответствии с результатом проверки надо вывести на экран соответствующее текстовое сообщение.

вторник, 16 ноября 2010 г.

Задачи в стиле "разбери число и составь число"

Комментарий: это такие задачки, в которых хорошо отрабатываются навыки "разборки" вводимого с клавиатуры числа на составные части и составления из полученных частей новых значений (чисел).
Предполагается, что задачи рассчитаны на "умного пользователя": то есть, если в тексте сказано "вводится двузначное число", то программу можно (пока!) писать из расчета, что именно такое число и водится.

1. Назовем "весом числа" сумму его цифр. Напиши класс (программу) которая принимает с клавиатуры число (двузначное) число и выводит на экран его "вес".

2. Назовем "весом числа" сумму его цифр. Напиши класс (программу) которая принимает с клавиатуры число (трехзначное) число и выводит на экран его "вес".

3. Назовем "длиной двузначного числа" разницу между числом десятков (первая цифра) и числом единиц (вторая цифра). Напиши класс (программу) которая принимает с клавиатуры двузначное число и выводит на экран его "длину".

4. Назовем "перестановкой" операцию над числом, при котором его первая и последняя цифры меняются местами. Например, из числа 1234 получается число 4231. Напиши программу, которая принимает с клавиатуры трехзначное число и строит из него новое число методом "перестановки".

5. Напиши программу, которая выполняет перестановку над четырехзначным числом.

6. Назовем "линейным сдвигом числа влево" операцию, при котором его цифры перемещаются на одну позицию влево (единицы – на место десятков, десятки – на место сотен, сотни – на место тысяч и так далее) – при этом первая цифра удаляется из числа, а на место единиц записывается ноль.
Например, из числа 1234 после такой операции получается число 2340. Напиши класс (программу) которая принимает с клавиатуры трехзначное число и строит новое число, полученное "линейным сдвигом влево".

7. Напиши класс (программу) которая выполняет "линейный сдвиг влево" для четырехзначного числа.

8. Назовем "сдвигом числа влево по кругу" операцию, при котором его цифры перемещаются на одну позицию влево (единицы – на место десятков, десятки – на место сотен, сотни – на место тысяч и так далее) – при этом первая цифра перемещается на место единиц.
Например, из числа 1234 получается число 2341.
Напиши программу, которая принимает с клавиатуры трехзначное число и строит новое число, полученное "сдвигом влево по кругу".

9. Напиши класс (программу) которая выполняет "сдвиг влево по кругу" для четырехзначного числа.

10. Назовем "сдвигом числа вправо по кругу" операцию, при которой все цифры числа сдвигаются вправо, а число единиц (последняя цифра) перемещается в старший разряд числа (первая цифра).
Например, из числа 1234 получается число 4123.
Напиши программу, которая принимает с клавиатуры трехзначное число и строит новое число, полученное "сдвигом вправо по кругу".

11. Напиши класс (программу) которая выполняет "сдвиг вправо по кругу" для четырехзначного числа.

Извлечение из числа его отдельных цифр и «внутренних чисел»


Для достижения этой задачи можно воспользоваться вычислением частного и остатка при делении числа на 10, 100, 1000 и так далее.

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

Но до этого все задачи придется строить на предположении, что число цифр во вводимых числах заранее известно и является «таким, как требуется по условию».

Двузначное число

Первая цифра (десятки) получается вычисление частного от деления на 10.

Вторая цифра (единицы) получается вычислением остатка от деления на 10.

Пример программы, которая принимает с клавиатуры двузначное число и печатает его в «подробном виде»: при вводе 23 на экран выводится 20+3

import java.util.*;

class primer11

{

static Scanner reader=new Scanner(System.in);

public static void main(String[] args)

{

int x,dig1,dig2;

x=reader.nextInt();

dig1=x/10;

dig2=x%10;

System.out.println(dig1*10+"+"+dig2);

}

}

Трехзначное число

Первая цифра (сотни) получается вычисление частного от деления на 100.

Вторая цифра (десятки) получается за два вычисления: сначала вычисляем остаток от деления на 100 – получается двузначное число, составленное из двух последних цифр, затем от этого числа вычисляем частное от деления на 10 (как для двузначного числа).

Комментарий: есть и другой способ – какой? Кроме того, два вычисления можно свести в одно выражение.

Последняя цифра (единицы) получается вычислением остатка от деления на 10

Пример программы, которая принимает с клавиатуры трехзначное число и печатает его в «подробном виде»: при вводе 123 на экран выводится 100+20+3

import java.util.*;

class primer12

{

static Scanner reader=new Scanner(System.in);

public static void main(String[] args)

{

int x,dig1,dig2,dig3;

x=reader.nextInt();

dig1=x/100;

dig2=(x%100)/10;

dig3=x%10;

System.out.println(dig1*100+"+"+dig2*10+"+"+dig3);

}

}

Четырехзначное число

Первая цифра (тысячи) получается вычисление частного от деления на 1000.

Вторая цифра (сотни) вычисляется в два приема: сначала вычисляем частное от деления на 100, а потом из него вычисляем остаток от деления на 10.

Комментарий: есть и другой способ – какой? Кроме того, два вычисления можно свести в одно выражение.

Третья цифра (десятки) вычисляется в два приема: сначала вычисляем остаток от деления на 100, а потом из него вычисляем частное от деления на 10.

Комментарий: есть и другой способ – какой? Кроме того, два вычисления можно свести в одно выражение.

Последняя цифра (единицы) получается вычислением остатка от деления на 10

Пример программы, которая принимает с клавиатуры четырехзначное число и печатает его в «подробном виде»: при вводе 5123 на экран выводится 5000+100+20+3

import java.util.*;

class primer13

{

static Scanner reader=new Scanner(System.in);

public static void main(String[] args)

{

int x,dig1,dig2,dig3,dig4;

x=reader.nextInt();

dig1=x/1000;

dig2=(x/100)%10;

dig3=(x%100)/10;

dig4=x%10;

System.out.println(dig1*1000+"+"+dig2*100+"+"+dig3*10+"+"+dig4);

}

}

Комментарий:

  • аналогично можно «расчленять» числа с 5-ю, 6-ю и прочим количеством цифр
  • можно «вычленять» из одного числа другие, «внутренние» числа (из трехзначного, например, двузначные и так далее)

Второе занятие, полет нормальный...


Сегодня провели второе интернет-занятие.
Говорили о не самых простых с математически-логической и программистски-технической точки зрения вещах.
А именно -- о частном и остатке при делении.
Вещи эти имеют очень разное и широкое применение в программировании.
Так что -- математика 4-го класса (четвертого, да?) вполне себе сочетается с серьезным программированием.
Выложу пояснительные тексты -- отдельным постом, а затем упражнения -- тоже отдельным постом.

P.S. На фотографии гость, который сегодня забрел в кабинет, когда я готовился к уроку. Геккочик.

суббота, 13 ноября 2010 г.

Оператор ввода данных с клавиатуры

Оператор ввода данных с клавиатуры работает по принципу системы заказа такси по телефону, то есть по системе «клиенты – диспетчер – таксисты»

Клиенты=значения, вводимые с клавиатуры

Диспетчер=переменная типа Scanner

Таксисты=переменные программы

Строка static Scanner reader=new Scanner(System.in); объявляет, что все данные всех типов с клавиатуры будут вводиться в программу и передаваться соответствующих переменных только через переменную-диспетчер reader.

Таблица ввода данных для переменных разных типов

Тип данных (тип переменной)

Оператор ввода (через переменную reader)

Пример оператора ввода

int

reader.nextInt()

a=reader.nextInt()

long

reader.nextLong()

b=reader.nextLong()

float

reader.nextFloat()

c=reader.nextFloat()

double

reader.nextDouble()

d=reader.nextDouble()

string

reader.next()

name=reader.next()

char

reader.next()charAt(0)

Znak=reader.next()charAt(0)

Комментарий: на начальном этапе нет никакого смысла «разбрасываться» по разным типам переменных – для усвоения материала достаточно (и даже желательно) работать с переменными типа «только целые числа».

Несколько задач на программы с вводом данных

  1. Напиши программу (класс), которая принимает с клавиатуры целое число и выводит на экран следующие значения (каждое – в отдельной строке): число, меньшее введенного на 1 и число, большее введенного на 2

  1. Напиши программу (класс), которая принимает с клавиатуры целое число и выводит на экран следующие значения (каждое – в отдельной строке): снова введенное число и число, равное введенному, но с противоположным знаком.

  1. Напиши программу (класс), которая принимает с клавиатуры целое число и выводит на экран следующие значения (каждое – в отдельной строке): три числа, следующих за введенным.

  1. Напиши программу (класс), которая принимает с клавиатуры два целых числа и выводит на экран следующие значения (каждое – в отдельной строке): сумму введенных чисел, их произведение, разницу между первым и вторым, разницу между вторым и первым.

  1. Напиши программу (класс), которая принимает с клавиатуры два целых числа и выводит на экран следующие значения (каждое – в отдельной строке): квадрат каждого числа (отдельно) и сумму квадратов введенных чисел.

  1. Напиши программу (класс), которая принимает с клавиатуры два целых числа, каждое из которых представляет собой размер одной из сторон прямоугольника и выводит на экран следующие значения (каждое – в отдельной строке): площадь прямоугольника и его периметр.

  1. Напиши программу (класс), которая принимает с клавиатуры три целых числа, каждое из которых представляет собой размер одной из сторон параллелепипеда и выводит на экран следующие значения (каждое – в отдельной строке): объем, площадь каждой из граней, общую площадь и общий периметр.

  1. Напиши программу (класс), которая принимает с клавиатуры два целых числа, первое из которых представляет собой год рождения, а второе – год смерти (не про нас будь сказано…) и выводит на экран возраст.

  1. Напиши программу (класс), которая принимает с клавиатуры два целых числа, образующих ответ на вопрос «который час?» (первое – часы, второе минуты, например, 15 и 42) и выводит на экран следующие значения (каждое – в отдельной строке):сколько секунд прошло с полуночи да «данного момента» и сколько минут прошло за это де время, а также сколько минут осталось до полуночи.

среда, 10 ноября 2010 г.

Задачи стиля «напиши программу, которая…»


  1. Напиши программу (класс), которая выводит на экран надпись Hello,friend!

  1. Напиши программу (класс), которая выводит на экран надпись H-e-l-l-o-,-f-r-i-e-n-d!

  1. Напиши программу (класс), которая выводит на экран в первой строке три знака +, во второй – четыре знака !, в третьей – два знака *

  1. Напиши программу (класс), которая выводит на экран тем же количеством команд знаки, которые выводились в задании №3, но – все знаки должны выводиться в одной строке

  1. Напиши программу (класс), которая присваивает переменной х значение 6, а затем выводит на экран: в первой строке это значение, во второй – квадрат этого значения, в третьей – куб этого значения

  1. Напиши программу (класс), которая присвоивает переменной х значение 9, а затем выводит на экран: в первой строке это значение с поясняющей надписью (например значение х равно 9), а во второй – квадрат этого значения (тоже – с поясняющей надписью).

  1. Напиши программу (класс), которая присваивает двум переменных значения, а затем выводит на экран: в первой строке значения обеих переменных (с поясняющими надписями), во второй – произведение этих переменных (с поясняющей надписью), в третьей – сумму этих переменных (с поясняющей надписью).

  1. Напиши программу (класс), которая выводит на экран в одной строке – твое имя и фамилию, в другой – телефон, все это – в рамке из «звездочек»(*). Например:

  1. Напиши программу, которая выводит на экран «песочные часы», составленные из какого-либо символа. Например:
@@@@@
@@@
@
@
@@@
@@@@@

Операторы вывода информации

Стандартно вывод информации осуществляется на экран – в DrJava для этого служит закладка Interactions в нижней (левой) части экрана.

Мы пользуемся двумя операторами для вывода информации:

System.out.print()

И

System.out.println()

Во втором имеется добавка: ln – сокращение английского слова line.

Первый, выводя информацию на экран, остается «прилепленным» к месту экрана, где было напечатано последнее значение.

Второй – после печати информации автоматически переходит на начало следующей строки экрана (делает «с красной строки»).

Комментарий: на первых уроках очень полезно давать упражнения в духе «напечатать (вывести) в разных строках… напечатать в той же строке…».

В скобках указывается – что выводить на экран.

Информация без кавычек рассматривается как «вывести значение».

Информация в кавычках выводится точно в таком же виде, в каком она написана в кавычках («как пишется, так и печатается»).

Знак «плюс» (+) имеет два смысла:

  • Указание на выполнение арифметического действия
  • Указание на «приклеивание рядом» двух разных видов информации (вне кавычек и в кавычках).

Таблица примеров

(везде значение переменной х равно 4, а значение переменной y равно 7)

Оператор

Как выглядит вывод на экран

System.out.println(x)

4

System.out.println(“x=”)

x=

System.out.println(“x=”+x)

x=4

System.out.println(x+”x=”)

4x=

System.out.println(x+y)

11

System.out.println(“x+y”)

x+y

System.out.println(“x+y”+(x+y))

x+y11

System.out.println(“x=”+x+” y=”+y)

x=4 y=7

System.out.println(x+”+”y+”=”+(x+y))

4+7=11

Комментарий: мы всегда придумываем кучу задач на вывод одной и той же информации в самых разных комбинациях. Это часть чисто техническая, компьютеру, разумеется, совершенно безразлично, в каком виде информация выводится на экран – и выводится ли вообще. Но для начала формирования навыков написания «дружественных к пользователю» программ – это очень важно.

Базовая («пустая») программа (класс)

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

Другими словами – меньше, чем содержит этот базовый класс, написать невозможно. При этом он сам ничего не делает, поэтому-то и называется «пустым».


Строка 1

Содержит указание на возможность вызова (import) дополнительных команд и инструментов (util=utilities), имеющихся в языке Java и не загружаемых автоматически в оперативную память компьютера.

Строка 2

Содержит заголовок класса, состоящий из обязательного (служебного) слова class и названия класса (мы выбрали слово basis). Название можно менять, оно должно состоять из одного слова, начинаться с буквы и не содержать специальных знаков (+ ! ‘ “ и так далее).

Строки 3 и 9

Содержат открывающую и закрывающую скобки – показывают, где начинается и где заканчивается класс.

Строка 4

Содержит указание на то, что весь ввод данных с клавиатуры будет осуществляться через переменную reader. Этой переменной можно дать и другое имя (например, zdes_byl_vasja), но reader – один из общепринятых вариантов. Подробнее объяснение, почему эта строка выглядит именно так, будет дано в более «продвинутых» разделах курса.

Строка 5

Заголовок главного метода класса (главной части программы). В программе может быть много методов – но главный должен быть обязательно. Подробнее объяснение, почему эта строка выглядит именно так, будет дано в более «продвинутых» разделах курса.

Строки 6 и 8

Содержат открывающую и закрывающую скобки – показывают, где начинается и где заканчивается главный метод класса.

Строка 7

Образует так называемое «тело главного метода»: тут, собственно, и будут в дальнейшем писаться наши программы – добавляя, разумеется, в тело главного метода новые строчки, по необходимости.

Общее замечание

Строки 1 и 4 можно не писать в классах (программах), в которых не будет команд ввода данных с клавиатуры.

"Поехали!"

Сегодня мы провели первый интернет-урок с учениками лицея-интерната №3 Пензы.
На мой взгляд, получилось удачно. Что ж, всех нас -- с удачным началом!