Раздел «Язык Си».C_Progr1:

Первая программа.

Скачайте first.pdf, найдите куда Вы его сохранили и прочитайте содержимое.

Текст программы и выполнение.

Компьютер выполняет все команды, которые понятны компьютеру. Человек пишет команды на языке, который понятен человеку - программу. Специальная программа переводит текст программы в команды для компьютера.

Будем использовать язык С для программ.

Прогамма печатает текст

// Этот текст нужно писать
// Зачем он нужен будет понятно позже
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// Компьютер будет выполнять команды, если
// будет main
// между {} - будет текст программы
int main(){
// Печать приветствия
 printf("Ура! Начали!!\n");

// Длинный текст, который хотим напечатать
// всегда должен быть в ""    

}

Перевод текста программы в команды для компьютера

Сохраним текст с именем prog1.c. Вызовем специальную программу gcc - компилятор. Она переведет текст в команды компьютера.

>gcc prig1.c

Если нет ошибок, появится файл a.out - это программа, которую можно запускать.

Запустим.

>./a.out
"Ура! Начали!!"

Видим результат работы программы - текст на экране.

Вычисления

Для вычислений нужны числа. Числа помещают в память компьютера. Каждое число помещают в свое место. Каждое место имеет имя и тип числа. Могут быть целые числа, дробные числа.

REFACTOR Задача

Даны две стороны прямоугольника (size of rectangle) (целые числа - integer). Нужно вычислить периметр ( perimeter P of this rectangle) этого прямоугольника.

Решение для периметра

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// Начало программы 
int main(){
  // int - тип числа, а - название места 
  int a;        // место для одной стороны (to store one size) 
  int b;        // место для второй стороны (to store second size)
  int perimetr; // место для периметра (to store result - perimeter)

   // Значения для a и b:
   a = 10;
   b = 22;
   // Вычислим периметр (count), 
   // +  сложение 
   // *  умножение
   // -  минус (разность)

  perimetr = ( a + b ) * 2;
 
   // Печать периметра
  printf("периметр равен: %d\n", perimetr);
  return 0;     
}

REFACTOR Задача 1

Вычислить (Count) и напечатать (print) площадь (square of rectangle) прямоугольника. Место для хранения (storage for square) — переменную (variable) площади назвать S.

Не забываем вызвать программу gcc для перевода (компиляции - compilation) текста программы в машинные команды (код code)

Деление целых чисел (Integer division)

При делении целых чисел получаются целые числа. Для деления есть два оператора:

  1. / результат деления (quotient) (30 / 4 -> 7)
  2. % остаток от деления (remainder) (30 % 4 -> 2)

REFACTOR Задача про метры

Расстояние измерили в метрах. Нужно напечатать его в километрах и метрах. Например, 2 км 350 м.

Решение. В километре 1000 метров.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// Начало программы 
int main(){
   // int - тип числа, dimension - название переменной
   int dimension; // измеренная величина (в метрах) 
   int km;        // для километров
   int metr;      //для метров

   // Пусть программа получает значение dimension
   // когда будет работать с клавиатуры
   // не забываем "волшебный" знак & перед переменной для запоминания числа
   scanf("%d", &dimention);
  
   // Вычислим сколько получилось км, 
   km = dimension / 1000;
 
   // Вычислим сколько получилось метров, 
   metr = dimension % 1000;

   // Печать расстояния
   printf("%d\n", km);
   return 0;
}

Компилировать программу и запустить

REFACTOR Задача 2. Скорость (Velosity)

Машина ехала со скоростью (velosity) z км/час (km/h). Напечатать эту скорость в м/сек (m/sec)

REFACTOR Задача 3. Поезда1 (Trains1).

Первый поезд прибыл на станцию в 6:00 и уехал. ( First train arrives to station on 6:00 and departs). Поезда прибывают на станцию каждый час. (Trains arrive on station every hour (at 7:00, 8:00, 9:00, etc.)). Просле прибытия первого поезда прошло T минут. (After the arrival of the firs train prossed Т min.)

Написать программу, которая вычисляет и печатает сколько минут осталось до следующего поезда (write the program to calculate and print how many minutes to wait for the nex train).

REFACTOR Задача 4. Поезда2 (Trains2).

Первый поезд прибыл на станцию в 6:00 и уехал. ( First train arrives to station on 6:00 and departs). Поезда прибывают на станцию каждый час. (Trains arrive on station every hour (at 7:00, 8:00, 9:00, etc.)). Просле прибытия первого поезда прошло T минут. (After the arrival of the firs train prossed Т min.)

