Знание Паскаля и основ алгоритмизации

Страницы работы

18 страниц (Word-файл)

Содержание работы

Начальные сведения.

Содержание курса: Си, офисные приложения, VBA.

Структура курса: 54 лекции, 84 лабораторные (8 ЛР), 36 УВП (3 ЛР).

Литература (Common), о конспекте, контрольные работы.

Знание Паскаля и основ алгоритмизации.

Создан Денисом Ричи для создания UNIX на ЭВМ DEC PDP–11.

Занимает промежуточное положение между языками высокого и низкого уровня.

Структура программы на примере.

Задача.

Подсчитать количество отрицательных и сумму положительных чисел, введенных с клавиатуры.

Окончание ввода – число 0.

uses crt;

var

  a,k,s: integer;       {Нету различия между a и A}

begin

  clrscr;

  s:=0;

  k:=0;

  writeln(‘Введите последовательность чисел’);

  writeln(‘Окончание ввода – число 0’);

  readln(a);

  while a <> 0 do begin

    if a<0 then

       k:=k+1

    else

       s:=s+a;

    readln(a);

  end;

  writeln(‘Количество отрицательных чисел : ’, k:6);

  writeln(‘Сумма      положительных чисел : ’, s:6);

end.

#include<stdio.h>

#include<conio.h>

void main(void) {

    int a,k,s;          /* Есть различие между a и A */

  clrscr();

  s=0;

  k=0;

  printf(“Введите последовательность чисел\n”);

  printf(“Окончание ввода – число 0\n”);

  scanf(“%d”, &a);

  while(a != 0) {

    if(a<0)

       k=k+1;

    else

       s=s+a;

    scanf(“%d”, &a);

  }

  printf(“Количество отрицательных чисел : %6d\n”, k);

  printf(“Сумма      положительных чисел : %6d\n”, s);

}

Описание переменной, имя переменной

int a,k=0,s=0;       //определение и инициализация одновременно

Числовые типы

int, long, char – целые типы

signed, unsigned

Суффиксы и префиксы констант: 0х, 0, l, u

’c’, ’\0ooo’, ’\xhh’, ’\n’, ’\t’, ’\\’, ’\”’ , ’\’’

Вещественные типы: float, double, long double; константы (f, l)

Строковые литералы: “xxxxxxxxxxx”.

Элементарный ввод/вывод

printf(s, v1, v2, …, vn);

scanf(s, &v1, &v2, …, &vn);

Операции и выражения

Арифметические: +, –, *, %, /

Поразрядные: &, |, ~, ^, >>, <<

Логические: &&, ||, !

Отношения: <, >, <=, >=, ==, !=

Истина – ненулевое значение, ложь – 0.

Результат логического выражения: 0 или 1.

      a=b>c;      a=(b>c)*3   //0 или 3;

      while(a)    while(!a)   while(a=0)  //ошибка!!!

      while((c=getchar())!=EOF)

Инкремент, декремент: ++, –– (префиксная и постфиксная формы)

      a==b++ && a>c     //нет гарантии, что выполнится b++

Условия: выражение? выражение_истина: выражение_ложь

Присваивание: =, v1=v2=...=vn (справа налево), var op= выражение

Операция sizeof: sizeof(тип), sizeof(переменная)

Приведение типа: (тип) выражение

Операция запятая

#include<stdio.h>

#include<conio.h>

void main(void) {

  int a,k=0,s=0;

  clrscr();

  printf(“Введите последовательность чисел\n”

         “Окончание ввода – число 0\n”);

  while(scanf(“%d”, &a), a)

    if(a<0)

       k++;

    else

       s+=a;

  printf(“Количество отрицательных чисел : %6d\n”

         “Сумма      положительных чисел : %6d\n”, k, s);

}

Операторы управления вычислительным процессом

if(выражение)

      оператор1;

else

      оператор2;

switch(выражение) {

      case const1: оператор1; [break;]

      . . .

      case constn: операторn; [break;]

      [default: операторn+1;]

}

