X pertence ao segmento. Tópico: tipo de dados booleano

Lição da série " Algoritmos Geométricos»

Olá caro leitor!

Hoje vamos considerar outro problema típico da série de algoritmos geométricos. Vamos escrever uma função que irá verificar pertencente arbitrário segmento de linha dado pelas coordenadas de seu início e fim.

Para implementar operações de comparação em dados reais, escreveremos mais duas funções: a função EqPoint(), que verificará se dois pontos no plano coincidem, e a função RealMoreEq(), que usaremos para verificar o “>=” relação (maior ou igual a). Já sabemos o motivo da introdução de funções especiais.

Tarefa. Verificar, pertence se segmento de linha.

Sejam os pontos os pontos inicial e final do segmento. é um ponto arbitrário no plano.

Um vetor que começa em um ponto e termina em um ponto terá coordenadas (x2-x1, y2-y1).

Se P(x, y) é um ponto arbitrário, então as coordenadas do vetor são: (x-x1, y - y1).

O ponto P pertencerá ao segmento se:

Programa geom3; Const _Eps: Real = 1e-3; (precisão de cálculo) var x1,y1,x2,y2,x,y:real; Função RealEq(Const a, b:Real):Booleano; (estritamente igual) begin RealEq:= Abs(a-b)<= _Eps End; {RealEq} Function RealMoreEq(Const a, b:Real):Boolean; {больше или равно} begin RealMoreEq:= a - b >= _EpsEnd; (RealMoreEq) Função EqPoint(x1,y1,x2,y2:real):Boolean; (Se dois pontos no plano coincidem) começam EqPoint:=RealEq(x1,x2)and RealEq(y1,y2) end; (EqPoint) Função AtOtres(x1,y1,x2,y2,x,y:real):Boolean; (Verificando se o ponto P pertence ao segmento P1P2) Begin If EqPoint(x1,y1,x2,y2) Then AtOtres:= EqPoint(x1,y1,x,y) (os pontos P1 e P2 coincidem, o resultado é determinado pela coincidência dos pontos P1 e P) Else AtOtres:= RealEq((x-x1)*(y2-y1)-(y-y1)*(x2-x1),0)and (RealMoreEq(x,x1)and RealMoreEq(x2) ,x)Ou RealMoreEq(x ,x2)e RealMoreEq(x1,x)) end; (AtOtres) begin (main) writeln(Digite as coordenadas do ponto: x1,y1,x2,y2,x,y"); readln(x1,y1,x2,y2,x,y); if AtOtres(x1,y1,x2 ,y2,x,y) então writeln("Sim.") else writeln("Não.); fim. (a Principal)

Resultados da execução do programa.

Insira as coordenadas do ponto: x1, y1, x2, y2, x,y
0.5 1 2.5 2.8 1.203 1.633
Sim.

Resultados dos testes no programa GeoGebra:


Hoje escrevemos a função AtOtres(), que verifica se um ponto arbitrário pertence a um segmento dado por suas coordenadas.

Mais duas funções foram introduzidas: EqPoint() e RealMoreEq() para implementar operações de comparação em dados reais. O primeiro verifica se dois pontos no plano coincidem, o segundo é usado para verificar a relação ">=".

Na próxima lição, com base nos procedimentos escritos anteriormente, escreveremos um procedimento para determinar as coordenadas do ponto de interseção de dois segmentos.

Neste eu digo adeus a você. Nos vemos na próxima aula.

Variáveis ​​booleanas normalmente obtêm seus valores de operações de comparação e matemática (discutidas na lição anterior), bem como operações booleanas específicas.

O Turbo Pascal possui operações lógicas que podem ser aplicadas a variáveis ​​do tipo booleano. Estas não são operações e, ou e xor. Neste tópico, você examinará três operações lógicas. As designações e os resultados dessas operações são apresentados na tabela. Considere isso.

Operação não(não) tem um operando e forma sua negação lógica. O resultado da operação not é False se o operando for true e True se o operando for false. Então,

não Verdadeiro Falso (falsidade é mentira)

não falso Verdadeiro (não falso é verdadeiro)

Resultado da operação e(i) é verdadeiro somente se ambos os seus operandos forem verdadeiros, e falso caso contrário.

Resultado da operação ou(ou) é verdadeiro se qualquer um de seus operandos for verdadeiro, e falso somente se ambos os operandos forem falsos.

