OpenLLM-France/wikimedia huggingface dataset:
# Prolog/Predicados embutidos

Esta é uma lista dos predicados embutidos na maioria das versões de Prolog.

## Termo de unificação
### =/2

    Unificação Prolog

### (\=)/2

    Sem unificação Prolog

## Teste de tipo
### var/1

    Verdadeiro se o termo atual for uma variável.

### atom/1

    Verdadeiro se o termo for ligado a um átomo.

### integer/1

    Verdadeiro se o termo está ligado a um número inteiro.

### float/1

    Verdadeiro se o termo está ligado a um número de ponto flutuante.

### atomic/1

    Verdadeiro se o termo é ligado a um átomo, inteiro ou número de ponto flutuante.

### compound/1

    Verdadeiro se o termo é ligado a um termo composto.

### nonvar/1

    Verdadeiro se o termo não for uma variável.

### number/1

    Verdadeiro se o termo é ligado a um número inteiro ou ponto flutuante.

## Comparação de Termos
### (@=<)/2

    menor ou igual a

### (==)/2

    igual a

### (\==)/2

    Diferente

### (@<)/2

    Menor que

### (@>)/2

    Maior que

### (@>=)/2

    maior ou igual a

## Comparação aritmética
### '=='/2

    Arithmetic equal

### '=\='/2

    Arithmetic not equal

### '<'/2

    Arithmetic less than

### '=<'/2

    Arithmetic less than or equal to

### '>'/2

    Arithmetic greater than

### '>='/2

    Arithmetic greater than or equal to

## Input and output
### Stream selection and control
#### open/4, open/3

    Opening a stream

#### close/1, close/2

    Closing a stream

#### set_stream_position/2
### Character input-output
#### nl/0, nl/1
### Reading from binary streams
#### put_byte/2, put_byte/1
### Term input and output
#### read/1, read/2
### Writing terms
#### write_canonical/1, write_canonical/2
## Operators
### current_op/3
## Character conversion
### current_char_conversion/2
## Logic and control
### (\+)/1

    Not provable

### repeat/0
## Atom processing
### number_codes/2
## Implementation defined hooks
### halt/0, halt/1
## Functors
### Evaluable functors
#### (+)/2

    Addition

#### (-)/2

    Subtraction

#### (*)/2

    Multiplication

#### (//)/2

    Integer division

#### (/)/2

    Division

#### (rem)/2

    Remainder

#### (mod)/2

    Modulus

#### (-)/1

    Negation

#### (abs)/1

    Absolute value

#### (sign)/1

    Sign

#### (float_integer_part)/1

    Integer part

#### (float_fractional_part)/1

    Fractional part

#### (float)/1

    Float coercion

#### (floor)/1

    Floor

#### (truncate)/1

    Truncate

#### (round)/1

    Round

#### (ceiling)/1

    Ceiling

### Other arithmetic and bitwise functors
#### (**)/2

    Power

#### sin/1

    Sine

#### cos/1

    Cosine

#### atan/1

    Arc tangent

#### exp/1

    Exponentiation

#### log/1

    Log

#### sqrt/1

    Square root

#### (>>)/2

    Bitwise right shift

#### (<<)/2

    Bitwise left shift

#### (/\)/2

    Bitwise and

#### (\/)/2

    Bitwise or

#### (\)/1

    Bitwise complement
# Prolog/Programação com GUI

É possível escrever programas em Prolog que aproveitam os recursos da interface gráfica do usuário (GUI).
Com o SWI-Prolog, vem a biblioteca gráfica XPCE.
O tradicional programa Hello, World fica assim:
Um programa um pouco mais complexo, que pede um nome e associa este nome ao argumento do predicado:

## Ver também

* Programação em GUI - conceitos

## Referências

* ↑ XPCE, no site do swi-prolog
* ↑ Adaptado de http://blog.mestan.fr/2008/06/22/writing-user-interfaces-in-prolog-with-xpce/
# Prosumers/Introdução

    “No man is an island”
    – John Donne
