[Язык C] Управляющие операторы С: ветвление и переходы (глава 7)

Седьмая глава в книжке Стивена Прата “C Primer Plus”. Начать хочу с годной программы divisors.c

Для заданного целого числа нужно вывести все целые числа, на которые заданное число делится без остатка; если таких делителей нет, необходимо вывести сообщение о том, что число является простым.

Простое число (prime) имеет ровно два различных делителя: единицу и самого себя;
Если делителей больше - это составное число (composite).

Первый вариант программы ищем простые числа в лоб, перебором делителей: Читать далее →

Рубрика: С (Си) | Оставить комментарий

Python: Задачи и решения (Глава 3. Ветвление, циклы с оператором while и псевдокод. Игра «Отгадай число»).

Продолжаем изучать программирование. После третьей главы в книге: Майкл Доусон «Программируем на Python», 2014 (Michael Dawson «Python Programming for the Absolute Beginner», 3rd Edition), где я изучила особенности работы с текстом в языке программирования Python, предложены задания. Давайте выполнять их вместе. Я приведу свой вариант решения, а вы пишите ваши варианты в комментариях.

Программа «Угадай число» от Игроглаза, не подсматривая решение:

import random

guess = ""
guess_num = 0
number = int(random.randint(1,100))

print ("I made a guess: number 1-100. Can you guess it?\n")

while guess != number:
    guess = int(input("Enter your proposal: \n"))
    if guess > number:
        print("No, it's smaller..\n")
    elif guess < number:
        print("No, it's bigger..\n")
    else:
        print("Finally, you got it!\n")
    guess_num += 1

print ("Number was ", number, ". You guessed it with", \
guess_num, "times. Good job!")
    
input()

Кстати, в книге в этой программе ошибка. Вне цикла там стоит tries = 1; тогда как оно должно начинаться с нуля.

1) Напишите программу — симулятор пирожка с «сюрпризом», — которая бы при запуске отображала один из пяти различных «Сюрпризов», выбранный случайным образом. Читать далее →

Рубрика: Python | 1 комментарий

[Язык C] Упражнения по программированию: циклы и массивы (глава 6)

Настал долгожданный момент сделать «домашку» по шестой главе книжки Стивена Прата “C Primer Plus”. Нас ожидает аж 18 увлекательных заданий.

1. Напишите программу, которая создает массив из 26 элементов и помещает в
него 26 строчных букв английского алфавита. Также предусмотрите вывод содержимого этого массива.

Первая же программа дала мне по голове дубиной 🙂 Довольно долго не выходило, все время то с b начиналось, то не работало.. Итог, мой первый блин: Читать далее →

Рубрика: С (Си) | 8 комментариев

Python: Ветвление if, elif, else, циклы while, генерация случайных чисел

Продолжаем учиться программированию. Переходим к изучению третьей главы по книге: Майкл Доусон «Программируем на Python», 2014 (Michael Dawson «Python Programming for the Absolute Beginner», 3rd Edition), где мы изучим условные операторы if, elif, else и циклы while и научимся генерировать случайные числа при помощи модуля с функциями random.randint() и random.randrage().

Конспект 3 главы с примерами написанных мной программ:

Генерация случайных чисел в Python

Загружаем модуль import random — он генерирует случайные числа на основе встроенной формулы. Чтобы присвоить переменной случайное значение, нужно после вызова модуля вызвать одну из его функций, например, Читать далее →

Рубрика: Python | Оставить комментарий

Python: Задачи и решения (Глава 2. Типы, переменные и основы ввода-вывода. Программа «Бесполезные факты»).

Продолжаем учиться программированию. После второй главы в книге: Майкл Доусон «Программируем на Python», 2014 (Michael Dawson «Python Programming for the Absolute Beginner», 3rd Edition), где я изучила особенности работы с текстом в языке программирования Python, предложены задания. Давайте выполнять их вместе. Я приведу свой вариант решения, а вы пишите ваши варианты в комментариях.

1) Придумайте два списка: допустимых и недопустимых имен переменных. Объясните, почему каждое из имен допустимо или соответственно недопустимо. Затем придумайте еще два списка — «хороших» и «плохих» допустимых имен — и объясните свой выбор.