Exercício . Tente determinar o significado das operações booleanas para instruções:

  1. Uma criança em idade escolar fica em casa durante as férias de inverno ou vai a algum lugar para descansar.
  2. Philip Kirkorov é cantor e operador de colheitadeira.
  3. Os escolares são meninos e meninas.

As operações lógicas, relacionais e aritméticas geralmente ocorrem na mesma expressão. Nesse caso, as relações à esquerda e à direita do sinal da operação lógica devem ser colocadas entre colchetes, pois as operações lógicas têm maior prioridade. Em geral, adota-se a seguinte prioridade de operações:

  • e, *, /, div, mod
  • ou, +, -
  • operações de relação.

. A operação lógica e também é chamada de multiplicação lógica, e a operação lógica ou também é chamada de adição lógica.

Além disso, a ordem das operações pode ser alterada por parênteses. Por exemplo, em uma expressão lógica, organizamos a ordem das ações

A ou B e não (A ou B)

O operador or entre parênteses é executado primeiro, seguido pelos operadores not e or. Se substituirmos os valores True e False em vez das variáveis ​​A e B, então, usando o procedimento já considerado, obtemos o valor de toda a expressão igual a True.

Exercício . Escreva em seu caderno e calcule os valores das expressões para a=10, b=20, c=true, d=false:

  • (a>5) e (b>5) e (a<20) and (b<30);
  • não (um<15) or not (b<30);
  • c ou d e (b=20);

Atenção! Em Pascal, não há como inserir dados booleanos usando a instrução read. No entanto, a saída dos valores das variáveis ​​do tipo booleano é fornecida usando o operador de gravação.

Por exemplo, após executar a instrução write (5>2), True será exibido na tela.

Trabalho independente

Escolha com o professor uma tarefa para fazer um trabalho independente dos exercícios abaixo.

  1. Calcule os valores da expressão:

    a) quadrado(x)+quadrado(y)<=4 при x=0.3, y=-1.6;

    b) k mod 7 = k div5-1 em k=15;

    c) ímpar(trunc(10*p)) em p=0,182;

    d) não ímpar(n) para n=0;

    e) t e (p mod 3=0) em t=verdadeiro, p=101010;

    e) (x*y<>0) e (y>x) com x=2, y=1;

    g) (x*y<>0) ou (y>x) quando x=2, y=1;

    h) a ou (não b) com a=Falso, b=Verdadeiro;

  2. Escreva uma relação em Pascal que seja verdadeira se a condição especificada for atendida e falsa caso contrário:

    a) o inteiro k é divisível por 7;

    b) o ponto (x, y) está fora do círculo de raio R centrado no ponto (1,0);

    c) o número natural N é o quadrado do número natural;

    e) 0

    e) x=max(x,y,z);

    e) pelo menos uma das variáveis ​​lógicas aeb é True;

    g) ambas as variáveis ​​lógicas aeb são verdadeiras.

  3. Especifique a ordem em que as operações são executadas ao avaliar expressões:

    a) a e b ou não c e d;

    b) (x>=0) ou não c e d.

  4. Avalie as seguintes expressões com a=True, b=False:

    a) a ou b e não a;

    b) (a ou b) e não a;

    c) não a e b;

    d) não (a e b)

  5. Escreva uma expressão em Pascal que seja verdadeira se a condição especificada for atendida e falsa caso contrário:

    a) x pertence ao segmento;

    b) x está fora do segmento;

    c) * x pertence ao segmento ou [-1, 1];

    d) * x está fora dos segmentos e [-1, 1];

    e) cada um dos números x, y, z é positivo;

    g) nenhum dos números x, y, z é positivo;

    h) apenas um dos números x, y, z é positivo;

    i) a variável booleana a tem o valor True, a variável booleana b tem o valor False;

    j) * um ano com número de série y é bissexto (um ano é bissexto se seu número for múltiplo de 4, mas dos múltiplos de 100, apenas múltiplos de 400 são bissextos, por exemplo, 1700, 1800 e 1900 são anos não bissextos, 2000 é um ano bissexto).

  6. Desenhe no plano (x, y) uma área na qual e somente na qual a expressão especificada é verdadeira:

    a)* (y>=x) e (y+x>=0) e (y<=1);

    b) (quadrado(x)+quadrado(y)<1) or (y>0) e (abs(x)<=1);

    c) (trunc(y)=0 e (round(x)=0);

    d)* (abs(x)<=1)>(abs(y)>=1);

    e) (quadrado(x)+quadrado(y)<=4)=(y<=x).

  7. Existe um operador condicional:
    se d<>10
    então
    writeln('viva!')
    senão
    writeln('ruim...');

    É possível substituí-lo pelas seguintes declarações:

  8. Quais serão os valores das variáveis ​​j, k após a execução da instrução condicional:
    se j>k
    então
    j:=k-2
    senão
    dec(k,2);
    se os valores iniciais das variáveis ​​forem iguais:
    a) j=3, k=5;
    b) j=3, k=3;
    c) j=3, k=2.