Analisar um evento enquanto o mesmo está acontecendo é uma tarefa um tanto complicada. Pode-se tentar entender os fatores que culminaram no acontecimento e pode-se também tentar prever mudanças futuras. O objetivo deste texto é apresentar os fatos e dados disponíveis e criar uma linha de acontecimentos que culminaram no evento em questão que ainda está apenas começando.
Tendo como ponto de partida a necessidade humana de se comunicar, chegamos a um ponto onde o que se comunica e para quem se comunica, é a chave do sucesso.
De acordo com Juan Bordenave, a comunicação foi um dos primeiros artifícios inventados pelo homem para se viver em comunidade, não só para se expressar, mas para entender o outro, para explicar o mundo, e por em palavras, ditas ou escritas, tudo aquilo que não se pode compreender.
Quando os governos e corporações interferem nos canais de comunicação, eles abalam profundamente as bases da sociedade, seja através de guerras, censura, ou manipulação dos meios de comunicação.
Mas com o surgimento de uma nova tecnologia de comunicação, a Internet, um turbilhão de vozes se reuniu em um só lugar, e de uma forma, até certo ponto inesperada desestabilizou aqueles que possuíram o poder sobre as massas durante tantos séculos.
A Internet possibilitou a troca de informação entre pessoas de diversas partes do mundo em apenas alguns segundos, protestos são filmados com aparelhos eletrônicos, ações ditatoriais são expostas ao mundo, micro acontecimentos tornam-se macro, e tudo é transmitido através da rede.
Os detentores do poder se utilizam de vários artifícios para tentar parar essas inúmeras ondas de informação, congressos tentam aprovar leis que expõem informações dos usuários da web, o acesso a certos sites é restrito, fundadores de sites de compartilhamento de dados são presos. Mas cada vez mais o número de pessoas conectadas aumenta, e fortalece o poder das massas.
Novas formas de consumir são propostas e novas formas de se produzir são desenvolvidas. Os consumidores, antes controlados pelo mercado, começam a ter mais autonomia sobre tudo o que vêem, lêem e compram.
Pessoas “comuns” tornam-se formadoras de opinião e um novo grupo de consumidores-produtores emerge entre tantas mudanças, os prosumers.
# Prolog/Retrocesso
## Retrocesso ou Backtracking

Retrocesso (em inglês Backtracking) é um procedimento dentro da linguagem Prolog. Uma busca inicial em um programa nesta linguagem segue o padrão Busca em profundidade (depth-first search), ou seja, a árvore é percorrida sistematicamente de cima para baixo e da esquerda para direita. Quando essa pesquisa falha, ou é encontrado um nó terminal da árvore, entra em funcionamento o mecanismo de backtracking. Esse procedimento faz com que o sistema retorne pelo mesmo caminho percorrido com a finalidade de encontrar soluções alternativas.
Exemplo:
Considerando uma base de dados família, fazemos a seguinte consulta:
O compilador tenta satisfazer o primeiro objetivo. Quando conseguir, tenta satisfazer o segundo. Caso não consiga, ele retorna ao ponto onde encontrou a solução para o primeiro objetivo (backtracking).
# Prosumers
## O Saber Coletivo

Resumo As mudanças causadas pelos avanços tecnológicos, na economia e nas políticas de tráfego de informação, estão fazendo com que a relação que existia entre consumidor e produtor desapareça, dando lugar a uma nova forma de economia, a economia social colaborativa. A informação tornou-se moeda de troca, e um novo grupo de consumidores-produtores assume uma importante posição no mercado de consumo. Utilizando-se da Internet, que fornece a conexão para o compartilhamento de informação, os prosumers alimentam o ciberespaço com conhecimento gratuito de forma a colaborar e fazer parte do processo de produção.
Palavras-chave Geração Y; internet; ciberespaço; cibercultura; produção; consumo; design; mídias digitais; compartilhamento de informações.
Abstract The changes caused by technological advances in economy and policies for traffic information, are disappearing with the relationship that existed between consumer and producer, giving way to a new form of economy, a social collaborative economy. The information has become a bargaining chip, and a new group of consumer-producers assume an important position in the consumer market. Using the Internet, which provides the connection to share the information, prosumers feed the cyberspace with free knowledge in order to collaborate and be part of the production process.
Keywords Generation Y; internet; cyberspace; cyberculture; production; consumption; design; digital media; information sharing.

## Índice

Este livro tem uma coleção para a criação de versões nos formatos HTML, PDF, ODT, ZIM, ePUB ou para encomendas para a PediaPress.
* Capa
* Introdução
* Pensadores
* O homem e a cultura digital
* O cérebro global
* A colaboração coletiva
* O Prosumer
* O Design(er) no meio virtual
* Conclusão: O Saber Coletivo
* Referências bibliográficas
# Protocolos Colaborativos
## Introdução