Написать программу, которая вычисляет и печатает сколько поездов прибывало на станцию за это время (write the program to calculate and print how many trains arrives during this time).

REFACTOR Задача 5. Поезда3 (Trains3).

Первый поезд прибыл на станцию в 6:00 и уехал. ( First train arrives to station on 6:00 and departs). Поезда прибывают на станцию каждые N минут. (Trains arrive on station every N min ). Просле прибытия первого поезда прошло h часов min минут. (After the arrival of the firs train prossed h hours and min min.)

Написать программу, которая вычисляет и печатает сколько поездов прибывало на станцию за это время и сколько часов и минут осталось ждать следующий поезд (write the program to calculate and print how many trains arrives during this time and how much time to wait fo next train (hour and minutes)).

REFACTOR Задача 6. Часы1

Часы показывают часы и минуты. Циферблат на 24 часа.

Человек вышел из дома, когда часы показывали h1 часов и min1 минут. Он вернулся через h2 часов и min2 минут.

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

REFACTOR Задача 7. Число

Дано шестизначное число (XXXXXX) (Integer of rang 6).

Написать программу, которая печатает сумму цифр этого числа. (Write the program to calculate the sum of digit of this integer).

Дробные числа.

REFACTOR Скорость (speed).

Автомобиль (car) проехал N км за h часов.

Написать программу, которая вычисляет скорость этого автомобиля.

#include <stdio.h>
#include <stdlib.h>
#include <math.h> // для извлечения коней и т.д.

// Начало программы 
int main(){
   // int - тип числа, dimension - название переменной
   float path; // путь  (в метрах) 
   float hour;        // время
   float speed;      //для метров

   // Пусть программа получает значение path и hour
   // когда будет работать с клавиатуры
   // %f - для чтения дробных чисел
   scanf("%f", &path);
  
   // Вычислим скорость, 
   speed = path / hour;
 
   // Печать скорости
   // %0.2f - печать 2-х знаков после запятой без отступов слева
   printf("%0.2f км/час\n", speed);
   return 0;
}

REFACTOR Задача 8. Автомобиль (car) и велосипед (bike)

Между городами A и В N км. (The distance between cities A and B is N km). Из города A выехал автомобиль со скоростью avto км/час. (The car left city A with velocity avto km/h). Одновременно с ним из города B по той же дороге навстречу выехал велосипедист со скоростью velo м/сек. (At the same time the bike left the city B and moves at the opposite direction on this road ).

Написать программу, чтобы вычислить на каком расстоянии от города A они встретятся. (Write the program to calculate the distance from A when they meet)

REFACTOR Задача 9. Гипотенуза (hypotenuse).

Даны два катета (cathetus )*a* и b .

 float a,b;
 ...
 a = sqrt(b); //the square root of the number

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

Компиляция программы с "математикой":

>gcc hypo.c -o hypo.exe -lm

REFACTOR Задача 10. Расстояние (distance).

Даны две точки на плоскости. (Two points on the plane are given.) x1,y1 - координаты первой точки, x2, y2 - координаты второй точки — целые числа. (Integers x1, y1 are coordinates of the first point, and integers x2, y2 are coordinates of the second point).

Написать программу для вычисления расстояния между этими точками (float). Write a program to calculate the distance between this two points (as float).

Преобразование целых в дробные и наоборот. (Convert integer to fraction and opposite).

Пример преобразования
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


// Начало программы 
int main(){
 
  float a; 
  int n; 
  int resint;
  float fl;
  scanf("%d%d", &a, &n);
  fl = n/4;
  printf("float n/4: %0.4f\n", fl);
  resint = n / 4;
  printf("int n/4: %d\n",resint);
  a = n;
  fl = a / 4;
  printf("float/4 : %0.4f\n", fl);
  fl = (float) n / 4;
  printf("(float)n/4 : %0.4f", fl);
  
return 0;
}

REFACTOR Столы в комнате.

Длина стены L метров (float). Размер стола tl метров (float).

Написать программу для вычисления сколько столов можно поставить вдоль стены (integer).

REFACTOR Рис в мешках.

Масса риса N кг. (float). В мешок помещается K (integer). Машина позволяет грузить не более z кг. Рис можно грузить только в мешках.

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

Weight of rice * N * kg. (float). K (integer) is placed in the bag. The machine allows you to ship no more than z (integer) a kg. Rice can be shipped only in bags.

Write a program to calculate how many bags will be loaded into the machine, how many bags with rice will remain, how much rice (kg) will not remain in the bags.

Attachment sort Action Size Date Who Comment
first.pdf manage 322.3 K 19 Sep 2018 - 08:24 TatyanaOvsyannikova2011