Observação . Como resultado da declaração dec (k,2), o valor da variável k é diminuído em 2.

Escolha com o professor uma tarefa para fazer um trabalho independente dos exercícios abaixo.

1. Calcule os valores da expressão:

a) quadrado(x)+quadrado(y)<=4 при x=0.3, y=-1.6;

b) k mod 7 = k div5-1 em k=15;

c) ímpar(trunc(10*p)) em p=0,182;

d) não ímpar(n) para n=0;

e) t e (p mod 3=0) em t=verdadeiro, p=101010;

e) (x*y<>0) e (y>x) com x=2, y=1;

g) (x*y<>0) ou (y>x) quando x=2, y=1;

h) a ou (não b) com a=Falso, b=Verdadeiro;

2. Escreva em Pascal uma relação que seja verdadeira se a condição especificada for atendida e falsa caso contrário:

a) o inteiro k é divisível por 7;

b) a equação não tem raízes reais;

c) o ponto (x, y) está fora do círculo de raio R centrado no ponto (1,0);

d) o número natural N é o quadrado do número natural;

e) x=max(x,y,z);

g) (não use a operação not)

h) pelo menos uma das variáveis ​​lógicas aeb é True;

i) ambas as variáveis ​​lógicas a e b são verdadeiras.

3. Especifique a ordem em que as operações são executadas ao avaliar expressões:

a) a e b ou não c e d;

b) (x>=0) ou não c e d.

4. Calcule as seguintes expressões com a=True, b=False:

a) a ou b e não a;

b) (a ou b) e não a;

c) não a e b;

d) não (a e b)

5. Escreva uma expressão em Pascal que seja verdadeira se a condição especificada for atendida e falsa caso contrário:

a) x pertence ao segmento;

b) x está fora do segmento;

c) * x pertence ao segmento ou [-1, 1];

d) * x está fora dos segmentos e [-1, 1];

e) cada um dos números x, y, z é positivo;

g) nenhum dos números x, y, z é positivo;

h) apenas um dos números x, y, z é positivo;

i) a variável booleana a tem o valor True, a variável booleana b tem o valor False;

j) * um ano com um número de série y é um ano bissexto (um ano é um ano bissexto se seu número for múltiplo de 4, mas dos múltiplos de 100, apenas múltiplos de 400 são anos bissextos, por exemplo, 1700, 1800 e 1900 são anos não bissextos, 2000 é um ano bissexto).

6. Desenhe no plano (x, y) a área na qual e somente na qual a expressão especificada é verdadeira:

a)* (y>=x) e (y+x>=0) e (y<=1);

b) (quadrado(x)+quadrado(y)<1) or (y>0) e (abs(x)<=1);

c) (trunc(y)=0 e (round(x)=0);

d)* (abs(x)<=1)>(abs(y)>=1);

e) (quadrado(x)+quadrado(y)<=4)=(y<=x).

7) Existe um operador condicional:

writeln('viva!')

writeln('ruim...')

É possível substituí-lo pelas seguintes declarações:

a) se d=10 b) se não (d=10)

writeln ('hooray!') writeln ('hooray!')

writeln('ruim...'); writeln('ruim...');

c) se não (d=10) d) se não (d<>10)

writeln ('ruim...') writeln ('ruim...')

writeln('viva!'); writeln('viva!');

8) Quais serão os valores das variáveis ​​j,k após a execução da instrução condicional:

se os valores iniciais das variáveis ​​forem iguais:

Observação. Como resultado da declaração dec (k,2), o valor da variável k é diminuído em 2.

. X pertence ao segmento ;
x encontra-se fora do segmento;
x pertence ao segmento ou [-1,1];
x está fora do segmento ou [-1,1].
3.
Explique a estrutura e as regras para executar instruções condicionais.
4.
Escreva a ação especificada como uma única instrução condicional:
porque
2
x, em 0x no =
1-pecado
2
x, por outro lado.
5.
z
int z=0, x=1, y=

1;

80 Programação de algoritmos lineares no sistema C++Builder
se (x>0) se (y>0) z=1; senão z=2;
6.
Que valor terá a variável z após executar as instruções:
int z=0, x=