Este livro se destina à publicação de protocolos modernos e pequenas recomendações feitos colaborativamente, fruto de uma iniciativa que busca disseminar a utilização da prática em saúde baseada em evidências e a metodologia GRADE.
Após vários cursos de disseminação da prática em saúde baseada em evidências, alguns grupos com áreas de atuação específicas se uniram para criar recomendações e publicá-las em um único lugar para que aos poucos possam ir amadurecendo com novas colaborações e se tornarem protocolos de linhas de cuidado.
Se você gostaria de contribuir com um tópico, clique aqui e assista ao vídeo introdutório e acompanhe os tutoriais de criação das recomendações.

## Tutoriais

* Introdução e visão geral
* Definindo uma matriz de tópicos, escolhendo sumários e conceitos básicos
* Escolhendo os desfechos relevantes e as intervenções de interesse
* Extraindo informações relevantes das recomendações - evidências pré-analisadas
* Quando as evidências pré-analisadas não são suficientes - extraindo informações da melhor síntese disponível
* Efeitos, confiança e outros valores para as recomendações
* Implementando as recomendações propostas

## Autoria
#### Grupo Mais Evidências e todos os colaboradores

* Grupo Mais Evidências
* Associação de Apoio à Residência Médica de Minas Gerais (AREMG)
* Hospital das Clínicas da UFMG
* Nucleo de Avaliação de Tecnologias em Saúde do HC-UFMG
* Gerência de Ensino e Pesquisa
* Fundação Hospitalar do Estado de Minas Gerais (FHEMIG)
* Santa Casa de Belo Horizonte
* Hospital São Francisco de Assis
* Hospital Metropolitano Odilon Behrens
* Hospital IPSEMG
* Unimed-BH
* Hospital Felício Rocho
# Python/Conceitos básicos/Análise léxica

No capítulo 2 do Manual de Referência da Linguagem Python diz que a análise léxica é uma análise do interpretador em sí, os programas são lidos por um parser, que divide o código em tokens.
Todo programa é dividido em linhas lógicas que são separadas pelo token NEWLINE ou NOVA LINHA, as linhas físicas são trechos de código divididos pelo caracter ENTER. Linhas lógicas não podem ultrapassar linhas físicas com exceção de junção de linhas, por exemplo:
ou
Para a delimitação de blocos de códigos os delimitadores são colocados em uma pilha e diferenciados por INDENT e DEDENT. Iniciando a pilha com valor 0 (zero) e colocando valores maiores que os anteriores na pilha. Para cada começo de linha, o nível de indentação é comparado com o valor do topo da pilha, se o número da linha for igual ao topo da pilha, a pilha não é alterada, se o valor for maior a pilha recebe o nível de indentação da linha e o nome INDENT (empilhamento) se o nível de indentação for menor, então é desempilhado até chegar a um nível de indentação recebendo o nome DEDENT (desempilhamento) e se não encontrar nenhum valor é gerado um erro de indentação.
Abaixo um exemplo de permutação, retirado do capítulo 2.1 sobre Estrutura de linhas na Análise léxica do Manual de Referência da linguagem (Language Reference Manual):
# Python/Conceitos básicos/Encapsulamento

Encapsulamento é a proteção dos atributos ou métodos de uma classe, em Python existem somente o public e o private e eles são definidos no próprio nome do atributo ou método.
Atributos ou métodos iniciados por no máximo dois sublinhados e terminados por um sublinhado são privados e todas as outras formas são públicas.

## Ver também

* Programação orientada a objetos/Encapsulamento - conceito
# Python/Conceitos básicos/Erros e exceções

Erros são humanos e sempre ocorrem ao escrevermos programas, sejam simples ou complexos, o modo de como as linguagens de programação nos retornam estes erros é que há mudança. Em Python, podem serem tratados muito elegantemente.
O erro do Python é chamado de Traceback que é uma pilha criada quando ocorre a exceção. Guido van Rossum escreveu na documentação oficial que “quando ocorre uma exceção, o interpretador procura por um bloco de tratamento de exceções e então começa a desempilhar cada elemento da pilha de execução. Então desta forma saberemos quantos níveis depois do tratador de erros que houve a exceção”. O que condiz com a explicação do capítulo sobre Análise léxica.
Abaixo alguns erros e seus tracebacks:
Há a possibilidade de:

## Erros são bem vindos!

Um fato importante sobre o estilo da linguagem Python é que o programa deve, preferencialmente, cometer erros e tratá-los, ao invés de checar se a operação dará erro.
Assim, se temos um vetor v de tamanho desconhecido, porém que, normalmente, terá mais de 10 elementos, e queremos modificar (se existir) seu décimo elemento, é possível fazê-lo de duas formas:
ou:
Considera-se que a segunda forma (EAFP, ou it's easier to ask for forgiveness than permission, frase atribuída a Grace Hopper) é melhor do que a primeira (LBYL, ou look before you leap).

## Referências

* ↑ Glossary, site docs.python.org
# Python/Bibliotecas padrão

Uma lista dos módulos da Biblioteca Padrão pode ser encontrada em http://www.python.org/doc/ .
Os seguintes itens estão entre os mais importantes:
* time;
* sys;
* os;
* math;
* random;
* pickle;
* urllib;
* re;
* cgi;
* socket.
Com ela podemos implementar por exemplo um contador, no caso mostrado abaixo o terminal dará uma pausa de 1 segundo entre cada impressão do intervalo "range(1, 6)".
Com ela podemos fazer um exemplo que geree números inteiros aleatórios de 0 a 10.
# Python/Conceitos básicos/Compilador de Byte

Python é uma linguagem de muito alto-nível como já dito, mas ela também pode compilar seus programas para que a próxima vez que o executar não precise compilar novamente o programa, ganhando assim velocidade na execução.
Utilizando o interpretador interativo não é necessário a criação do arquivo de Python compilado, os comandos são executados interativamente. Mas ao chamarmos um programa ou um módulo, o interpretador irá verificar a análise léxica, sintática e irá compilar o código de alto-nível e executá-lo, esta é a máquina virtual Python.
O código de byte da linguagem também é de alto-nível, ou seja, é mais legível aos seres humanos que o código de byte do C, por exemplo. Para desassemblar um código de byte é utilizado o módulo dis da biblioteca padrão da linguagem.
Normalmente o Python trabalha com dois grupos de arquivos:
* Os módulos do núcleo da linguagem, sua biblioteca padrão e os módulos independentes, criados pelo usuário.
* No núcleo do interpretador existe o analisador léxico, o analisador sintático que utiliza Estruturas de Objetos (tempo de execução), o Compilador que aloca memória (tempo de execução) e depois do Avaliador de código que modifica o estado atual do programa (tempo de execução), mostrando resultado para o usuário.
# Python/Bibliotecas externas
## Urllib

Um exemplo de uso da biblioteca urllib com leitor de RSS feedparser para o uso na internet. O exemplo abaixo faz o download do módulo feedparser depois faz a leitura do RSS da Últimas Notícias do site Terra.

## Numpy

Numpy é uma biblioteca matemática de código aberto para Python, com suporte a matrizes e vetores grandes, além de um grande número de funções matemáticas. O site oficial é http://numpy.scipy.org/ . É importante lembrar que Python possui uma biblioteca matemática padrão, chamada Math. Essa biblioteca precisa ser instalada antes de ser usada, não vem por padrão.
O exemplo abaixo mostra o uso da biblioteca Numpy na criação de arrays com valores aleatórios, e a manipulação desses valores.

## Matplotlib

Matplotlib é uma biblioteca utilizada para a criação de gráficos que ajudem na visualização de dados. A documentação se encontra no site oficial https://matplotlib.org/.
Exemplo simples:

### Instalação

Segundo a documentação oficial, é necessário instalar o pacote via PIP(gerenciamento de pacotes do Python).
python -m pip install -U pip
python -m pip install -U matplotlib

## PIL/Pillow

PIL (Python Imaging Library) é uma biblioteca voltada para a manipulação de imagens com suporte para os formatos PNG, TIFF, BMP, EPS e GIF. Posteriormente, PIL, teve sua sequência pela biblioteca Pillow, que tem como objetivo principal dar suporte a Python 3 e facilitar a instalação desta.
O exemplo abaixo mostra o uso da biblioteca PIL para rotacionar uma imagem:

### Links úteis:

Mais sobre PIL
Primeiros Passos com PIL
* ↑ https://matplotlib.org/users/installing.html
# Python/Conceitos básicos/Comentários e docstrings

Há em todas as linguagens de programação a necessidade de documentar uma linha ou um bloco de código para documentar o que serve aquele bloco de código. Em Python comentários são iniciados com #, tudo que estiver depois do # será ignorado pelo interpretador, portanto considerado como comentários, o fechamento do comentário acaba quando acabar a linha do interpretador.
As docstrings são mais comumente introduzidas no início de uma classe, de uma função ou no início do programa para definir o escopo do software ou o escopo de métodos, seu símbolo padrão são as três aspas duplas ou simples.
Para quem está lendo o código do programa não existe muita diferença (exceto estética) entre comentários e docstrings, mas para o usuário a diferença é marcante, pois uma docstring não ´é ignorada pelo interpretador, mas passa a fazer parte do objeto sobre o qual ela foi definida, podendo ser acessada através do help.
Por exemplo, entre com as linhas abaixo. Note que o arquivo não contém nenhum caracter fora do conjunto ASCII padrão (usar acentos pode dar problema no Windows):
Após carregar as linhas, vamos fazer alguns testes:
Note que, se você escreveu as linhas anteriores em um programa, por exemplo, fatorial.py, e incluiu o programa usando "import fatorial", então é preciso chamar funções através de fatorial.fat1(3) e fatorial.fat2(3), respectivamente.
Para ver como funciona a docstring, entre agora com:
Note que não existe documentação para fat1, mas fat2 tem a documentação escrita na docstring.
# Python

Etapas de desenvolvimento do texto (5 ou 9 etapas) :
| Início: | Básico: | Criação: | Desenvolvimento: | Maturação: | Revisão: | Desenvolvido: | Finalização: | Abrangente: |

## Índice

Este livro tem uma coleção para a criação de versões nos formatos HTML, PDF, ODT, ZIM, ePUB ou para encomendas para a PediaPress.
* Introdução
* Instalação
* Conceitos básicos
** Interpretador interativo
** Análise léxica
** Indentação
** Compilador de Byte
** Variáveis e identificadores
** Comentários e docstrings
** Tipos e operadores
** Estrutura dos blocos
** Estruturas de dados
** Funções
** Módulos
** Erros e exceções
** Classes
** Encapsulamento
** Herança e polimorfismo
* Python Avançado
* Bibliotecas padrão
* Bibliotecas externas
* Programação com GUI
** Tkinter
* Python Wikipedia Bot
* Referências
# Python/Conceitos básicos/Classes

Criamos o objeto classe com “class nome:”, ela é composta de atributos que representam este objeto. Quando a classe é atribuída a outro objeto, este objeto é chamado de instância da classe. Os métodos, que também são definidos para programação orientada a objetos, são funções dentro de uma classe. Todos os métodos ou atributos da classe são obrigados a passar por parâmetro ou argumento a palavra self antes de tudo, isso é convencionado pelo próprio desenvolvedor, por padrão se chama self, o self foi convencionado nos parâmetros dos métodos e atributos devido a filosofia da linguagem de estar tudo explícito, especificar de onde o valor vem. Assim os métodos são chamados objeto.metodo (argumento1, argumento2, ...) são definidos iguais a uma função.
Os atributos da classe (ou variável da classe) podem ser instanciados em qualquer lugar da classe, e os atributos de instância (ou variável de instância) devem ser declarados dentro dos métodos utilizando o parâmetro self.
Brincando com instância de classe:

## Ver também

* Programação orientada a objetos/Classes e Objetos - conceitos
# Matemática elementar/Trigonometria
## Trigonometria

Trigonometria (do grego trigonon = três ângulos e metro = medida) é uma parte da Matemática que estuda as relações entre triângulos, ângulos e funções circulares como o seno e cosseno.
* Trigonometria do triângulo retângulo
* Arcos e ângulos - medida de um arco (radianos), relação entre arcos e ângulos.
* Razões trigonométricas na circunferência
* Funções trigonométricas
* Fórmulas de Adição, subtração, duplicação e bissecção de arcos
* Transformações de soma de funções trigonométricas em produtos
* Identidades trigonométricas básicas
* Equações e inequações envolvendo funções trigonométricas
* Lei dos senos e dos cossenos
* Resolução de triângulos

## Ver também

Exercícios de trigonometria
# Matemática elementar/Trigonometria/Adição, subtração, duplicação e bissecção de arcos/Exercícios

    Ver módulo principal: Matemática elementar/Trigonometria/Adição, subtração, duplicação e bissecção de arcos
* Usando as fórmulas de seno, cosseno e tangente da soma e da diferença de arcos, e o conhecimento dos valores destas funções para os ângulos de 30$^o$, 45$^o$ e 60$^o$, calcule:
** sen 75$^o$
** cos 15$^o$
** tan 105$^o$
* Seja a o ângulo do primeiro quadrante cuja tangente vale 1/2 (ou seja, tan a = 1/2). Seja b o ângulo do primeiro quadrante cuja tangente vale 1/3 (ou seja, tan b = 1/3). Determine a + b (sugestão: tangente da soma).
* Seja x um ângulo tal que cos x = -1/4. Determine cos (2 x). Na solução, discuta o fato de haver dois valores possíveis para sen x.
* Seja x o ângulo do primeiro quadrante tal que sen (2 x) = 4/5. Determine sen x.
* Seja x o ângulo do primeiro quadrante tal que cos (2 x) = 1/3. Determine cos x.
# Matemática elementar/Sistemas de equações algébricas/Exercícios

    Ver módulo principal: Matemática elementar/Sistemas de equações algébricas
# Matemática elementar/Teorema de Tales/Exercícios

Nos exercícios de 1 a 3, utilize Teorema de Tales para determinar o que se pede a respeito da situação ilustrada pela imagem a seguir:

## Exercício 1

Considerando a figura ao lado, determine o comprimento do segmento ${\overline {AD}}$, supondo que ${\overline {DB}}=5cm$, ${\overline {EC}}=10cm$ e ${\overline {AE}}=8cm.$

## Exercício 2

Determine ${\overline {AD}}$ e ${\overline {DB}}$, supondo que na figura ao lado ${\overline {AB}}=26cm,$ ${\overline {AE}}=8cm$ e ${\overline {EC}}=5cm.$

## Exercício 3

Determine AD e DB, supondo que ${\overline {AB}}=27cm,$ ${\overline {AE}}=10cm$ e ${\overline {AC}}=18cm.$
Do exercício 4 até o exercício 7, utilize Teorema de Tales para determinar o que se pede a respeito da situação ilustrada pela seguinte imagem:

## Exercício 4

Determine ${\overline {AB}}$, supondo que ${\overline {BC}}=10cm,$ ${\overline {DE}}=18cm$ e ${\overline {EF}}=20cm.$

## Exercício 5

Determine ${\overline {AB}}$ e ${\overline {BC}},$ supondo que ${\overline {AC}}=30cm,$ ${\overline {DE}}=8cm$ e ${\overline {EF}}=7cm.$

## Exercício 6

Determine a medida de ${\overline {AB}},$ supondo que ${\overline {AC}}=20cm,$ ${\overline {DF}}=30cm$ e que ${\overline {EF}}$ é $4cm$ maior que ${\overline {BC}}$.

## Exercício 7

Determine ${\overline {AC}},$ supondo que${\overline {DE}}=12cm,$ ${\overline {EF}}=8cm$ e que ${\overline {AB}}$ é $3cm$ maior que ${\overline {BC}}.$

## Exercício 8

Considere um triângulo $\vartriangle ABC$ tal que ${\overline {AB}}=5$, ${\overline {BC}}=6$ e ${\overline {CA}}=7$. Desenhe sobre o segmento ${\overline {BC}}$ um ponto $M$ tal que ${\overline {BM}}=4$. A reta paralela a ${\overline {AC}}$ que passa por $M$ encontra ${\overline {BA}}$ no ponto $N$. Calcule ${\overline {BN}},$ ${\overline {AN}}$ e ${\overline {MN}}$.

## Exercício 9

Considere um triângulo $\vartriangle TIC$ em que ${\overline {TI}}=5,$ ${\overline {IC}}=8$ e ${\overline {CT}}=4$. Desenhe na semi-reta ${\overrightarrow {TI}}$ (ou seja, a semi-reta que começa em $T$ e passa por $I$) um ponto $O$ tal que ${\overline {TO}}=7$. A reta paralela a ${\overline {IC}}$ que passa por $O$ encontra a reta $CT$ no ponto $S$. Calcule ${\overline {TS}},$ ${\overline {CS}}$ e ${\overline {OS}}.$