Допустимые имена переменных: name, price, password, age, size (это могут быть любые слова, которые не зарезервированы в языке программирования для функций / операторов) Читать далее →

Рубрика: Python | 6 комментариев

[Язык C] Загадочный scanf и %c: вводим фразу, а не символ

Хочу отдельным постом поделиться с весьма нетривиальной с точки зрения новичка в C задачкой. Она приходятся восьмым вопросом для самоконтроля в 6 главе  книжки Стивена Прата “C Primer Plus”.

Задание таково:

Что выведут приведенные далее программы в случае ввода Go west, young man! ?
(В кодировке ASCII символ ! следует за символом пробела).

#include <stdio.h>
int main(void) {
  char ch;
  scanf("%c", &ch);
  while (ch != 'g') {
    printf("%c", ch);
    scanf("%c", &ch);
  }
  return 0;
}

Казалось бы все просто. Должно вывестись G — ведь %c в scanf является запросом одного символа. Точнее даже так — программа написана неверно, т.к. мы вводим целую фразу при помощи %c, тогда как ее надо вводить как строку %s. Ну да ладно. Это обучающий пример и все такое, поэтому предположим.. Итак, ответ G.

Не тут-то было. Программа выводит: Читать далее →

Рубрика: С (Си) | Оставить комментарий

Python: Задачи и решения (Глава 1. Начало работы. Программа Game Over).

Продолжаем учиться программированию. После второй главы в книге: Майкл Доусон «Программируем на Python», 2014 (Michael Dawson «Python Programming for the Absolute Beginner», 3rd Edition), где я изучила особенности работы с текстом в языке программирования Python, предложены задания. Давайте выполнять их вместе. Я приведу свой вариант решения, а вы пишите ваши варианты в комментариях.

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

Читать далее →

Рубрика: Python | Оставить комментарий

[Язык C] Управляющие операторы: циклы (глава 6)

Шестая глава в книжке Стивена Прата “C Primer Plus”. 

Цикл с предусловием:
for (инициализация; проверка; обновление)
            оператор

Инициализирующее выражение → проверяемое выражение → корректирующее выражение

Цикл с постусловием:
do
     оператор
while (выражение)

Оперативная часть повторяется, пока выражение не станет ложным (false), т.е. равным нулю.

Греческий философ Зенон и цикл for

Греческий философ Зенон утверждал, что стрела никогда не поразит своей цели. Сначала, говорил он, стрела пролетает половину пути до цели. Затем она пролетает половину оставшегося пути, затем — половину того пути, который останется, и так до бесконечности. Читать далее →

Рубрика: С (Си) | 6 комментариев

Python: типы данных и функция input()

В языке программирования Python есть несколько типов данных, например:

  • целые числа int(x), например, 1-2-3-4;
  • дробные числа float(x), например, 1.0-2.0-3.5;
  • строки str(x), в которых может быть текст и другие символы.

Функция input() уже обсуждалась ранее, эта функция дает возможность пользователю вводить данные в программу, эти данные могут дальше использоваться. Читать далее →

Рубрика: Python | Оставить комментарий

Python: лайфхаки по настройке среды программирования

Как только вы установили на компьютер Python, лучше сразу позаботиться о небольших нюансах, которые облегают жизнь программистам. Давайте пройдемся по основным настройкам среды программирования и Windows для комфортной работы:

1. Изменение системных переменных среды

Эта настройка позволит запускать программу, написанную на Python, в CMD операционной системы Windows (интерпретатор командной строки). Чтобы это сделать, нажимаем «Пуск» -> Изменение системных переменных среды: Читать далее →

Рубрика: Python | 1 комментарий

Компилируем в «Notepad++»

Я несколько задрался использовать Borland 6 для обучения C. Мощная программа и все такое, но из-за своего возраста возможности кастомизации UI там на уровне блокнота (того самого). К примеру, нельзя изменить предустановленные цвета для стиля кода. Поэтому я решился на переезд, по крайней мере в плане редактора.