1,y=1;
if (x) ( if (y>0) z=1;) else z=2;
7.
Que valor terá a variável z após executar as instruções:
int z=0, x=0, y=1;
if (x) ( if (y>0) z=1;) else z=2;
8.
Que valor terá a variável z após executar as instruções:
int z=0, x=3, y=1;
se (x) ( se (y) z=1;) senão z=2;
9.
Especifique erros nas seguintes instruções:
se (1
elsex=0; y+= 1;
10.
int z=0, x=0, y=1;
if (!x) ( if (!(y

1)) z=1;) senão z=2;
11.
Que valor terá a variável z após executar as instruções:
int z=0, x=1, y=1;
if (!x) ( if (!(y

1)) z=1;) senão z=2;
12.
Encontre erros no fragmento do programa:
(int n,x; switch (k) case + : x:=x-4 break; case

-

,

*

, x=5;
}
Que regras são violadas e como os erros podem ser corrigidos?


81
3.4
Tarefas individuais para a seção 3
Cada aluno precisa resolver dois problemas do primeiro e segundo níveis de complexidade.
Tarefas do primeiro nível de complexidade.
1.
Você recebe um número inteiro positivo de quatro dígitos. Escreva um programa que imprima verdadeiro ou falso dependendo se a condição especificada for atendida ou não: a soma do 1º e 4º dígitos é igual ao produto do 2º e 3º dígitos.
2.
Os números reais x, y são dados. Se xey forem negativos, substitua cada valor por seu módulo; se apenas um deles for negativo, aumente os dois valores em 5,5; em outros casos, ambos os valores devem ser reduzidos em 10 vezes.
3.
Os números reais x, y são dados. Se xey forem positivos, diminua cada valor por um fator de 5; se ambos os valores estiverem no intervalo [-3, 9], ambos os valores devem ser substituídos por 0; caso contrário, x e y aumentam em 3.
4.
Números reais x, y (xy) são dados. Substitua o menor desses dois números por sua meia soma e o maior por seu duplo produto.
5.
Se a soma de três números reais distintos aos pares x, y, z for menor que 1, então o menor desses três números será substituído pela metade da soma dos outros dois; caso contrário, substitua o menor de xey pela metade da soma dos dois valores restantes.
6.
Os números reais a, b, c, d são dados. Se um b>c>d, então deixe os números inalterados; caso contrário, substitua todos os números por seus quadrados.
7.
Determine se um número inteiro de seis dígitos tem sorte. (Um número é chamado de sorte se a soma de seus três primeiros dígitos for igual à soma de seus três últimos dígitos.)
8.
verdadeiro ou falso dependendo se a condição especificada é satisfeita ou não: para números reais arbitrários a, b, c, determine se a equação ax
2
+bx+c=0 pelo menos uma solução real.

82 Programação de algoritmos lineares no sistema C++Builder
9.
Para resolver o seguinte problema, escreva um programa que imprima verdadeiro ou falso dependendo se a condição especificada é atendida ou não: para determinar se a soma dos dois primeiros dígitos de um determinado número de quatro dígitos é igual à soma de seus dois últimos números.
10.
Algumas escolas têm as seguintes políticas de admissão. Os candidatos fazem dois exames, que são classificados de acordo com
100 pontos cada. Se o candidato marcar pelo menos 150 pontos, isso dá o direito de entrar no departamento diurno, de 100 a 149 - no departamento noturno; abaixo de 100 pontos significa negação de admissão ao estudo. Escreva um programa que, dependendo da quantidade de pontos obtidos, informe ao solicitante seu direito de se inscrever.
11.
Escreva um programa usando o operador de seleção , que permite obter uma descrição verbal das marcas. (1 - "ruim", 2 -
"insatisfatório", 3 - "satisfatório", 4 - "bom", 5 -
"Excelente".)
12.
Para resolver o seguinte problema, escreva um programa que imprima verdadeiro ou falso dependendo se a condição especificada é atendida ou não: para determinar se entre os dígitos de um determinado número de três dígitos são os mesmos.
13.
Escreva um programa que imprima verdadeiro se data d1, m1 precede (dentro de um ano) a data d2, m2 e significado falso por outro lado.
14.
Escreva um programa usando uma instrução select que exiba o nome completo pela primeira letra do nome.
(Ivan, Peter, Nikolai, Vladimir, George).
15.
Escreva um programa usando o operador de seleção, que, dado o dígito de entrada 0≤ k≤ 5 imprime o nome desta figura em russo e inglês.
16.
Dado um inteiro k (1

k

365). Determine se o k-ésimo dia do ano será um fim de semana ou um dia útil, se 1º de janeiro for segunda-feira.
17.
Dado um número real x. Calcular f, E se:











pecado
,
1 0
,
0 5
2 11 2
casos
o resto
dentro
x
x
x
no
x
x
x
no
f

Programação com arrays unidimensionais
83 18.
Dado um número real x. Escreva um programa para calcular f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
casos
o resto
dentro
x
x
x
no
x
x
x
no
f
19.
Escreva um programa usando um operador select que, pela primeira letra do nome da cidade, exiba o nome completo da cidade (Kursk, Moscou, Tula, Novgorod, Voronezh).
20.
Escreva um programa usando uma instrução select que exiba o nome completo pela primeira letra do sobrenome (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Dadas as coordenadas do centro e o raio do círculo. Determine se um certo ponto com coordenadas (x,y) pertence ao círculo.
22.
Escreva um programa usando uma instrução select que imprima o nome completo do animal (cachorro, gato, girafa, cavalo, macaco) dada a primeira letra do nome do animal.
23.
Dados três números distintos abc. Ordene esses números em ordem crescente para que uma correspondeu ao menor número, b- número médio, c- o maior.
24.
Escreva um programa usando uma instrução select que, por número (de 1 a 7), exiba o nome do dia da semana.
25.
Escreva um programa usando uma instrução select que, por número (de 1 a 12), exiba o nome do mês do ano.
26.
Escreva um programa usando uma instrução select que, dada a primeira letra do nome da estação do ano, imprima o nome completo da estação do ano.
27.
Você recebe um número inteiro positivo de cinco dígitos. Escreva um programa que imprima verdadeiro ou falso dependendo se a condição especificada for atendida ou não: a soma do 1º, 3º e 5º dígitos é maior que o produto do 2º e 4º dígitos.
28.
Você recebe um número inteiro positivo de quatro dígitos. Escreva um programa que imprima verdadeiro ou falso dependendo do clima

84 Programação de algoritmos lineares no sistema C++Builder se a condição especificada é atendida ou não: média aritmética 1 e
4 dígitos é mais do que a soma de 2 e 3 dígitos.
29.
Dado um dígito e um número de três dígitos em notação decimal. Se o dígito corresponder ao dígito mais alto do número, calcule a soma dos dígitos do número. Se o dígito corresponder ao dígito do meio do número, calcule o produto dos dígitos do número. Se o dígito corresponder ao dígito menos significativo do número, calcule a média aritmética dos dígitos do número. Se nenhuma das condições for atendida, calcule a média geométrica dos dígitos do número.
30.
Dado um dígito e um número de três dígitos em notação decimal. Se o dígito corresponder ao dígito mais alto do número, calcule a média aritmética dos dígitos do número. Se o dígito coincidir com o dígito do meio do número, calcule a média geométrica dos dígitos do número. Se o dígito corresponder ao dígito menos significativo do número, calcule a soma dos dígitos do número. Se nenhuma das condições for atendida, calcule o produto dos dígitos do número
Tarefas do segundo nível de complexidade.
1.
Dado um inteiro positivo de dois dígitos no sistema de numeração ternário. Escreva um programa que exiba os nomes dos dígitos de um número em russo, se o dígito mais alto do número for maior que o mais novo, caso contrário
- Em inglês.
2.
Dado um inteiro positivo de dois dígitos no sistema numérico de cinco dígitos. Escreva um programa que exiba os nomes dos dígitos de um número em inglês, se o dígito mais alto do número for maior que o mais baixo, caso contrário
- em russo.
3.
Dado um inteiro positivo de dois dígitos no sistema numérico de cinco dígitos. Escreva um programa que imprima os nomes dos dígitos de um número em inglês se o dígito mais alto do número for exatamente 2 vezes o dígito mais baixo, caso contrário
- em russo.
4.
Dado um inteiro positivo de dois dígitos no sistema de numeração ternário. Escreva um programa que exiba os nomes dos dígitos de um número em russo, se o dígito mais alto do número for menor que o mais baixo, caso contrário
- Em inglês.

Programação com arrays unidimensionais
85 5.
Dado um inteiro positivo de dois dígitos no sistema numérico de cinco dígitos. Escreva um programa que exiba os nomes dos dígitos de um número em russo.
6.
Dado um inteiro positivo de dois dígitos no sistema de numeração octal. Escreva um programa que exiba os nomes dos dígitos de um número em russo.
7.
Dado um inteiro positivo de dois dígitos no sistema de numeração octal. Escreva um programa que exiba, se o dígito mais alto for menor que a metade do dígito mais baixo, os nomes dos dígitos do número em inglês, caso contrário

em russo.
8.
Dado um inteiro positivo de dois dígitos no sistema de numeração septimal. Escreva um programa que exiba, se os dígitos estiverem em ordem decrescente, os nomes dos dígitos do número em inglês, caso contrário

em russo.
9.
Você recebe dois dígitos no sistema de numeração decimal. Escreva um programa que exiba os nomes em inglês dos dígitos da soma desses dígitos.
10.
Você recebe dois dígitos no sistema de numeração decimal. Escreva um programa que exiba os nomes em russo dos dígitos do produto desses dígitos.
11.
Você recebe dois dígitos no sistema de numeração decimal. Escreva um programa que exiba o nome em russo do dígito do módulo da diferença desses dígitos.
12.
Você recebe dois dígitos no sistema de numeração decimal. Escreva um programa que exiba os nomes dos dígitos em inglês do quociente e o resto da divisão inteira desses números.
13.
Dado um inteiro positivo de dois dígitos no sistema de numeração decimal. Escreva um programa que exiba, se o dígito mais alto for três vezes o dígito mais baixo, os nomes dos dígitos do número em inglês, caso contrário

em russo.
14.
Dado um inteiro positivo de dois dígitos no sistema de numeração decimal. Escreva um programa que imprima o nome do dígito de um número que tem um valor maior em inglês e o nome do dígito de um número que tem um valor menor,

em russo.

86 Programação de algoritmos lineares no sistema C++Builder
15.
Dado um inteiro positivo de dois dígitos no sistema de numeração septimal. Escreva um programa que imprima o nome do dígito de um número que tem um valor maior em inglês e o nome do dígito de um número que tem um valor menor,

em russo.
16.
Dado um inteiro positivo de dois dígitos no sistema de numeração hexadecimal. Escreva um programa que exiba os nomes dos dígitos de um número em inglês.
17.
Dados dois números inteiros positivos de dois dígitos no sistema de numeração ternário. Escreva um programa que exiba os nomes dos dígitos da soma desses números em russo.
18.
Dois números inteiros positivos de dois dígitos no sistema de numeração binário são dados. Escreva um programa que exiba os nomes dos dígitos da soma desses números em inglês.
19.
Dado um inteiro positivo de dois dígitos no sistema numérico de cinco dígitos. Escreva um programa que exiba, se os dígitos estiverem em ordem crescente, os nomes dos dígitos do número em inglês, caso contrário

em russo.
20.
Dado um inteiro positivo de dois dígitos no sistema de numeração hexadecimal. Escreva um programa que exiba, se o dígito mais alto for cinco vezes o dígito mais baixo, os nomes dos dígitos do número em russo, caso contrário

Em inglês.
21.
Dois dígitos são dados no sistema de numeração octal. Escreva um programa que exiba os nomes em russo dos dígitos do módulo da diferença desses dígitos.
22.
Dois dígitos são dados no sistema de numeração octal. Escreva um programa que exiba os nomes em russo dos dígitos da soma desses dois dígitos.
23.
Dado um inteiro positivo de dois dígitos no sistema de numeração septimal. Escreva um programa que exiba, se o dígito mais alto for três vezes o mais baixo, os nomes dos dígitos do número em russo, caso contrário

Em inglês.
24.
Dado um inteiro positivo de dois dígitos no sistema de numeração octal. Escreva um programa que exiba o nome do dígito de um número que tem um valor maior em russo e em

Programação com arrays unidimensionais
87 a classificação do dígito do número que tem o menor valor,

Em inglês.
25.
Dado um inteiro positivo de dois dígitos no sistema de numeração septimal. Escreva um programa que exiba o nome dos dígitos de um número que tenha um valor menor que 4 em russo e o nome dos dígitos do número que tenha um valor maior ou igual a 4,

Em inglês.
26.
Dado um inteiro positivo de dois dígitos no sistema de numeração hexadecimal. Escreva um programa que exiba o nome dos dígitos de um número que tenha um valor menor que 3 em russo e o nome dos dígitos de um número que tenha um valor maior ou igual a 3,

Em inglês.
27.
Dadas as duas primeiras letras (não diferenciam maiúsculas de minúsculas, maiúsculas e minúsculas) do nome do mês do ano. Escreva um programa que exiba o nome completo do mês do ano em russo.
28.
Dadas as duas primeiras letras (não diferenciam maiúsculas de minúsculas, maiúsculas e minúsculas) do nome do dia da semana. Escreva um programa que exiba o nome completo do dia da semana em russo.
29.
No antigo calendário japonês, era adotado um ciclo de 60 anos, composto por cinco subciclos de 12 anos. Os subciclos foram designados por nomes de cores: verde, vermelho, amarelo, branco e preto. Dentro de cada subciclo, os anos receberam nomes de animais: ratos, vacas, tigres, lebres, dragões, cobras, cavalos, ovelhas, macacos, galinhas, cães e porcos (1984 - o ano do rato verde - foi o início da o próximo ciclo). Escreva um programa que insira o número de um determinado ano de nossa era e imprima seu nome de acordo com o antigo calendário japonês.
30.
Dado um inteiro positivo de dois dígitos no sistema de numeração decimal. Escreva um programa que exiba o nome dos dígitos de um número que tenha um valor maior que 5 em russo e o nome dos dígitos de um número que tenha um valor menor ou igual a 5,

Em inglês.

88 Programação de algoritmos lineares no sistema C++Builder
4 PROGRAMAÇÃO DO CÍCLICO
ALGORITMOS NO SISTEMA C++ BUILDER
Nesta seção, o estudo dos operadores de loop de linguagem é realizado.
C++, adquirindo habilidades em programação de algoritmos cíclicos, introduzindo
Sim, compilando e depurando programas.
4.1
Conceitos Básicos
Na língua C++Builder Existem três instruções de loop:
1.
Loop com pré-condição ( enquanto);
2.
Loop com pós-condição ( Faz);
3.
Loop com contador ( por).
Instrução de loop com pré-condição enquanto (Figura 4.1):
enquanto(condição) (corpo do laço)
Figura 4.1

Esquema do algoritmo do operador de loop enquanto
Se o resultado da avaliação de condição for verdadeiro(true), então o corpo do loop é executado e a transição para a verificação de condição é realizada novamente. Se o resultado da avaliação de condição for falso(false), então o loop sai e salta para a instrução após a instrução cíclica enquanto.
Se, antes da primeira execução do loop, o valor da expressão era falso, o corpo do loop não é executado e ocorre a transição para a próxima instrução.
Doença
Corpo do laço
Sim
Não

Programação com arrays unidimensionais
89
Exemplo:
Calcule a soma dos números ímpares entre 1 e 10.
(int k=1, s=0; enquanto (k(s+=k; k+=2;
}
}
Instrução de loop com pós-condição Faz (Figura 4.2):
Faz(corpo do laço) enquanto(doença); sim não condição
Corpo do laço
Figura 4.2

Esquema do algoritmo do operador de loop fazer enquanto
A condição é uma expressão do tipo booleano, o corpo do loop é uma instrução simples ou composta.
Corpo do loop de instrução

Variáveis ​​de um tipo booleano são descritas por um identificador boleano . Eles só podem levar dois valores - Falso (Falso) e Verdadeiro (verdadeiro). Eles também são descritos na seção de declaração de variáveis. Var<имя>: Boleano;

Expressões booleanas podem incluir:

n booleanos,

n operações de relação (<- меньше, >- mais,<=- меньше или равно, >=- maior ou igual,<>- não igual, = - igual).

n operações lógicas E, Ou, Não

n dif. ações e funções


O Turbo Pascal possui operações lógicas que podem ser aplicadas a variáveis ​​do tipo booleano. Estas não são operações e, ou e xor.

Operação não(não) tem um operando e forma sua negação lógica. O resultado da operação not é False se o operando for true e True se o operando for false. Então, não Verdadeiro Falso (não verdadeiro é uma mentira) não Falso Verdadeiro (não falso é verdade).

Resultado da operação e(i) é verdadeiro somente se ambos os seus operandos forem verdadeiros, e falso em todos os outros casos (multiplicação booleana).

Resultado da operação ou(ou) é verdadeiro se qualquer um de seus operandos for verdadeiro, e falso somente se ambos os operandos forem falsos (adição lógica).

As operações lógicas, relacionais e aritméticas geralmente ocorrem na mesma expressão. Nesse caso, as relações à esquerda e à direita do sinal da operação lógica devem ser colocadas entre colchetes, pois as operações lógicas têm prioridade mais alta. Em geral, adota-se a seguinte prioridade de operações:

2. e, *, /, div, mod

3. ou, +, -

4. operações de relação (<- меньше, >- mais,<=- меньше или равно, >=- maior ou igual,<>- não igual, = - igual).

Além disso, a ordem das operações pode ser alterada por parênteses. Por exemplo, em uma expressão lógica, organizamos a ordem das ações:

AorBandnot(AorB)


O operador or entre parênteses é executado primeiro, seguido pelos operadores not e or. Se substituirmos os valores True e False em vez das variáveis ​​A e B, então, usando o procedimento já considerado, obtemos o valor de toda a expressão igual a True.

Exercício 5: . Escreva em um caderno e calcule os valores das expressões

com a=10, b=20, c=verdadeiro, d=falso: a)(a>5) e (b>5) e (a<20) and (b<30);

b) não (um<15) or not (b<30);

c) c ou d e (b=20).

