Первая программа.
Скачайте first.pdf, найдите куда Вы его сохранили и прочитайте содержимое.
Текст программы и выполнение.
Компьютер выполняет все команды, которые понятны компьютеру. Человек пишет команды на языке, который понятен человеку - программу.
Специальная программа переводит текст программы в команды для компьютера.
Будем использовать язык С для программ.
Прогамма печатает текст
// Этот текст нужно писать
// Зачем он нужен будет понятно позже
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Компьютер будет выполнять команды, если
// будет main
// между {} - будет текст программы
int main(){
// Печать приветствия
printf("Ура! Начали!!\n");
// Длинный текст, который хотим напечатать
// всегда должен быть в ""
}
Перевод текста программы в команды для компьютера
Сохраним текст с именем
prog1.c. Вызовем специальную программу
gcc -
компилятор. Она переведет текст в команды компьютера.
Если нет ошибок, появится файл
prig.exe - это программа, которую можно запускать.
Запустим.
>./prig.exe
"Ура! Начали!!"
Видим результат работы программы - текст на экране.
Вычисления
Для вычислений нужны числа. Числа помещают в память компьютера. Каждое число помещают в свое место. Каждое место
имеет имя и тип числа. Могут быть целые числа, дробные числа.
Задача
Даны две стороны прямоугольника (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;
}
Задача 1
Вычислить (Count) и напечатать (print) площадь (square of rectangle) прямоугольника. Место для хранения (storage for square) переменную (variable) площади назвать
S.
Не забываем вызвать программу gcc для перевода (
компиляции - compilation) текста программы в машинные команды (
код code)
Деление целых чисел (Integer division)
При делении целых чисел получаются целые числа. Для деления есть два
оператора:
- / результат деления (quotient) (30 / 4 -> 7)
- % остаток от деления (remainder) (30 % 4 -> 2)
Задача про метры
Расстояние измерили в метрах. Нужно напечатать его в километрах и метрах. Например, 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;
}
Компилировать программу и запустить
Задача 2. Скорость (Velosity)
Машина ехала со скоростью (velosity)
z км/час (km/h). Напечатать эту скорость в
м/сек (m/sec)
Задача 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).
Задача 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).
Задача 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)).
Задача 6. Часы1
Часы показывают часы и минуты. Циферблат на 24 часа.
Человек вышел из дома, когда часы показывали
h1 часов и
min1 минут.
Он вернулся через
h2 часов и
min2 минут.
Написать программу, которая печатает время, которое показывают часы, когда он вернулся.
Задача 7. Число
Дано шестизначное число (XXXXXX) (Integer of rang 6).
Написать программу, которая печатает сумму цифр этого числа. (Write the program to calculate the sum of digit of this integer).
Дробные числа.
Скорость (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;
}
Задача 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)
Задача 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
Задача 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;
}
Столы в комнате.
Длина стены L метров (float). Размер стола tl метров (float).
Написать программу для вычисления сколько столов можно поставить вдоль стены (integer).
Рис в мешках.
Масса риса
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.