Я приверженец Notepad++ 🙂 Прямо вот обожаю этот редактор. И поэтому решил прикрутить компилятор к нему. Для обучения Notepad++ подойдет, хотя конечно большие проекты в нем невозможно вести. Из плюсов — удобная консоль, которая всегда на экране, не надо ее вызывать; в общем, компилировать в плюсах довольно просто, как оказалось: Читать далее →

Рубрика: IDE, Notepad++, С (Си) | 1 комментарий

[Язык C] Программа про зернышки на шахматной доске (глава 5)

Из пятой главы книжки Стивена Прата “C Primer Plus” — программа по мотивам известной присказки, которая иллюстрирует возрастание по экспоненте.

Предыстория:
Царь предложил выбрать награду герою за услугу; герой попросил положить на шахматную доску одно зернышко на первую клетку, два зернышка на вторую, четыре — на третью и удваивать зернышки таким образом, пока доска не заполнится. Царь был поражен скромностью и согласился.. Что из этого вышло: Читать далее →

Рубрика: С (Си) | Оставить комментарий

[Язык C] Операции, выражения и операторы (глава 5)

Пятая глава в книжке Стивена Прата “C Primer Plus”. В ней идет речь об операторах и цикле while. Любопытно, что в книге Прата while идет до if/else в плане изложения материала; в то время, как в программировании часто учат циклы уже посте условных операторов.

Помимо решений, буду постить свои варианты некоторых (наиболее любопытных) программ из листингов. Я делаю так — просматриваю листинг, потом закрываю книжку и пишу «своими словами»: Читать далее →

Рубрика: С (Си) | 2 комментария

[Язык C] Символьные строки и форматированный ввод-вывод (глава 4)

Четвертая глава в книжке Стивена Прата “C Primer Plus”.

Упражнения по программированию и их решения:

1. Напишите программу, которая запрашивает имя и фамилию, а затем выводит их в формате фамилия, имя. Читать далее →

Рубрика: С (Си) | 1 комментарий

[Язык C] Данные в языке Си (глава 3)

Третья глава в книжке Стивена Прата “C Primer Plus”.

Упражнения по программированию и их решения:

1. Экспериментальным путем выясните, как ваша система обрабатывает переполнение при выполнении операций над целыми числами и над числами с плавающей запятой, а также потерю значимости при выполнении операций над числами с плавающей запятой; т.е. напишите программу, в которой присутствуют такие проблемы. (Для получения сведений о наибольших и наименьших значениях просмотрите обсуждение limits.h и float.h в главе 4). Читать далее →

Рубрика: С (Си) | 3 комментария

[Язык C] Введение в язык Си (глава 2)

Вторая глава в книжке Стивена Прата “C Primer Plus”. Тут уже появляются первые практические задания; хоть и крайне простые, на запоминание базового синтаксиса; поэтому отдельно их результат вывода приводить не буду. Перед заданиями небольшая памятка:

5 типов операторов в языке C

  • Оператор объявления
  • Оператор присваивания
  • Функция
  • Управляющий оператор
  • Пустой оператор

Упражнения по программированию

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

Рубрика: С (Си) | Оставить комментарий

Python: базовые операторы ввода и вывода текста

Самые первые операции с текстом и базовые сведения о Python, которые помогают тут же начать программировать:

  1. # Comments
  2. Ограничители '' или "" и экранирование символов \' и \"
  3. print('Hello world') — переход на новую строку
  4. end='...' — следующий print склеится
  5. \ escape-последовательности:
    \a — системный динамик
    \n — переход на новую строку (пустая строка)
    \t — отступ типа tab
  6. + сцепление строк без разделителя
  7. * повторение строк без разделителя
  8. \ продолжение строки кода на следующей строке
  9. input('Press Entr to exit')
  10. Базовые математические операторы (+,-,*,/,//,%).
  11. Составные операторы присвоения
  12. Строковые методы (применяются к строке с текстом): I am cat
    .upper() I Am CAT
    .lower() i am cat
    .title() I Am Cat
    .replace(old,new,max число замен) заменяет старый текст на новый
    .swapcase() меняет регистры наоборот i Am Cat
    .capitalize() первая буква большая, остальные строчные I am cat
    .strip() строка без интервалов Iamcat

Читать далее →

Рубрика: Python | Оставить комментарий