Atenção ! Em Pascal, não há como inserir dados booleanos usando a instrução read. No entanto, a saída dos valores das variáveis ​​do tipo booleano é fornecida usando o operador de gravação. por exemplo, após executar o operador write (5>2), True será exibido na tela.

Perguntas e tarefas domésticas:

1. Como uma variável booleana é descrita e quais valores ela pode assumir?

2. O que pode ser incluído em expressões lógicas. Dê exemplos de expressões lógicas simples.

3. Conte-nos sobre operações lógicas em Pascal. Dê exemplos de expressões lógicas compostas.

4. Qual é a prioridade das diferentes operações em Pascal. Dê um exemplo.


Tarefas:

№19.

A. o inteiro k é divisível por 7;

C. Pelo menos um dos inteiros x, y é par;

G. x=max(x, y, z), ou seja, x é o maior dos três números x, y, z;

D. (não use não operação)

E. pelo menos uma das variáveis ​​lógicas aeb é True;

G. As variáveis ​​booleanas aeb são ambas verdadeiras.

№20. Especifique a ordem em que as operações são executadas ao avaliar expressões:

a) a e b ou não c e d; b) (x>=0) ou não c e d.

№21. Avalie as seguintes expressões com a=True, b=False:

a) a ou b e não a; b)(a ou b) e não a; dentro) não a e b; G) não (a e b)