Задача. Сколько дней в месяце?

int y, m, d;

scanf(“%d%d”, &y, &m);

switch(m) {

      case 2: d= 28+ !(y&3); break;

      case 4:

      case 6:

      case 9:

      case 11: d= 30; break;

      default: d= 31;

}

while(выражение)

      оператор;

do

      оператор;

while(выражение);

for(выражение1; выражение2; выражение3)

      оператор;

Операторы break, continue, goto.

Бесконечный цикл while(1) оператор;       for(;;) оператор;

Задача. Подсчитать сумму последовательности из n чисел, введенных с клавиатуры. Дополнительное условие окончания ввода – число 0 в последовательности.

#include<stdio.h>

void main(void) {

    int a, s=0, n;

scanf(“%d”, &n);

while(scanf(“%d”, &a), a) {

  s+=a;

  if(--n)

    break;

}

printf(“Сумма чисел : %6d\n”, s);

}

#include<stdio.h>

void main(void) {

    int a, s=0, n, i;

  scanf(“%d”, &n);

  for(i=0; i<n; i++) {

    scanf(“%d”, &a);

    if(!a)

      break;

    s+=a;

  }

  printf(“Сумма чисел : %6d\n”, s);

}

#include<stdio.h>

void main(void) {

    int a, s=0, n;

for(scanf(“%d”, &n); scanf(“%d”, &a), n-- && a; s+=a);

printf(“Сумма чисел : %6d\n”, s);

}

Задача. Подсчитать количество пробелов среди символов, введенных с клавиатуры.

#include<stdio.h>

void main(void) {

    int c, n=0;

  while((c=getchar())!=EOF)

    if(c==’ ‘)

      n++;

  printf(“n=: %d\n”, n);

}

Задача. Записать число в обратном порядке цифр.                      (сначала по паскалевски)

#include<stdio.h>

void main(void){

            long unsigned x,y=0;

      scanf("%lu",&x);

      while(x){               //while(x>0)

            (y*=10)+=x%10;    //y=y*10+x%10;

            x/=10;

      }

      printf("y=%lu\n",y);

}

Задача. Удалить старший разряд числа.                                        (сначала по паскалевски).

#include<stdio.h>

void main(void){

            long unsigned x,y=0,p=1;

      scanf("%lu",&x);

      while(x>9){

            y+=(x%10*p);

            x/=10;

            p*=10;

      }

      printf("y=%lu\n",y);

}

Задача. Подсчитать exp(x) с точностью до eps.


Лаб. 1в

#include<stdio.h>

#include<math.h>

void main(void){

            float a,b,u,x,f,h;

            float absx, ln2rev=1./log(2), pi=4*atan(1);      //или =acos(-1)

            int n,odz;

      scanf("%f%f%f%d",&a,&b,&u,&n);

      if(n<2)n=10;

      if(a==b){

            a-=0.5; b+=0.5;

      } else if(a>b){

            x=a; a=b; b=x;

      }

      h=(b-a)/(n-1);

      for(x=a;x<b+0.5*h;x+=h){

            odz=1;

            absx=fabs(x);

            if(absx>=5 && absx<=10)

                  if(x*0.5-floor(x*0.5)==0.5)odz=0;         //fmod(x,2)==1

                  else f=tan(0.5*pi*x);

            else if(absx<=2)

                  if(x==-u || fabs(u*x)>1)odz=0;

                  else f=asin(u*x)+pow(0.3,x)/(x+u);

            else

                  if(u*x<=0)odz=0;

                  else f=ln2rev*log(u*x);

            printf("|%10.4f  |",x);

            if(!odz)

                  printf("  не определена!  |\n");

            else

                  printf("%16.4f  |\n",f);

      }

}


Строки

char error[10];         char *no_error;

error=”error”;          no_error=”no_error”;

char spring[][8]={"март", "апрель", "май"};     //+4 константы

char *Spring[]={"март", "апрель", "май"};       //+1 константа

Похожие материалы

Информация о работе