№22. Faça um programa: Nos exames de admissão, o candidato passou em física, ciência da computação, redação. Um candidato entrará se obtiver 5 em ciência da computação e obtiver pelo menos 13 pontos em três exames.É verdade que ele entrou (imprima Verdadeiro / Falso)?

§ 8. Resolução de problemas no tópico “Programas lineares. quantidades booleanas."

Ex. 7 . Calcule os valores da expressão:

a) quadrado(x)+quadrado(y)<=4 при x=0.3, y=-1.6;

b) k mod 7 = k div5-1 em k=15;

c) ímpar(trunc(10*p)) em p=0,182;

d) não ímpar(n) para n=0;

e) t e (p mod 3=0) em t=verdadeiro, p=101010;

e) (x*y<>0) e (y>x) com x=2, y=1;

g) (x*y<>0) ou (y>x) quando x=2, y=1;

h) a ou (não b) com a=Falso, b=Verdadeiro;

Ex. oito. Escreva uma expressão em Pascal que seja verdadeira se a condição especificada for atendida e falsa caso contrário:

a) x pertence ao segmento;

b) x está fora do segmento;

c) * x pertence ao segmento ou [-1, 1];

d) * x está fora dos segmentos e [-1, 1];

e) cada um dos números x, y, z é positivo;

g) nenhum dos números x, y, z é positivo;

h) apenas um dos números x, y, z é positivo;

i) a variável booleana a tem o valor True, a variável booleana b tem o valor False;


j) * um ano com um número de série y é um ano bissexto (um ano é um ano bissexto se seu número for múltiplo de 4, mas dos múltiplos de 100, apenas múltiplos de 400 são anos bissextos, por exemplo, 1700, 1800 e 1900 são anos não bissextos, 2000 é um ano bissexto).

Ex. nove . Desenhe no plano (x, y) uma área na qual e somente na qual a expressão especificada é verdadeira:

a)* (y>=x) e (y+x>=0) e (y<=1);

b) (quadrado(x)+quadrado(y)<1) or (y>0) e (abs(x)<=1);

c) (trunc(y)=0 e (round(x)=0);

d)* (abs(x)<=1)>(abs(y)>=1);

e) (quadrado(x)+quadrado(y)<=4)=(y<=x).

Ex. dez ..O livro custa X rublos. O comprador tem notas em denominações de 50, 10, 5, 1 rublos. Quantas e quais notas você precisa levar para pagar o livro com o número mínimo de notas?