Buscar

3 - Logica Aritmética

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 64 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 64 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 64 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
 
 
 
 
 
 
 
 
 
 
INFORMÁTICA 
LÓGICA ARITMÉTICA-1ª SÉRIE 
 
1 
 
LÓGICA E ARITMÉTICA 
 
INTRODUÇÃO 
 
Aritmética 
Palavra de origem grega, significando a aptidão de contar, tendo como 
propriedades fundamentais a Adição e Subtração. 
É o estudo dos números, das relações entre eles e das regras para combinações de 
dois ou mais números. 
Desenvolveu-se sob as pressões das necessidades práticas do comércio, das 
finanças e da astronomia. 
Este termo é usado não só para designar relações numéricas simples, mas também 
teorias mais complexas e abstratas. 
 
ALGARISMOS E NÚMEROS 
 
Algarismos são símbolos utilizados na composição dos números. Os algarismos 
utilizados são: 0,1, 2, 3, 4, 5, 6, 7, 8 e 9. 
Os algarismos têm seu valor próprio, quando estão escritos isoladamente. Por 
exemplo o algarismos ―7‖ tem o seu valor, sendo maior do que o algarismo ―3‖. 
Porém se estes mesmos algarismos estiverem sendo utilizados na composição de 
um número, o valor significativo de cada um será determinado pela posição que o mesmo 
ocupara na composição do número. (Lógica posicional) 
Assim, apesar do algarismo ―3‖ ter o valor próprio menor do que o algarismo ―7‖, no 
número 3753, ele apresentará dois valores distintos, sendo que o ―3‖ que ocupa a posição 
de milhar do número terá um valor significativo maior do que o ―7‖ que ocupa a posição de 
centena do número. 
Assim o número 3753, pode ser decomposto da seguinte maneira: 
 
3 x 103 + 7 x 102 + 5 x 101 + 3 x 100 = 3 x 1000 + 7 x 100 + 5 x 10 + 3 x 1 = 3753 
 
 3 x 103 = 3 x 1000 = 3000 
 7 x 102 = 7 x 100 = 700 
 5 x 101 = 3 x 10 = 50 
 3 x 100 = 3 x 1 = 3 
 _____________________ 
 3753 
 
 
 
 
2 
 
OPERADORES ARITMÉTICOS 
 
É comum necessitarmos realizar cálculos matemáticos com as informações que 
estamos manipulando. Para isso, é necessário sabermos qual a representação dos 
símbolos de operações matemáticas. Vejamos: 
Usaremos o (*) asterístico como operador de multiplicação e a (/) barra como 
operador de divisão, símbolos normalmente utilizados em programação. 
 
Operador Operação Exemplo 
+ Adição 10 + 15 
- Subtração 20 – 10 
* Multiplicação 3 * 5 
/ Divisão (o resultado será um número real) 5 / 2 = 2,5 
\ ou DIV Divisão (o resultado será um inteiro) 
10 div 2 = 5 
7 div 2 = 3 
% ou MOD Resto de uma divisão 7 mod 2 = 1 
^ ou exp (a, b) Exponenciação 5 ^ 2 ou exp(5, 2) 
 
Da mesma maneira que estudamos na escola, algumas operações têm prioridade 
sobre as outras. A potenciação tem a maior prioridade entre todos os operadores. 
Multiplicação e divisão devem ser operadas antes da adição e subtração. Assim, na 
expressão 3 + 2 * 5, primeiro operamos o 2 * 5, e somamos o resultado com 3 para 
obtermos 13. 
Para mudar a ordem das operações, usamos parênteses, o que estiver entre 
parênteses será operado primeiro. Por exemplo: (3 + 2) * 5, primeiro operamos o 3 + 2, 
porque está entre parênteses, e depois o resultado desta operação será multiplicado com 
5 para obter 25. 
Quando na expressão só houverem operações com a mesma prioridade, a 
avaliação é feita normalmente da esquerda para a direita. 
 
 
 
 
 
3 
 
Exemplo: 
 
( 3 + 5 ) * ( 4 * ( 10 -7 ) ) / 2 Opera-se o que estiver nos 
parênteses mais internos 
( 3 + 5 ) * ( 4 * 3 ) / 2 Operam-se os dois parênteses 
que restaram 
8 * 12 / 2 Só há * e / -, então opera-se da 
esquerda para a direita 
96 / 2 
 
 
48 
 
Resultado final 
 
 
OPERADORES RELACIONAIS 
Além de operações matemáticas, é freqüente nossa necessidade em comparar 
informações. Por exemplo: Se média for maior ou igual a 7. Para isso, utilizamos 
operadores relacionais. 
 
Operador Relação 
== Igualdade 
 =/= ou  ou <> ou != Diferente 
> Maior que 
 ou >= Maior ou igual que 
< Menor que 
 ou <= Menor ou igual que 
 
Exemplo: 
 
Nome 
S
ím
b
o
lo
 
 
Exemplos 
 
Resultado 
Igual a == 3 = 3 
2 + 2 = 5 
Verdadeiro 
Falso 
Diferente de 
 
<> ou != 
 
140 <> 410 
(10+5) <> (30/2) 
Verdadeiro 
Falso 
Maior que 
 
> 
 
0 > -1 
345 > ((3 +1)*100) 
Verdadeiro 
Falso 
Maior ou igual que >= 13 >= 7 + 6 Verdadeiro 
 
4 
 
77 >= 40 * 2 Falso 
Menor que < 3 < 7 
77 < 20 * 2 
Verdadeiro 
 Falso 
Menor ou igual que <= 3 <= 7 - 4 
77 <= 25 * 4 
Verdadeiro 
 Falso 
 
 
OPERADORES LÓGICOS 
É freqüente precisarmos analisar expressões lógicas, aquelas que só possuem dois 
valores possíveis: Verdadeiro ou Falso. Os operadores usados em expressões lógicas 
são os Operadores Lógicos. Veja: 
 
Operador Relação 
E (And) / && E lógico 
Ou (Or) || Ou lógico 
Não (Not) ! Negação lógica 
 
 
 
E 
RETORNA VERDADEIRO SE AMBAS AS PARTES FOREM 
VERDADEIRAS. 
OU 
BASTA QUE UMA PARTE SEJA VERDADEIRA PARA RETORNAR 
VERDADEIRO. 
NÃO 
INVERTE O ESTADO, DE VERDADEIRO PASSA PARA FALSO E VICE-
VERSA. 
OU-X 
RETORNA VERDADEIRO SE AS PARTES FOREM DIFERENTES E 
FALSO SE FOREM IGUAIS 
 
Tabela Verdade 
Veja a seguinte tabela para entender melhor os operadores lógicos. 
 
A B A e B A ou B NÃO A A ou-X B 
F F F F V F 
F V F V V V 
 
5 
 
V F F V F V 
V V V V V F 
 
EXPRESSÕES LÓGICAS 
As expressões compostas de relações sempre retornam um valor lógico. 
 
Exemplos: 
2+5>4 Verdadeiro 3<>3Falso 
 
De acordo com a necessidade, as expressões podem ser unidas pelos operadores 
lógicos. 
 
Exemplos: 
 
 2+5>4 E 3<>3  Falso 
 
 
 
 
 
 
 
 
 2+5>4 OU 3<>3  Verdadeiro 
 
 
 
 
 
 
 
 
 NÃO(3<>3)  Verdadeiro 
 
 
 
 
 
 
V F 
F 
 E 
V F 
V 
OU 
F 
V 
 NÃO 
 
6 
 
PRIORIDADE DE OPERADORES: 
 
Durante a execução de uma expressão que envolve vários operadores, é 
necessário à existência de prioridades, caso contrário poderemos obter valores que não 
representam o resultado esperado. 
 
A maioria das linguagens de programação utiliza as seguintes prioridades de 
operadores: 
1º - Efetuar operações embutidas em parênteses "mais internos" 
2º - Efetuar Funções 
3º - Efetuar multiplicação e/ou divisão 
4º - Efetuar adição e/ou subtração 
5º - Operadores Relacionais 
6º - Operadores Lógicos 
 
OBS: O programador tem plena liberdade para incluir novas variáveis, operadores 
ou funções para adaptar o algoritmo as suas necessidades, lembrando sempre, de que, 
estes devem ser compatíveis com a linguagem de programação a ser utilizada. 
 
EXERCÍCIO: 
1) Com base no que mencionado acima, responda as perguntas a seguir: 
a) Na expressão A*B-C, qual será a seqüência de execução? 
b) Na expressão (A*B)-C, qual será a seqüência de execução? 
c) Na expressão A*(B-C), qual será a seqüência de execução? 
d) Na expressão (A*(B-C*(D/E))), qual será a seqüência de execução? 
 
 
A lógica para se montar uma expressão é ponto determinante na questão do 
resultado ser ou não verdadeiro, ou seja, de ser o resultado esperado. 
Exemplo: 
 
6 * ( 9 + 3 * 2 ) / ( 2 * 4- 11 ) Operam-se as multiplicações nos 
parênteses 
6 * ( 9 + 6 ) / ( 8 - 11 ) 
 
Operam-se os parênteses 
6 * 15 / -3 Só há * e / - opera-se da esquerda para a 
direita 
90 / -3 Observe o sinal negativo antes do 3... 
-30 
 
Resultado final 
 
 
7 
 
LINEARIZAÇÃO DE EXPRESSÕES 
Para a construção de Algoritmos todas as expressões aritméticas devem ser 
linearizadas, ou seja, colocadas em linhas. 
É importante também ressalvar a mudança dos operadores correspondentes da 
aritmética tradicional para a computacional. 
Exemplo: 
 
 
 
 
 
 
 
 
 
 
 
MODULARIZAÇÃO DE EXPRESSÕES 
 
A modularização é a divisão da expressão em partes, proporcionando maior 
compreensão e definindo prioridades para resolução da mesma. 
Como pode ser observado no exemplo anterior, em expressões computacionais 
usamos somente parênteses “( )” para modularização. 
Na informática podemos ter parênteses dentro de parênteses.Exemplos de prioridades: 
1) (2+2)/2=2 
 2) 2+2/2=3 
3) ((2+2)*(4+4))=32 
4) 2+2*4+4=14 
 
Exercícios: 
1. Usando a lógica posicional, decomponha o número 17535. 
2. De acordo com as prioridades de execução do operadores aritméticos, calcule a 
expressão 45 + 15 * 5 //10? 
3. Os operadores aritméticos, relacionais e lógicos obedecem a uma determinada 
prioridade quando estão presentes na mesma expressão. Qual a ordem de prioridade 
desses operadores? 
 
  





 135
3
2
 
(2/3+(5-3))+1= 
Tradicional 
Computacional 
 
8 
 
4. Linearizar e resolver: 
 A- 47+12x4/2-21 
 2+3x2 
 B – 21+37+21x4-29 
 4+3/5 
 C – 175/5+345/3-28 25/2+3,5+27 
 22/2+4 7 
 
5. Resolva as expressões abaixo: 
 a) 4 + 3 * 5 + 2 – 5 
 b) 10 + 5 * 2 = 30 
 c) V and F or V not V or F 
 d) 25+45/3 < 40 AND 21x2 = 44-4/2 OR NOT F 
 e) 27 = 13+27/3 OR NOT V AND 125/5 <> 25 AND NOT V 
 f) F AND V OR NOT V OR F AND NOT F OR V OR F AND F OR NOT V 
 
 
SISTEMAS DE NUMERAÇÃO 
 
SISTEMA DECIMAL 
Para se compreender a estrutura de qualquer sistema de numeração podemos 
começar por rever o sistema decimal, por ser aquele que usamos diariamente quando 
efetuamos os cálculos mais elementares. 
O sistema decimal (ou sistema de base 10) utiliza 10 símbolos designados por 
algarismos para representar quantidades. São eles o 0, o 1, o 2, o 3, o 4, o 5, o 6, o 7, o 8 
e o 9. 
De um modo geral, podemos dizer que a base de qualquer sistema de numeração é 
dada pelo número de símbolos diferentes que esse sistema utiliza. 
Um número decimal é formado por uma combinação de algarismos. Para 
determinar a quantidade representada por um número decimal é necessário multiplicar 
cada um dos algarismos que o constituem por uma potência de 10 de acordo com a 
posição que cada um dos algarismos ocupa no número, e somar os resultados. 
 
Por exemplo o número decimal 27315 pode ser escrito da seguinte forma: 
20000+7000+300+10+5, 
o que é o mesmo que: 
2*10000+7*1000+3*100+1*10+5, 
que por sua vez equivale a: 
2*104+7*103+3*102+1*101+5*100 
 
Também sabemos que, se o expoente de um número for menor que zero, então 
esse expoente indica as casas decimais desse número. Conseqüentemente concluímos 
 
9 
 
que podemos representar qualquer número decimal, inteiro ou fracionário, em 
desenvolvimento de potências de 10. 
2*104+7*103+3*102+1*101+5*100+3x10-1+2x10-2 = 27315,32 
 
SISTEMA BINÁRIO 
Todo o funcionamento de um computador digital é baseado no cálculo binário. O 
sistema de numeração binário (sistema de base 2) é formado por dois dígitos: o 0 e o 1. 
Os dígitos binários ―0‖ e ―1‖ são habitualmente designados por ―BITs‖. Um número 
binário constituído por 8 bits é designado por ―BYTE‖, um número binário de 16 bits é uma 
―WORD‖, e um de 32 bits, uma ―DOUBLE WORD‖. 
Para contar em decimal, usamos intuitivamente um algoritmo muito simples: 
supondo que temos um contador por cada posição, todos inicializados em 0. Começamos 
a incrementá-los da direita para a esquerda. Quando o contador em qualquer posição 
ultrapassar o valor 9 (valor do símbolo mais elevado no caso do sistema decimal), o 
contador relativo a essa posição juntamente com todos os contadores à direita voltam a 
zero e o contador que ocupa a posição imediatamente à esquerda, é incrementado 1 
unidade. 
Para contar em binário seguimos as mesmas regras, ou seja, obtemos a sequência: 
0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, etc. 
 
SISTEMA HEXADECIMAL 
O sistema binário é muito pouco compacto, são necessários muitos dígitos para 
representar números relativamente pequenos, o que dificulta o trabalho das pessoas que 
programam os computadores. Para solucionar este problema usa-se freqüentemente o 
sistema de numeração hexadecimal, em vez do binário. 
O sistema hexadecimal, como o nome indica, é formado por 16 símbolos diferentes: 
o 0, o 1, o 2, o 3, o 4, o 5, o 6, o 7, o 8, o 9, o A, o B, o C, o D, o E e o F. As letras A, B, C, 
D, E e F correspondem aos valores 10, 11, 12, 13, 14 e 15 respectivamente. 
Como nos sistemas de numeração anteriormente estudados qualquer número do 
sistema hexadecimal pode ser desenvolvido em potências da sua base. Neste caso, a 
base é 16 uma vez que o número de dígitos utilizados são 16. 
 
SISTEMA OCTAL 
Um outro sistema de numeração é o octal. Utiliza os algarismos 0 a 7 na sua 
composição e serve como exemplo para demonstrar que podemos ter qualquer sistema 
de numeração. 
 
 
10 
 
CONVERSÃO DE SISTEMAS DE NUMERAÇÃO 
 
Conversão de um número decimal (base 10) para um número binário (base 2) 
Para converter números decimais em binários existem dois métodos possíveis. O 
primeiro consiste em extrair do número decimal a converter potências na base dois, até o 
resto ser igual a zero. Atribuímos de seguida ao número binário resultante um 1 para cada 
posição binária correspondente a cada potência de dois extraída. 
Outro método possível consiste em dividir o número decimal sucessivamente por 
dois até obter zero. Os restos de cada operação formam o novo número binário, sendo o 
valor do primeiro resto, o dígito menos significativo, e o último, o mais significativo. 
 
Conversão de um número binário (base 2) para um número decimal (base 10) 
Para converter um número binário para o número decimal equivalente basta 
multiplicar cada dígito pela potência de 2 relativa à posição por ele ocupada e somar os 
resultados. Assim por exemplo o número binário 101 equivale ao número 5 no sistema 
decimal. 
 
101 = 1*22 + 0*21 + 1*20 = 1*4 + 0*2 + 1*1 = 4 + 0 + 1 = 5 
 
Conversão da base hexadecimal para a base decimal 
Para converter um número hexadecimal para o número decimal equivalente basta 
multiplicar cada dígito pela potência de 16 relativa à posição por ele ocupada e somar os 
resultados. 
 
Conversão da base decimal para a base hexadecimal 
Para converter números decimais em hexadecimais usa-se um método semelhante 
ao que se utiliza para converter números decimais em binários. O método consiste em 
dividir o número decimal sucessivamente por dezesseis até obter zero. Os restos de cada 
operação formam o novo número 
hexadecimal, sendo o valor do primeiro resto o dígito menos significativo, e o último, 
o mais significativo. 
 
Conversão da base hexadecimal para a base binária 
As conversões da base 16 de e para a base binária são extremamente simples, daí 
ser o sistema hexadecimal o escolhido mais freqüentemente para substituir o sistema 
binário. 
Cada dígito hexadecimal equivale a quatro dígitos binários. Para converter um 
número binário para o sistema hexadecimal agrupam-se os dígitos binários em grupos de 
quatro da direita para a esquerda e substitui-se cada um destes grupos por um dígito 
hexadecimal de valor equivalente. 
 
11 
 
Para converter um número binário para o sistema hexadecimal o método é o 
inverso deste, ou seja, substitui-se cada dígito hexadecimal por um grupo de 4 dígitos 
binários com o valor equivalente. 
 
Exemplo: Converter o número 3547(10) para as bases (2), (8) e (16). 
 
Para a base 2, realizamos divisões sucessivas por dois. 
3547 / 2 = 1773 resta 1 
1773 / 2 = 886 resta 1 
886 / 2= 443 resta 0 
443 / 2 = 221 resta 1 
221 / 2 = 110 resta 1 
110 / 2 = 55 resta 0 
55 / 2 = 27 resta 1 
27 / 2 = 13 resta 1 
13 / 2 = 6 resta 1 
6 / 2 = 3 resta 0 
3 / 2 = 1 resta 1 
1 / 2 = 0 resta 1 
Obs: O último quociente não pode ser dividido por 2. 
 
O número 3547 representado na base dois é igual aos valores obtidos nos restos 
das divisões em ordem inversa O algarismo mais significativo é o último resto (valor do 
quociente) e o menos significativo é o primeiro resto. Então o número na base dois é 
110111011011. 
 
Para a base 8 realizamos divisões sucessivas por oito. 
3547 / 8 = 443 resta 3 
443 /8 = 55 resta 3 
55 / 8 = 6 resta 7 
6 / 8 = 0 resta 6 
Obs: O último quociente não pode ser dividido por 8. 
 
O número 3547 representado na base oito é igual aos valores obtidos nos restos 
das divisões em ordem inversa. O algarismo mais significativo é o último resto (valor do 
quociente) e o menos significativo é o primeiro resto. Então o número na base oito é 
6733. 
 
 
 
 
 
12 
 
Para a base 16 realizamos divisões sucessivas por dezesseis; 
3547 / 16 = 221 resta 11 
221 / 19 = 13 resta 13 
13 / 16 = 0 resta 13 
Obs: O último quociente não pode ser dividido por 16 
 
O número 3547 representado na base dezesseis é igual aos valores obtidos nos 
restos das divisões em ordem inversa. O algarismo mais significativo é o ultimo resto 
(valor do quociente) e o menos significativo é o primeiro resto. Então o número na base 
dezesseis é 13 13 11 que representado pelas letras fica DDB. 
. 
Convertendo os números encontrados teremos novamente o número 3547 em 
decimal. 
 
Multiplica-se cada algarismo do numero pela base elevada a um expoente que será 
igual a zero para o algarismo menos significativo, sendo acrescido de uma unidade a 
cada algarismo mais representativo. 
 
Número binário: 110111011011 
1 x 20 = 1 
1 x 21 = 2 
0 x 22 = 4 
1 x 23 = 8 
1 x 24 = 16 
0 x 25 = 32 
1 x 26 = 64 
1 x 27 = 128 
1 x 28 = 256 
0 x 29 = 512 
1 x 210 = 1024 
1 x 211 = 2048 
 3547 
 
Número octal: 6733 
3 x 80 = 3 
3 x 81 = 24 
7 x 82 = 448 
6 x 83 = 3072 
 3547 
 
 
 
13 
 
 
Número hexadecimal DDB 
11 x 160 = 11 
13 x 161 = 208 
13 x 162 = 3328 
 3547 
 
Exercícios: 
 
 1 – Converter para as novas bases: 
 
 a – 1755(10)  (2), (8), (16) 
 
 b – 4523(8)  (10) (16) 
 
 c – ABA (16)  (8) 
 
 d – A5B2(16)  (2), (8), (10) 
 
 e – 10111001 (2)  (8), (10), (16) 
 
 f – 653(7)  (10) 
 
 
APERFEIÇOAMENTO DA LÓGICA 
 
O QUE É LÓGICA 
 
1.Não há consenso quanto à definição da lógica. Alguns autores definem-na como o 
estudo de processos válidos e gerais pelos quais atingimos a verdade, outros como a 
ciência das leis do pensamento, ou somente como o estudo dos princípios da inferência 
válida. Esta pluralidade de definições dá-nos conta da diversidade de estudos que são 
abrangidos pela Lógica. 
2. A lógica foi criada por Aristóteles, no século IV a.C., como uma ciência autônoma 
que se dedica ao estudo dos atos do pensamento - Conceito, Juízo, Raciocínio, 
Demonstração do ponto de vista da sua estrutura ou forma lógica, sem ter em conta 
qualquer conteúdo material. É por esta razão que esta lógica aristotélica se designa 
também por lógica formal. 
3. Em contraposição a este conceito de lógica formal, surgiu um outro - o de lógica 
material - para designar o estudo do raciocínio no que ele depende quanto ao seu 
conteúdo ou matéria. 
4. Esta distinção entre lógica formal e lógica material permite-nos agora perceber 
porque: 
 
14 
 
 
Tendo em conta a sua forma, o raciocínio é correto ou incorreto ( válido ou invalido). 
Mas se atendermos à sua matéria, a conclusão pode ser verdadeira ou falsa. 
Exemplo: 
 
 
Nenhum homem sabe dançar 
Este dançarino é homem 
logo Este dançarino não sabe dançar 
 
Este raciocínio é formalmente correto, uma vez que a conclusão está corretamente 
deduzida. Mas a conclusão é falsa, uma vez que é falsa a primeira proposição ("Nenhum 
homem sabe dançar"). Estamos perante um raciocínio que tem validade formal, mas não 
tem validade material. Logo temos que concluir que é falso 
 
 As pessoas utilizam lógica no cotidiano sem perceber; chegam mesmo a citá-la, 
sem entender direito o seu significado. Segundo o dicionário Aurélio, a lógica é a 
―coerência de raciocínio, de idéias‖, ou ainda a ―seqüência coerente, regular e necessária 
de acontecimentos, de coisas‖. Você pode perceber isso nos exemplos a seguir: 
 
 Ex: 
 O número 3 é menor que o número 5. 
 O número 7 é maior que o número 5. 
 Logo, o número 3 é menor que os números 5 e 7. 
 
 Quando chove não preciso regar as plantas do jardim. 
 Hoje choveu. 
 Logo, hoje não é preciso regar as plantas do jardim. 
 
Exercícios resolvidos: 
1. Se eu passar no concurso, então irei trabalhar. 
Passei no concurso 
Logo, irei Trabalhar 
 
2. Se ele me ama então casa comigo. 
Ele me ama 
Logo, ele casa comigo 
 
3. Todos os brasileiros são humanos. 
Todos os paulistas são brasileiro. 
Logo, todos os paulistas são humanos 
 
15 
 
 
4. Se o Palmeiras ganhar o jogo, todos os jogadores receberão o bicho. 
Se o Palmeiras não ganhar o jogo, todos os jogadores receberão o bicho. 
Logo, todos os jogadores receberão o bicho 
 
5. Todos os apartamentos são pequenos 
Todos os apartamentos são residências 
Logo, algumas residências são pequenas 
 
6. O Flamengo é um bom time de futebol. 
O Palmeiras é um bom time de futebol. 
O Vasco é um bom time de futebol. 
O Cruzeiro é um bom time de futebol. 
Logo, todos os times brasileiros de futebol são bons (F) 
 
7. Se num campeonato de futebol é verdade que ―quem não faz, leva‖, ou seja, time 
que não marca gol numa partida sofre ao menos um gol nessa mesma partida, 
então: 
a) em todos os jogos os dois times marcam gols 
b) nenhum jogo termina empatado 
c) o vencedor sempre faz um gol a mais que o vencido 
d) nenhum jogo termina 0 x 0, ou seja, sem gols 
e) resultados como 1 x 0, 2 x 0 ou 3 x 0 não são possíveis 
Solução: 
a) Se é verdade que ―quem não faz, leva‖, tem-se que o time que não marca 
qualquer gol leva pelo menos algum gol 
b) Logo, nenhuma partida termina sem gols, ou seja, 0 x 0 
Gabarito: D 
 
8. Se ―cada macaco fica no seu galho‖, então: 
a) tem mais macaco do que galho 
b) pode haver galho sem macaco 
c) dois macacos dividem um galho 
d) cada macaco fica em dois galhos 
e) dois galhos dividem um macaco 
Solução: 
a) Quando dizemos que cada macaco fica em seu galho, estamos afirmando que 
todo macaco fica em algum galho 
b) Não podemos dizer necessariamente que todo galho terá algum macaco 
pendurado. Logo, pode haver algum galho que fique sem macaco 
Gabarito: B 
 
16 
 
 
Exercícios: 
1. Três alunos são suspeitos de não estarem matriculados no Curso de Raciocínio 
Lógico. O Aparecido entrevistou os três, para cobrar a matrícula, e obteve os 
seguintes depoimentos: 
AURO: ―Joaquim não pagou e Cláudia pagou‖ 
JOAQUIM: ―Se Auro não pagou, Cláudia também não pagou‖ 
CLÁUDIA: ―Eu paguei, mas pelo menos um dos outros não pagou‖ 
 
Pede-se: 
1. Identificar os pagantes e os não pagantes, supondo que todos os depoimentos 
são 
verdadeiros 
2. Identificar os mentirosos, supondo que todos pagaram as matrículas. 
 
2. (ESAF) Se Beto briga com Glória, então Glória vai ao cinema. Se Glória vai ao 
cinema, então Carla fica em casa. Se Carla fica em casa, então Raul briga com 
Carla. Ora, Raul não briga com Carla. Logo. 
a. Carla não fica em casa e Beto não briga com Glória. 
b. Carla fica em casa e Glória vai ao cinema. 
c. Carla não fica em casa e Glória vai ao cinema. 
d. Glória vai ao cinema e Beto briga com Glória. 
e. Glória não vai ao cinema e Beto briga com Glória. 
 
3. (ESAF) Se Carlos é mais velho do que Pedro, então Maria e Julia tem a mesma 
idade. Se Maria e Julia tem a mesma idade, então João é mais moço do que 
Pedro. 
Se João é mais moço do que Pedro, então Carlos é mais velho do que Maria. Ora, 
Carlos não é mais velho do que Maria. Então: 
a. Carlos não é mais velho do que Leila, e João é mais moço do que Pedro. 
b. Carlos é mais velho que Pedro, e Maria e Julia tem a mesma idade. 
c. Carlos e João são mais moços do que Pedro. 
d. Carlos é mais velho do que Pedro, e João é mais moço do que Pedro. 
e. Carlos não é mais velho do que Pedro, e Maria e Julia não tem a mesma idade. 
 
4. (ESAF)José quer ir ao cinema assistir ao filme ―Fogo Contra Fogo‖, mas não 
tem certeza se o mesmo está sendo exibido. Seus amigos, Maria, Luis e Julio têm 
opiniões discordantes sobre se o filme está ou não em cartaz. Se Maria estiver 
certa, então Julio está enganado. Se Julio estiver enganado, então Luis está 
enganado. 
Se Luis estiver enganado, então o filme não está sendo exibido. Ora, ou o 
 
17 
 
filme ―Fogo contra Fogo‖ está sendo exibido, ou José não ira ao cinema. Verificou-
se que Maria está certa. Logo, 
a. O filme ―Fogo contra Fogo‖ está sendo exibido. 
b. Luis e Julio não estão enganados. 
c. Julio está enganado, mas Luis não. 
d. Luis está enganado, mas Julio não. 
e. José não irá ao cinema. 
 
O texto abaixo refere aos exercícios de 5 a 8: 
Chapéuzinho Vermelho ao entrar na floresta, perdeu a noção dos dias da semana. 
A Raposa e o Lobo Mau eram duas estranhas criaturas que freqüentavam a 
floresta. 
A Raposa mentia às segundas, terças e quartas-feiras, e falava a verdade 
nos outros dias da semana. 
O Lobo Mau mentia às quintas, sextas e sábados, mas 
falava a verdade nos outro dias da semana. 
(Adaptado de Linguagem Lógica de Iole de Freitas Druck IME - USP 
- publicado na revista do professor de Matemática) 
 
5. Um dia Chapeuzinho Vermelho encontrou o Raposa e o Lobo Mau descansando 
à sombra de uma árvore. Eles disseram: 
Raposa: Ontem foi um dos meus dias de mentir. 
Lobo Mau: Ontem foi um dos meus dias de mentir. 
A partir dessas afirmações, Chapéuzinho Vermelho descobriu qual era o dia da 
semana. Qual era? 
 
6. Em outra ocasião Chapéuzinho Vermelho encontrou o Raposa sozinha. Ela fez as 
seguintes afirmações: 
Eu menti ontem. 
Eu mentirei daqui a 3 dias. 
Qual era o dia da semana? 
 
7. Em qual dia da semana é possível a Raposa fazer as seguintes afirmações? 
Eu menti ontem. 
Eu mentirei amanhã. 
 
8. Em que dias da semana é possível a Raposa fazer cada uma das seguintes 
afirmações: 
a) Eu menti ontem e eu mentirei amanhã. 
b) Eu menti ontem ou eu mentirei amanhã. 
c) Se menti ontem, então mentirei de novo amanhã. 
 
18 
 
 
9. Uma vela queima-se integralmente em três horas. Em quanto tempo se 
queimariam três velas do mesmo tamanho e acesas ao mesmo tempo? 
 
10. O dobro do triplo do dobro de três. Que número é esse? 
 
11. Trinta operários podem cavar trinta buracos em trinta dias. Assim sendo, em 
quantos dias poderão 12 operários cavar 12 buracos? 
 
12. Um número multiplicado por 13, dá 65; dividido por ele mesmo,1; elevado ao cubo, 
125. Qual é o número? 
 
13. Qual dos números não pertence a série? 
a) 9 – 7 – 8 – 6 
b) 7 – 5 – 6 - 3 
 
14. Maria foi ao mesmo tempo a décima terceira melhor classificada e a décima 
terceira pior classificada de um concurso. Quantas eram as concorrentes? 
 
15. Uma lesma deve subir um poste de 10 metros de altura. De dia sobe 2m e à noite 
desce 1m. Em quantos dias atingirá o topo do poste? 
 
16. O pai do padre é filho do meu pai. O que eu sou do Padre? 
 
17. Qual é o dobro da metade de dois? 
 
Sequência Lógica 
Sequência lógica são passos executados até atingir um objetivo ou solução de um 
problema. 
Às vezes o raciocínio funciona de forma desordenada. Quantas vezes você já 
ouviu as frases: ―E se acontecer aquilo?‖, ou ―É, mas eu não tinha pensado nisso!‖. 
 Neste exemplo estão descritas ações de quem vai a um banco; entretanto, veja se 
seria possível retirar o dinheiro obedecendo à seqüência descrita abaixo: 
 
Ex: 
1. Sair do banco. 
2. Aguardar a vez de ser atendido. 
3. Entrar na fila do caixa. 
4. Digitar a senha. 
 
19 
 
5. Entrar no banco. 
6. Informar o valor a ser retirado. 
7.Procurar a fila do caixa. 
8. Pegar o comprovante de saque, o cartão eletrônico e o dinheiro. 
9. Entregar o cartão eletrônico ao funcionário que atende no caixa. 
10. Conferir o valor em dinheiro. 
 
JOGOS E PASSATEMPOS 
 
1) Que número fica diretamente acima de119 na seguinte disposição de números? 
 
1 
2 3 4 
5 6 7 8 9 
10 11 12 13 14 15 16 
17 18 . . . . . . . . . . 
 
2) Um pequeno caminhão pode carregar 50 sacos de areia ou 400 tijolos. Se forem 
colocados no caminhão 32 sacos de areia. Quantos tijolos podem ainda ele carregar? 
 
3) Rafael caiu no fundo de um poço com 30 metros de profundidade. Todos os dias 
ele sobe 3 metros e escorrega 2 metros. Neste ritmo, quando chegará em cima? 
 
4) Se a média de cinco números inteiros consecutivos é 17, qual o maior dos 5 
números? 
 
5) O pai do meu neto é o neto do meu pai. Quantas pessoas estão envolvidas? 
 
6) Em um restaurante, comprando-se 3 sanduíches a R$ 1,00 cada, se ganha um, 
de graça. Se quarenta e cinco sanduíches foram consumidos, quanto dinheiro foi pago? 
 
7) Você precisa usar 4 litros de água numa receita. Use os jarros para conseguir a 
medida certa, sendo que suas capacidades são 5 e 3 litros. 
 
8) Uma fita de vídeo pode gravar 2 horas na velocidade SP, 4 horas na velocidade 
LP e 6 horas na velocidade SLP. Após ter sido gravada durante 32 minutos na velocidade 
SP e durante 44 minutos na velocidade LP, durante quantos minutos a fita poderá ser 
gravada na velocidade SLP até o seu término? 
 
 
20 
 
9) Uma de nove moedas é mais pesada que as outras. Descubra qual, usando uma 
balança de dois pratos, apenas duas vezes. 
 
10) Em 10 pilhas de tijolos, existe uma pilha onde os tijolos pesam metade dos 
tijolos das outras pilhas. Como podemos determinar qual das pilhas contém os tijolos 
mais leves, efetuando somente uma pesagem? 
 
11) Qual dos cinco itens representa a melhor comparação? 
―Arvore está para o chão assim como chaminé está para...‖ 
a) fumaça b) tijolo c) garagem d) céu e) casa 
 
12) Depois de doar um quarto de sua mesada ao irmão e ganhar mais cinco reais, 
ele ficou com 20 reais. Qual era o valor de sua mesada? 
a) 10 reais b) 30 reais c) 20 reais d) 35 reais e) 25 reais 
 
13) Uma das opções abaixo, não tem relação com as outras. 
a) pedreiro b) maratonista c) mecânico d) carpinteiro e) agricultor 
 
14) Do ponto de vista do volume, como ficaria a ordem abaixo? 
a) kg chumbo; kg isopor; gr ouro; litro água; 1 moeda 
b) kg isopor; kg chumbo; gr ouro; litro água; 1 moeda 
c) kg chumbo; gr ouro; litro água; 1 moeda; kg isopor 
d) kg ouro; 1 moeda; kg chumbo; litro água; kg isopor 
e) kg ouro; litro agua; kg isopor; kg chumbo; 1 moeda 
 
15) Segundo a cronologia, dentre as opções abaixo, qual o grupo com a ordem 
correta? 
a) ontem, amanhã, hoje, anteontem, depois de amanhã 
b) amanhã, ontem, hoje, anteontem, depois de amanhã 
c) anteontem, ontem, hoje, amanhã, depois de amanhã 
d) hoje, ontem, amanhã, anteontem, depois de amanhã 
e) ontem, hoje, anteontem, amanhã, depois de amanhã 
 
16) Qual dos cinco itens se parece menos com os outros? 
a) tato b) sorriso c) paladar d) visão e) audição 
 
 
 
 
 
 
 
21 
 
CONSTRUÇÃO DE ALGORITMOS 
 
A automatização de tarefas é um aspecto marcante da sociedade moderna. O 
aperfeiçoamento tecnológico alcançado, com respeito a isto, teve como elementos 
fundamentais à análise e a obtenção de descrições da execução de tarefas em termos de 
ações simples o suficiente, tal que pudessem ser automatizadas por uma máquina 
especialmente desenvolvida para este fim, O COMPUTADOR. 
Em ciência da computação houve um processo de desenvolvimento simultâneo e 
interativo de máquinas (hardware) e dos elementos que gerenciam a execução 
automática (software) de uma dada tarefa. E essa descrição da execução de uma tarefa, 
como considerada acima, é chamada algoritmo. 
O objetivo dessa matéria é a Lógica de Programação dando uma base teórica e 
prática, suficientemente boa, para que, o aluno domine os algoritmos e esteja habilitado a 
aprender uma linguagem de programação. Serámostrado também um grupo de 
algoritmos clássicos para tarefas cotidianas, tais como: ordenação e pesquisa. 
 
Definição de Algoritmo 
 
 "O conceito central da programação e da Ciência da Computação é o conceito 
de algoritmos, isto é, programar é basicamente construir algoritmos." 
 É a descrição, de forma lógica, dos passos a serem executados no 
cumprimento de determinada tarefa. 
 "O algoritmo pode ser usado como uma ferramenta genérica para representar a 
solução de tarefas independente do desejo de automatizá-las, mas em geral está 
associado ao processamento eletrônico de dados, onde representa o rascunho para 
programas (Software)." 
 "Serve como modelo para programas, pois sua linguagem é intermediária à 
linguagem humana e às linguagens de programação, sendo então, uma boa ferramenta 
na validação da lógica de tarefas a serem automatizadas." 
 "Um algoritmo é uma receita para um processo computacional e consiste de 
uma série de operações primitivas, interconectadas devidamente, sobre um conjunto de 
objetos. Os objetos manipulados por essas receitas são as variáveis." 
 
Atenção 
 Algoritmo não é a solução de um problema, pois, se assim fosse, cada problema 
teria um único algoritmo. Algoritmo é um caminho para a solução de um problema, e em 
geral, os caminhos que levam a uma solução são muitos. 
 O aprendizado de algoritmos não se consegue a não ser através de muitos 
exercícios. 
 
 
22 
 
 Algoritmo não se aprende: 
 - Copiando Algoritmo 
 - Estudando Algoritmo 
 
 Algoritmo só se aprende: 
 - Construindo Algoritmo 
- Testando Algoritmo 
 
Características 
Todo algoritmo deve apresentar algumas características básicas: 
 Ter fim; 
 Não dar margem à dupla interpretação; 
 Capacidade de receber dados de entrada; 
 Poder gerar informações de saída; 
 Ser efetivo (todas as etapas especificadas no algoritmo devem ser 
alcançáveis em um tempo finito). 
Conceitos 
Algoritmo 
É uma seqüência finita de ações que descrevem como um problema pode ser 
resolvido. 
 
Instrução 
São frases que indicam as ações a serem executadas. São compostas de um verbo 
no imperativo/infinitivo mais um complemento. 
Ex. Bata(bater) duas claras em neve 
Ligue (ligar) os faróis 
Abra (abrir) a porta 
 
Programa 
Ações de um algoritmo obedecendo à sintaxe de uma linguagem de programação. 
 
Identação/Indentação 
É o deslocamento para a direita de uma instrução, significa que tais instruções 
estão subordinadas a instrução anterior. 
 
FORMAS DE REPRESENTAÇÃO 
Algoritmos podem ser representados, dentre outras maneiras, por: 
 
 
 
23 
 
1. Descrição narrativa 
Faz-se uso do português para descrever algoritmos. 
 
Ex: 
Receita de bolo: 
1 Providencie manteiga, ovos, 2 kg de massa etc. 
2 Misture os ingredientes 
3 Despeje a mistura na forma de bolo 
4 Leve a forma ao forno 
5 Espere 20 minutos 
6 Retire a forma do forno 
7 Deixe esfriar 
8 Prove 
Vantagens: 
 O português é bastante conhecido por nós. 
Desvantagens 
 Imprecisão; 
 Pouca confiabilidade; 
 Extensão (normalmente escreve-se muito para dizer pouca coisa). 
2. Fluxograma 
Utilização de símbolos gráficos para representar algoritmos. No fluxograma 
existem símbolos padronizados para início, entrada de dados, cálculos, saída de dados, 
fim etc. 
 
 Processamento 
 
 
 Entrada de dados 
 
 Decisão 
 
 
 
 
 Saída de dados 
 
 
 Início/Fim 
 
 
24 
 
 
Temos ainda um símbolo conhecido como conector, que é utilizado quando for preciso 
dividir o diagrama, colocando uma letra ou um número no símbolo para identificar os 
pares da conexão. 
 
 Conector na mesma página 
 
 
 Conector entre páginas 
 
 
Vantagens: 
 
 Uma das ferramentas mais conhecidas; 
 Figuras dizem muito mais que palavras; 
 Padrão mundial. 
Desvantagens 
 
 Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou 
representá-los; 
 Complica-se à medida que o algoritmo cresce. 
 
Ex: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Inicio 
 
NUM 
NUM = NUM * 2 
NUM 
Fim 
 
25 
 
3. Linguagem algorítmica 
Consiste na definição de uma pseudolinguagem de programação, cujos comandos 
são em português. 
Ex: 
 num, dobro INTEIRO 
 LEIA num 
 dobro = num * 2 
 ESCREVA dobro 
 
Vantagens: 
 Usa o português como base; 
 Podem-se definir quais e como os dados vão estar estruturados; 
 Passagem quase imediata do algoritmo para uma linguagem de 
programação qualquer. 
Desvantagens 
 Exige a definição de uma linguagem não real para o trabalho; 
 Não padronizado. 
 
Fases de um Algoritmos 
 
Quando temos um problema e vamos utilizar um computador para resolvê-lo 
inevitavelmente temos que passar pelas seguintes etapas: 
 a) Definir o problema. 
 b) Realizar um estudo da situação atual e verificar quais a(s) forma(s) de resolver 
o problema. 
c) Terminada a fase de estudo, utilizar uma linguagem de programação para 
escrever o programa que deverá a princípio, resolver o problema. 
d) Analisar junto aos usuários se o problema foi resolvido. Se a solução não foi 
encontrada, deverá ser retornado para a fase de estudo para descobrir onde está a falha. 
 
TIPOS DE DADOS 
Os dados são representados pelas informações a serem processadas por um 
computador. Estas informações estão caracterizadas por quatro tipos de dados: inteiros, 
reais, caracteres e lógicos. 
 
Tipo Inteiro 
Dados numéricos positivos ou negativos, excluindo-se qualquer número fracionário. 
Ex. 35, 0, -56 
 
 
26 
 
Tipo Real 
Dados numéricos positivos, negativos e números fracionários. 
Ex. 1.2,-45.897 
 
Tipo Caractere 
São tipos caracteres, as seqüências contendo letras, números e símbolos especiais. 
Uma seqüência de caracteres deve ser indicada entre aspas. Sendo também conhecido 
como: alfanumérico, string, literal ou cadeia. 
Ex. ―PROGRAMAÇÃO‖, ―Rua Alfa, 52 apto 1‖, ―7‖, ―249-4455‖ 
 
Tipo Lógico 
São tipos lógicos ou booleanos, os dados com valores: verdadeiro e falso, sendo 
que este tipo poderá representar um dos dois valores. 
Ex: 4+5<7 = F 
 
 
VARIÁVEL 
Uma variável pode ser vista como uma caixa com um rótulo ou nome colado a ela, 
que num dado instante guarda um determinado objeto. O conteúdo desta caixa não é algo 
fixo, permanente. Na verdade, essa caixa pode ter seu conteúdo alterado diversas vezes. 
Contudo, o conteúdo deve ser sempre do mesmo tipo. 
Por exemplo caso tenhamos uma caixa (variável) rotulada com FATOR que 
contém o valor 5. Como seu tipo é inteiro, em um determinado instante essa caixa poderá 
conter qualquer valor numérico (inteiro, positivo, negativo ou zero). Entretanto, em um 
determinado instante, ela conterá um, e somente um valor. 
Variáveis são palavras que tem um significado bem específico em um algoritmo. 
Para que o computador possa executar comandos que envolvem variáveis da maneira 
correta, ele deve conhecer os detalhes das variáveis que pretendemos usar. Esses 
detalhes são: o identificador desta variável e o tipo de valores que essa variável irá 
conter. Precisamos assim, de uma maneira de especificar esses detalhes e comunicá-los 
ao computador. Para isso devemos declarar nossas variáveis logo no início do algoritmo. 
 
A identificação ou nomeação de variáveis segue algumas regras: 
a. nomes de variáveis não podem ser iguais a palavras reservadas; 
b. nomes de variáveis devem possuir como primeiro caractere uma letra ou sublinhado '_' 
(os outros caracteres podem ser letras, números e sublinhado); 
c. Nomes de variáveis não podem conter espaços em branco; 
d. Nomes de variáveis não podem conter caracteres especiais; 
e. Devem apresentar uma noção do que está sendo armazenado. 
 
Exemplo:27 
 
 
Identificadores válidos: NOME, TELEFONE, IDADE_FILHO, IdadeFilho, NOTA1, Est_Civil 
Identificadores inválidos: 3Endereco, Estado Civil, endereço, while, numero/complemento 
Você deve estar se perguntando por que a palavra ―while e if‖ são identificadores 
inválidos. Eles são inválidos, pois são palavras reservadas da linguagem. 
A Programação de computadores é uma das competências básicas de qualquer 
profissional que lide com computadores. Surge, portanto a necessidade da 
aprendizagem de linguagens de programação para o desenvolvimento desta 
competência. 
 
Qualquer linguagem de programação é um ambiente de desenvolvimento de 
algoritmos que visa o desenvolvimento do raciocínio algorítmico através de um 
ambiente simples contendo ferramentas visuais para desenvolvimento e 
depuração dos algoritmos desenvolvidos. Neste ambiente privilegiamos o 
desenvolvimento de algoritmos ao invés do desenvolvimento de programas. 
 Bons Algoritmos. 
 
Diferenças entre compiladores e interpretadores 
Compiladores e interpretadores são formas de tradução de um código 
geralmente de alto nível para um código que o computador (a máquina) interprete. 
Este tradutor tem a função de traduzir uma linguagem abstrata para uma 
linguagem binária. 
 
Compilador 
Compilador é um programa ou um grupo de programas que transformam 
um código escrito em uma linguagem de programação (código-fonte) em outro 
código que é interpretado pelo computador. 
Este código compilado é chamado de código objeto, podendo ser um 
arquivo executável que é reproduzido em um sistema operacional, por exemplo. 
Este tipo de tradutor é um dos mais utilizados. 
Os compiladores analisam o código em três partes, de forma sintática ou 
hierárquica, análise léxica ou linear e análise semântica. 
Alguns compiladores contam com um pré-processamento. Este pré-
processamento é responsável por modificar o código-fonte conforme 
necessidades que o compilador identifique que sejam necessárias, por exemplo, 
otimização de código. 
 
Vantagens: 
 O código compilado é mais rápido de ser acessado; 
 
28 
 
 Impossibilita ou pelo menos dificulta ser quebrado e visualizado o código-fonte 
original; 
 Permite otimização do código por parte do compilador; 
 Compila o código somente se estiver sem algum erro. 
 
Desvantagens: 
 Para ser utilizado o código precisa passar por muitos níveis de compilação; 
 Assim como vantagem a possibilidade de não poder visualizar o código-fonte, 
pode ser uma desvantagem; 
 Processo de correção ou alteração do código requer que ele seja novamente 
recompilado. 
 
Interpretador 
O interpretador ao contrário do compilador roda o código-fonte escrito como 
sendo o código objeto, ele traduz o programa linha a linha, o programa vai sendo 
utilizado na medida em que vai sendo traduzido. Cada execução do programa ele 
precisa ser novamente traduzido e interpretado. 
O interpretador analisa sintaticamente e semanticamente o código, se estas 
duas etapas forem realizadas e executadas de forma correta o código está pronto 
para funcionar. 
 
Vantagens: 
 Correções e alterações são mais rápidas de serem realizadas; 
 Código não precisa ser compilado para ser executado; 
 Consomem menos memória. 
 
Desvantagens: 
 Execução é mais lenta do programa; 
 Necessita sempre ser lido o código original para ser executado 
 
 
A linguagem C# (C Sharp) 
C# (pronunciada ‖C Sharp‖), é uma linguagem de programação da Plataforma .NET, 
derivada de C/C++ orientada `a objetos. É a linguagem nativa para .NET Common Language 
Runtime(CLR), mecanismo de execução da plataforma .NET. Isso possibilita a convivência com 
várias outras linguagens especificadas pela Common Language Subset(CLS). Por exemplo, uma 
classe base pode ser escrita em C#, derivada em Visual Basic e novamente derivada em C#. 
 
Características do C# 
 Simplicidade: os projetistas de C# costumam dizer que essa linguagem é tão 
poderosa quanto o C++ e tão simples quanto o Visual Basic. 
 Completamente orientada a objetos: em C#, qualquer variável tem de fazer parte 
de uma classe. 
 Fortemente tipada: isso ajuda a evitar erros por manipulação imprópria de tipos, 
atribuições incorretas etc. 
 Gera código gerenciado: assim como o ambiente .NET é gerenciado, assim 
também é a linguagem C#. 
 
29 
 
 Tudo é um objeto: System. Object é a classe base de todo o sistema de tipos de 
C#. 
 Controle de versões: cada assembly gerado, seja como EXE ou DLL, tem 
informação sobre a versão do código, permitindo a coexistência de dois 
assemblies homônimos, mas de versões diferentes no mesmo ambiente. 
 Suporte a código legado: o C# pode interagir com código legado de objetos COM 
e DLLs escritas em uma linguagem não gerenciada. 
 Flexibilidade: se o desenvolvedor precisar usar ponteiros, o C# permite, mas ao 
custo de desenvolver código não gerenciado, chamado ‖ênfase‖. 
 Linguagem gerenciada: os programas desenvolvidos em C# executam num 
ambiente gerenciado, o que significa que todo o gerenciamento de memória é feito 
pelo runtime via o GC (Garbage Collector), e não diretamente pelo programador, 
reduzindo as chances de cometer erros comuns a linguagens de programação 
onde o gerenciamento da memória é feito diretamente pelo programador.
 
 
CSC (Compilador C#) 
 Muitos acreditam que a única forma de criar programas utilizando a linguagem de 
programação Csharp é tendo o mesmo instalado no computador. No entanto quando a 
plataforma .NET Framework foi introduzida houve a inclusão do compilador do Csharp na sua 
instalação, ou seja, basta ter o Framework (gratuito) instalado na máquina para poder fazer 
uso do CSC (Compilador do C Sharp) 
 
Passo a passo para a utilização do CSC em máquinas com o Windows 
 Em primeiro lugar é necessário ter o Framework instalado. Ele é gratuito e pode ser 
baixado do site da Microsoft (normalmente já vem instalado na máquina com Windows; 
 No passo seguinte é preciso localizar o arquivo CSC.EXE. É possível usar o recurso de 
Pesquisa do Windows para essa finalidade; 
 Ao final da pesquisa, na lista apresentada, clique com o botão direito sobre o arquivo 
CSC.EXE e escolha a opção Propriedades. Ao abrir a caixa de diálogo selecione o conteúdo 
do campo Local e pressione CTRL+C; 
 Clique com o botão direito sobre o item Meu computador e no menu de atalho escolha 
a opção Propriedades. Na caixa de diálogo que irá surgir, clique na aba Avançado e em 
seguida no botão Variáveis de ambiente; 
 Na seção Variáveis de ambiente localize o item Path e sobre ele clique duas vezes; 
 No campo Valor da variável, sem apagar o que já está preenchido, adicione ―;‖ e 
pressione CTRL+V. Esse procedimento servirá para indicar ao Windows que ele deverá 
procurar no local acrescentado determinado programa quando ele for executado; 
 
Obs: Dependendo da versão do Windows, a rotina de atualização do Path será diferente. 
 
 Após os procedimentos acima serem executados, basta criar o seu programa usando 
qualquer editor de textos simples, ou seja, que não possua recursos de formatação como por 
exemplo o Bloco de notas (Notepad++) e salvar o arquivo no local desejado (área de 
trabalho), a partir daí basta abrir o prompt de comando digitar CSC seguido do local onde o 
código-fonte foi salvo (área de trabalho) e o nome do arquivo. 
As mensagens que serão exibidas a seguir são mensagens do compilador e se houver 
algum erro na estrutura do código-fonte você será informado. 
 
Primeiro programa 
 O pequeno trecho de código a seguir implementa o clássico programa ―Olá mundo‖: 
 
using System; 
namespace Tarefa 
{ 
 class HelloWorld 
 { 
 static void Main( ) 
 { 
 // escrevendo no console 
 Console.WriteLine("Hello World !!!"); 
 Console.ReadLine( ); 
 } 
 } 
 } 
 
 
 
 
 
 
 
 
 
 
O Cabeçalho do programa 
 A primeira linha do nosso programa, que escreve no console ―Olá mundo em C#‖, contém a 
informação do namespace System, que contém as classesprimitivas necessárias para ter acesso ao 
console do ambiente. NET. Para incluir um namespace em C#, utilizamos a cláusula using seguida do 
nome do namespace. 
 A cláusula using referencia as classes a serem utilizadas, System atua como namespace das 
classes. O namespace System contém muitas classes, uma delas é a Console. 
 
WriteLine 
 O método WriteLine, simplesmente emite a string no console. 
 
Main 
 O método Main é o ponto de entrada de execução do seu programa. A classe que será 
executada inicialmente possui embutida a função estática Main. Uma ou mais classes podem conter a 
função Main, entretanto, apenas uma será o ponto de entrada, indicada na compilação pelo parâmetro 
/main:<tipo>, ou simplificando /m:<tipo>. 
 
O método Main, pode ser declarado de 4 formas: 
 Retornando um vazio (void): public static void Main(); 
 Retornando um inteiro(int): public static int Main(); 
 Recebendo argumentos, através de um array de string e retornando um vazio: public static void 
Main(string[] args); 
 Recebendo argumentos, através de um array de string e retornando um inteiro: public static int 
Main(string[] args). 
 
 
Estrutura de um programa 
 O esqueleto de um programa em C#, apresentando alguns dos seus elementos mais comuns, 
segue abaixo: 
 
using System; 
namespace Tarefa 
{ 
 public class Programa 
 { 
 public static void Main ( string [ ] args ) 
 { 
 Math m = new Math (); 
 Console . WriteLine ( m . Sum (1 ,1) ) ; 
 } 
 public class Math : Object 
 { 
 public int Sum ( int a , int b ) 
 { 
 return ( a + b ) ; 
 } 
 } 
} 
} 
 
 
 
 
 
 
 
 
 
 
 
Pode ser dividida em um ou mais arquivos, e conter: 
• Namespaces: são a forma lógica de organizar o código-fonte; 
• Tipos: classes, estruturas, interfaces, delegações, enums; 
• Membros: constantes, campos, métodos, propriedades, indexadores, eventos, 
 operadores, construtores; 
 
A declaração de uma classe 
 
 O C# requer que toda a lógica do programa esteja contida em classes. Após a declaração da 
classe usando a palavra reservada class, temos o seu respectivo identificador. Para quem não está 
familiarizado com o conceito de classe, apenas adiantamos que uma classe é um tipo abstrato de 
dados que no paradigma de programação orientada a objetos é usado para representar objetos do 
mundo real. No exemplo acima, temos uma classe que contém apenas o método Main( ) e não recebe 
nenhum parâmetro. 
 
O Método Main( ) 
 
Todo programa C# deve ter uma classe que defina o método Main( ), que deve ser declarado 
como estático usando o modificador static, que diz ao runtime que o método pode ser chamado sem 
que a classe seja instanciada. É através desse modificador que o runtime sabe qual será o ponto de 
entrada do programa no ambiente Win32, para poder passar o controle ao runtime .NET. O ―M‖ 
maiúsculo do método Main é obrigatório, e seu valor de retorno void significa que o método não retorna 
nenhum valor quando é chamado. 
 
Algumas variantes do método Main( ) 
 
// Main recebe parâmetros na linha de comando via o array 
// args 
static void Main(string[ ] args) 
{ 
 // corpo do método 
} 
 // Main tem como valor de retorno um tipo int 
static int Main( ) 
{ 
// corpo do método 
} 
 
A forma do método Main( ) irá ser usada vai depender dos seguintes fatores: 
 
 O programa vai receber parâmetros na linha de comando? Então esses parâmetros serão 
armazenados no array args. 
 Quando o programa é finalizado, é necessário retornar algum valor ao sistema? Então o valor 
de retorno será do tipo int. 
 
 Um programa escrito em C# pode ter mais de uma classe que implementa o método Main( ). 
Nesse caso, deverá ser especificado em tempo de compilação em qual classe se encontra o método 
Main( ), que deverá ser chamado pelo runtime quando a aplicação for executada. 
 
 
 
 
 
 
 
 
 
 
 Exemplo: 
 
using System; 
namespace Tarefa 
{ 
 class programa 
 { 
 static void Main( ) 
 { 
 Console.WriteLine("Método Main( ) da classe 1"); 
 } 
 } 
 class class2 
 { 
 static void Main( ) 
 { 
 Console.WriteLine("Método Main( ) da classe 2"); 
 } 
 } 
} 
 
 
Exemplo de um programa 
 
using System; 
namespace Tarefa // o namespace é utilizado para organizar o código. Podemos ter vários no 
 mesmo arquivo ou simplesmente nenhum. 
{ 
 class programa // podemos ter várias classes dentro de um namespace, mas apenas uma 
 que irá conter o método estático Main, pois este é responsável pelo 
 "arranque" do programa 
 { 
 static void Main(string[ ]args) // os parâmetros dentro do Main são opcionais, você 
 não precisa colocar. Vai funcionar se colocar assim Main() 
 { 
 string nome; 
 int idade; 
 double salario; 
 
 nome = "Pedro da Silva"; 
 idade = 42; 
 salario = 937.00; 
 
 Console.WriteLine("Nome.....:{0}", nome); 
 Console.WriteLine("Idade....:{0}", idade); 
 Console.WriteLine("Salário..:{0}\n", salario); 
 // o {0} representa a variável nome, {1} representa a variável idade e 
 assim sucessivamente 
 Console.WriteLine("Bom dia{0}, você tem {1}anos de idade e ganha{2} 
 por mês", nome, idade, salario); 
 Console.ReadKey (); 
 } 
 } 
} 
 
 
 
 
 
 
 
 
 
Alguns últimos detalhes adicionais 
 Blocos de código são agrupados entre chaves { }. 
 Cada linha de código é separada por ponto-e-vírgula. 
 Os comentários de linha simples começam com duas barras//. 
 Comentários em bloco são feitos usando os terminadores /* (de início) e */ (de fim). 
/* Este é um comentário de bloco 
Segue o mesmo estilo de C/C++ 
*/ 
 
O C# é sensível ao contexto, portanto int e INT são duas coisas diferentes. int é uma palavra 
reservada que é um alias do tipo System.Int32. INT poderia ser um identificador, entretanto não é 
recomendado usar como identificadores de variáveis o nome de um tipo ou palavra reservada como no 
exemplo citado. Sempre declare uma classe onde todos os aspectos inerentes à inicialização da 
aplicação serão implementados, e obviamente, que conterá o método Main( ) também. No decorrer 
deste livro seguiremos fielmente essa regra nos nossos exemplos. 
 
Palavras reservadas em C# 
abstract event new struct 
as explicit null switch 
base extern object this 
bool false operator throw 
break finally out true 
byte fixed override try 
case float params typeof 
catch for private uint 
char foreach protected ulong 
checked goto public unchecked 
class if readonly unsafe 
const implicit ref ushort 
continue in return using 
decimal int sbyte virtual 
default interface sealed volatile 
delegate internal short void 
do is sizeof while 
double lock stackalloc 
else long static 
enum namespace string 
 
 
Formatando a saída padrão 
A formatação da saída padrão é feita usando os chamados ―caracteres de escape‖ (veja a 
tabela abaixo). Vejamos um exemplo: 
// \t = TAB 
// \n = quebra de linha e retorno de carro (CR LF) 
Console.WriteLine( "var1: {0} \t var2: {1}\t var3: {2}\n", var1, var2, var3); 
 
Caracteres de Escape Significado 
\n Insere uma nova linha 
\t TAB 
\a Dispara o som de um alarme sonoro simples 
\b Apaga o caractere anterior da string que está sendo escrita no 
console(backspace) 
\r Insere um retorno de carro \0 Caractere NULL (nulo) 
 
 
 
 
 
 
Recebendo parâmetros na linha de comando 
 
 Para receber parâmetros na linha de comando, ou seja, na chamada de um programa quando 
digitamos o nome do executável no prompt da linha de comando do DOS (como ―ScanDisk /All 
/AutoFix‖, por exemplo), o método Main() precisa ser declarado da seguinte forma: 
 
 // não retorna nenhum valor ao sistema staticvoid Main(string[ ] args) ou, 
 // retorna um valor do tipo int ao sistema static int Main(string[ ] args) 
 
 O parâmetro args é um array de strings que recebe os parâmetros passados quando a 
aplicação é chamada na linha de comando. A seguir mostramos uma das formas da varrer os 
parâmetros recebidos: 
 
 - foreach (string cmd in args) { int i = 0; Console.WriteLine("Par {0}: {1}", i, cmd); i++; } 
 
 Para saber o número de argumentos que foram passados, usamos o método Length( ) do array 
args da seguinte forma: numArgs = args.Length( ); 
 
 Quando na linha de comando são recebidos parâmetros numéricos, estes devem ser 
convertidos de string para o tipo numérico respectivo usando a classe Convert. 
Exemplo: 
 Convert.ToInt32(varString) 
 
Variáveis 
 
O que e uma variável? 
 Podemos dizer que variável é um lugar que usamos para armazenar uma informação que pode 
sofrer alteração durante a execução de um programa. 
 As variáveis são usadas para guardar valores que serão usados durante o decorrer do 
programa, para guardar informações fornecidas pelo usuário e que será exibida mais tarde. Cada 
variável que usamos e identificada por um nome e por um tipo. 
 Você pode guardar informação de diversos tipos em uma variável: números pequenos, números 
médios, números grandes, letras, palavras, frases, páginas de texto, etc...; Então dizemos que uma 
variável tem um nome que a identifica e um tipo de dado que está armazenando. 
 Quando você guarda uma informação em uma variável está usando a memória do computador 
para isto, e, quanto maior a informação que você guardar mais memória você vai gastar dependendo 
do tipo de variável que decidir usar. 
 Se você precisar realizar cálculos que envolvam somente valores inteiros deverá procurar usar 
uma variável do tipo Int, você pode usar uma variável do tipo Long , Float e Double mas com isto irá 
gastar mais memória. 
 
Variáveis na Linguagem C# 
 
Na linguagem C# as variáveis estão agrupadas em algumas categorias como: 
Static: existe apenas uma única copia desta variável para todas as instâncias de uma classe. 
Uma variável static começa a existir quando um programa começa a executar, e deixa de existir 
quando o programa terminar. 
Instance: existe uma copia para cada instância de uma classe. Uma variável Instance começa a 
existir quando uma instância daquele tipo é criado, e deixa de existir quando não houver nenhuma 
referência aquela instância ou quando e método Finalize e executado. 
Array: é uma matriz que e criada em tempo de execução. 
 
 
 
 
 
 
 
 
Tipos de dados 
Como toda linguagem de programação o C# também apresenta seu grupo de tipos de dados 
básico. Esses tipos são conhecidos como tipos primitivos ou fundamentais por serem suportados 
diretamente pelo compilador, e serão utilizados durante a codificação na definição de variáveis, 
parâmetros, declarações e até mesmo em comparações. 
A Tabela 1 apresenta os tipos básicos da linguagem C# relacionados juntamente com os tipos 
de dados do .NET Em C#, todos eles possuem um correspondente na Common Language 
Runtime(CLR), por exemplo int, em C#, refere-se a System.Int32. 
 
 
 Tipos primitivos do C# 
 
Tipo C# Tipo .NET Descrição Faixa de dados 
bool System.Boolean Booleano true ou false 
byte System.Byte Inteiro de 8-bit com sinal -127 a 128 
char System.Char CaracterUnicode de 16-bit U+0000 a U+ffff 
decimal System.Decimal Inteiro de 96-bit com sinal 
com 28-29 digitos 
1,0 x 10−28 a 7,9 x 1028 
 Significativos 
double System.Double Flutuante IEEE 64-bit com +-5,0 x 10−324 a +-1,7 x 10324 
float System.Single Flutuante IEEE 32-bit com +-1,5 x 10−45 a +-3,4 x 1038 
int System.Int32 Inteiro de 32-bit com sinal -2.147.483.648a 2.147.483.647 
long System.Int64 Inteiro de 64-bit com sinal -9,223,372,036,854,775,808 a 
 9,223,372,036,854,775,807 
Object System.Object Classe base - 
Sbyte System.Sbyte Inteiro de 8-bit sem sinal 0 a 255 
Short System.Int16 Inteiro de 16-bit com sinal -32,768 a 32,767 
String System.String String de caracteres 
Unicode 
- 
Uint System.UInt32 Inteiro de 32-bit sem sinal 0 a 4,294,967,295 
Ulong System.UInt64 Inteiro de 64-bit sem sinal 0 a 18,446,744,073,709,551,615 
Ushort System.UInt16 Inteiro de 16-bit sem sinal 0 a 65,535 
 
Tipos Valor e Tipos Referência 
 
Os tipos de dados no C# são divididos em 3 categorias: 
 Tipos valor(value types); 
 Tipos referência(reference types); 
 Tipos ponteiro(pointer types). 
 Tipos valor armazenam dados em memória enquanto tipos referência armazenam uma 
referência, ou o endereço, para o valor atual. 
 
 Quando utilizamos uma variável do tipo referência não estaremos acessando seu valor 
diretamente, mas sim um endereço referente ao seu valor, ao contrário do tipo valor que permite o 
acesso diretamente a seu conteúdo. 
 Os tipos ponteiro, apenas apontam para um endereço de memória. 
 
 
 
 
 
 
 
Exercícios 
1. Observe os identificadores abaixo, assinale os que seriam permitidos e ao lado justifique todas as 
respostas. 
( ) NOME COMPLETO ................................................................. 
( ) EMPRESA ................................................................. 
( ) 1º NOME ................................................................. 
( ) DIA/MÊS/ANO ................................................................. 
2. Em um programa de computador, qual a função de uma variável? 
3. Observe os dados abaixo e diga o tipo de cada um. 
―Lógica de Programação‖ _________________________________ 
23 ____________________________________ 
1.77 ____________________________________ 
01/01/01 ____________________________________ 
4. Falando de variáveis, defina atribuição e que símbolo é utilizado para atribuir em VB? 
5. Complete as declarações de variáveis abaixo: 
____________ altura as ____________ 
_____________ nome as ______________ 
6. Faça a declaração em VB, de três variáveis do tipo inteiro, duas variáveis do tipo decimal, duas 
variáveis de um único caractere, duas variáveis do tipo lógico e uma do tipo data: 
________________________________________________________________________ 
________________________________________________________________________ 
________________________________________________________________________ 
________________________________________________________________________ 
________________________________________________________________________ 
 
 
Conversão de Tipos 
 
 Converter um tipo de dado em número ou em literal é comum em situações de programação. 
Devemos considerar alguns aspectos para a conversão de n´úmeros: 
 Como existem diversos tipos de n´úmeros, inteiros, ponto flutuante ou decimal, os valores são 
convertidos sempre para o tipo de maior faixa de valores. Por exemplo, o tipo long é convertido para o 
ponto flutuante, mais é importante ressaltar que o contrario causa um erro. 
 Os tipos de menor faixa são convertidos para os de maior faixa. Por exemplo, o tipo int pode ser 
convertido para: long, float, double ou decimal. 
 A conversão dos tipos de ponto flutuante(float, double) para decimal causa erro. 
 A conversão entre os tipos com sinal e sem sinal de valores inteiros com o mesmo tamanho 
causa erro. Por exemplo, entre o tipo int e unit. 
 
 Por exemplo: 
 
Exemplo de conversão automática de tipos 
 
 int VarInteiro = 32450; 
 long VarLong = VarInteiro; 
 float VarFloat = VarLong; 
 double VarDouble = VarFloat; 
 decimal VarDecimal = VarLong; 
 byte VarByte = (byte)VarInteiro; 
 int VarInteiro = (int)31.245F; 
 
 
 
 
 
 
 
 
Tipos de conversão automática 
Tipo Converte em 
sbyte short, int, long, float, double, decimal 
Byte short, ushort, int, uint, long, ulong, float, double, decimal 
short int, long, float, double, decimal 
ushort int, uint, long, ulong, float, double, decimal 
Int long, float, double, decimal 
Uint long, ulong, float,double, decimal 
Long float, double, decimal 
ulong long, double, decimal 
Char ushort, int, uint, long, ulong, float, double, decimal 
Float Double 
 
 
O Objeto Convert 
 
 Em C# temos o objeto Convert que é usado para converter um tipo de dado em outro. Os tipos 
de dados suportados são: Boolean, Char, SByte, Byte, Int16, Int32, Int64, UInt16, UInt32, UInt64, 
Single, Double, Decimal, DateTime e String. 
 
Por exemplo: 
 
Exemplo de utilização do objeto Convert 
double dNumber = 23.15; 
int iNumber = System.Convert.ToInt32(dNumber); 
bool bNumber = System.Convert.ToBoolean(dNumber); 
String strNumber = System.Convert.ToString(dNumber); 
char chrNumber = System.Convert.ToChar(strNumber[0]); 
 
Programa exemplo: 
 
using System; 
namespace Tarefa 
{ 
 class programa 
 { 
 static void Main(string[] args) 
 { 
 string nome; 
 int idade; 
 double salario; 
 
 Console.Write ("Qual o seu nome?"); 
 nome = Console.ReadLine(); // a função ReadLine retorna uma string, por isso 
 não há necessidade de conversão de dados 
 Console.Write("Qual a sua idade?"); 
 idade = Convert.ToInt16 (Console.ReadLine()); // a classe Convert possui 
 diversos métodos de conversão de dados. o método 
 ToInt16 converterá o conteúdo retornado em int 
 Console.Write("Quanto você ganha?"); 
 salario = Convert.ToDouble (Console.ReadLine()); // ToDouble converterá para 
 double 
 
 Console.WriteLine("Nome.....:{0}", nome); 
 
 
 
 
 Console.WriteLine("Idade....:{0}", idade); 
 Console.WriteLine("Salário..:{0}\n", salario); 
 // o {0} representa a variável nome, {1} representa a variável idade e assim 
 sucessivamente 
 Console.WriteLine("Bom dia {0}, você tem {1} anos de idade e ganha {2} por 
 mês", nome, idade, salario); 
 Console.ReadKey(); 
 } 
 } 
} 
 
 
 
Operadores 
 
 C# é uma linguagem muito rica em operadores. Estes representados por símbolos são 
utilizados na construção de expressões. A sintaxe de expressão do C# é baseada na sintaxe do C++. 
Os operadores são categorizados em diversas funcionalidades. A tabela 3 apresenta essas divisões. 
 Quando uma expressão possui múltiplas operações, a precedência dos operadores é levada em 
consideração na avaliação da mesma. Normalmente, as expressões são avaliadas da esquerda para 
direita, exceto para operações de atribuição e condicional, porém a precedência pode ser alterada 
através do uso do parênteses. 
 
 Operadores do C# 
 
Categoria Operadores 
Aritmética & + - * / % 
Lógica (boolena e bitwise) ! && || true false 
Concatenação de string + 
Incremento e decremento ++ – 
Shift << >> 
Relacional == != <> <= >= 
Atribuição = += -= *= /= %= &= —= =ˆ <<= >>= 
Acesso a membro . 
Indexação [] 
Indexação () 
Condicional ?: 
Delegate (concatenação e remoção) + - 
Delegate (concatenação e remoção) new 
Informação de tipo is sizeof typeof 
Controle de exceção de overflow checked unchecked 
Indireção e endereço * -¿ [] & 
 
 
 
 
 
 
 
 
 
 
 
 
Operadores Aritméticos 
 
 Os operadores aritméticos são utilizados na maioria das expressões para execução de cálculos. 
Numa expressão, eles podem produzir resultados fora da faixa de valores. Neste caso, uma exceção 
como OverflowException é gerada. 
 Os operadores unários (atribuídos a 1 atributo) + e - são utilizados para representar se o 
número é positivo ou negativo, respectivamente. 
Exemplos: 
 x = +1000 // x = 1000 
 x = -1000 // x = -1000 
 
 Os operadores binários +, -, *, / e % são utilizados nas expressões para execução decálculos 
tais como soma, subtração, multiplicação, divisão e sobra. O operador binário + quando utilizado entre 
strings representam concatenação. No entanto, quando existem strings e números na expressão e 
nenhuma operação de cast for executada a operação é tratado como concatenação. O operador binário 
% é computado através da fórmula dividendo - ( dividendo / divisor ) * divisor. 
Exemplos: 
 string x = "Hello" + "World" // x = "HelloWorld" 
 string x = "Valor = " + 100 // x = "Valor = 100" 
 int x = 1000 % 11 // x = 10 
 
 O código abaixo utiliza os operadores aritméticos. Note a utilização e recebimento de 
argumentos através da linha de comando. O entry-point Main permite ser passado um vetor de strings 
como parâmetro. O método Length conta o número de parâmetros passado, ignorando o executável. 
Como todo vetor o primeiro parâmetro é representado pelo índice zero, por exemplo args[0]. A variável 
args não é uma palavra-chave, portanto, esta pode ser alterada: 
 
using System; 
namespace Tarefa 
{ 
 class programa 
 { 
 public static void Main(string[] args) 
 { 
 if(args.Length == 3) //Verifica o número de argumentos entrados 
 { 
 int x=0,y=0; 
 try 
 { 
 //Convertem os valores dos argumentos 2 e 3 para inteiro 32-bit 
 //Se ocorrer algum erro o modo de utilização 
 x = args[1].ToInt32(); 
 y = args[2].ToInt32(); 
 } 
 catch 
 { 
 usage(); 
 return; 
 } 
 //Efetua a operação selecionada no primeiro argumento 
 switch(args[0]) 
 { 
 case " + " : 
 Console.Write("Valor da soma={0}",x+y); 
 break; 
 
 
 
 
 case " - " : 
 Console.Write("Valor da subtração={0}",x-y); 
 break; 
 case " / " : 
 Console.Write("Valor da divisão={0}",x/y); 
 break; 
 case " * " : 
 Console.Write("Valor da multiplicação={0}",x*y); 
 break; 
 case " % " : 
 Console.Write("Valor do resto={0}",x%y); 
 break; 
 default: 
 usage(); 
 } 
 Else 
 { 
 usage(); 
 } 
 } 
 public static void usage() 
 { 
 //Modo de utilização 
 Console.WriteLine("Modo de usar : Arithmetics operador valor1 valor2 " ); 
 Console.WriteLine("Ex.: Arithmetics + 1 0 0 2 0 0 " ); 
 } 
 } 
} 
 
 
 
Operadores de Incremento e Decremento 
 
 Os operadores ++ e – aumentam ou diminuem por um o valor correspondente. O ponto chave é 
que se o operador for utilizado `a esquerda da variável, ou seja prefixado, o valor é adicionado ou 
subtraído de um antes de sua utilização. 
Exemplos: 
 int x = 1000; // x = 1000 
 x++; // x = 1001 
 int y = x++; // x = 1002 , y = 1001 
 x--; // x = 1001 
 y = --x; // x = 1000 , y = 1000 
 ++x; // x = 1001 
 --x; // x = 1000 
 y = ++x; // x = 1001 , y = 1001 
 
 
Operadores Relacional, Lógico e Condicional 
 
 Esses operadores são utilizados em expressões onde o resultado retornado ou a característica 
é booleana. 
 
 
 
 
 
 
 
 
Operadores Relacionais 
 
 Estes operadores serão utilizados em comparações entre variáveis ou expressões. O resultado 
desta comparação sempre será verdadeiro ou falso. 
 
 Operador Descrição 
 == igual 
 > maior 
 < menor 
 >= maior ou igual 
 <= menor ou igual 
 != diferente 
 
Exemplos: 
 
 Expressão Resultado 
 1 = 2 Falso 
 5 > 2 Verdadeiro 
 11‟ < „4‟ Verdadeiro 
 4 >= 5 Falso 
 3 <= 3 Verdadeiro 
 2 + 3 <> 5 Falso 
 
 Os operadores relacionais ==, !=, ¡, ¿, ¡=, ¿=, resultam em um valor booleano e representam 
igual, não igual ou diferente, menor, maior, menor ou igual e maior ou igual, respectivamente. 
 Por exemplo, a == b quer dizer se a for igual a b, isto é totalmente válido na expressão com 
tipos primitivos(value types), tais como int, long, char, entre outros. Porém o comportamento dos 
operadores == e != são diferenciados quando utilizado entre structs (value types) e classes (reference 
types). Para structs a comparação deve levar em consideração todos os campos da estrutura. Para 
classes a comparação é efetuada pelo endereço, ou referência, da classe. O único reference type que 
compara o valor e não a referência é a string ou a classe System.String, pois os operadores == e != são 
sobrecarregados. A sobrecarga pode alterar o comportamento padrão dos operadores.Operadores Lógicos 
 Os operadores lógicos servem para combinar resultados de expressões, retornando se o 
resultado final é verdadeiro ou falso. Os operadores lógicos são: 
and && O resultado final só será verdadeiro se ambas as partes forem verdadeiras. 
 or || O resultado final será verdadeiro se pelo menos uma das partes for verdadeira. 
 
Exemplo: 
 
 Expressão Resultado 
(1 > 2) && (3 > 2) Falso 
 (1 > 2) || (3 > 2) Verdadeiro 
 ! (1 > 2) Verdadeiro 
 
O operador de negação ! retorna o complemento de um valor booleano. 
 
Exemplos: 
bool x = true; 
bool y = !x // y = false; 
if(!y) System.Console.Write( " y é v e r d a d e i r o " ); 
 
 
 
 
 
 
Prioridade 
 
Em uma expressão, a ordem de avaliação dos operadores segue a tabela abaixo: 
 
 Prioridade Operadores 
1º Aritméticos ou matemáticos 
2º Relacionais 
3º Lógicos 
 
Operador de Atribuição 
 
 Estes operadores, divididos entre simples e compostos, são utilizados na designação de um 
valor para uma variável. O operador = representa a atribuição simples, ou seja uma variável do lado 
esquerdo recebe o conteúdo de um valor, de uma variável ou do resultado de uma expressão do lado 
direito. 
 
Exemplo: 
 int x = 10 
 int y = x 
 int z = x + y; 
 
 Os operadores +=, -=, *=, /=, %=, &=, —=, =,ˆ ¡¡= e ¿¿= representam a atribuição composta, que 
normalmente atuam como um atalho na construção de uma expressão. 
 
Exemplo: 
 x = x + 10; // Pode ser escrito como : 
 x += 10; // x <op >= < valor > 
 
 
 
Exemplo: 
 
using System; 
namespace Tarefa 
{ 
 class programa 
 { 
 static void Main(string[ ] args) 
 { 
 string usuario, senha; 
 Console.Write("Usuário:"); 
 usuario = Console.ReadLine(); 
 Console.Write("Senha..:"); 
 senha = Console.ReadLine(); 
 if (usuario == "admin" && senha == "123") 
 { 
 Console.WriteLine("Seja bem vindo usuário {0}", usuario); 
 } 
 Console.ReadKey(); 
 } 
 } 
} 
 
 
 
 
 
 
 
 
Atribuição 
 
Depois de declarar uma variável, a primeira coisa que você quase sempre precisa fazer 
é armazenar informações na variável. Esse é o trabalho da instrução de atribuição. 
Esta instrução é bastante simples; você especifica uma variável cujo valor deseja 
definir, coloca um sinal de igualdade após o nome da variável e depois insere à direita o valor 
que deseja armazenar. Por exemplo, a linha de código a seguir é o tipo mais básico de 
instrução de atribuição: 
 
NUMERO = 10 
 
A instrução de atribuição informa ao C# para armazenar o valor inteiro 10 no espaço de 
memória representado pela variável NUMERO. É claro que você não está limitado a atribuir 
números inteiros. 
A expressão que segue o sinal de igualdade pode ser um valor literal, uma expressão 
ou equação que utilize alguma combinação de outras variáveis e constantes, ou mesmo uma 
função que retorne um valor. 
Não há limite para a complexidade da expressão que você pode empregar. A única 
restrição é que a expressão deve gerar um valor do mesmo tipo da variável a qual ela é 
atribuída. 
 
 
Exercícios: 
 
1. Quais são os três grupos de operadores? 
____________________________________ 
____________________________________ 
 
 
2. Defina a ordem de prioridade existente entre os operadores. 
____________________________________ 
____________________________________ 
____________________________________ 
 
3. Resolva as expressões abaixo: 
2 + 7 
30.5 - 3 
4 * 2 
25 / 2 
25 \ 2 
25 mod 2 
4 ^ 2 
1 >= 1 
9 <= 3 
10 > 1 
11 < 16 
not ((1 >= 1) and (9 <= 3) or (10 > 1) and (11 < 16)) 
((8 \ 3) <> 4) xor ((10 mod 3) = 1) 
 
 
 
 
 
 
 
 
4. Indique o resultado das expressões abaixo: 
Sendo: 
X = 6.0 Y = 2 Z = 4.0 
A = 8 B = 7.5 C = 7.7 
D = 12 P = 4 Q = 3 
R = 10 S = 2.5 
x + y – z * a 
(( z / a) + b * a) – d 
d / y 
d mod y 
p * (r mod q) – q / 2 
 
 
ESTRUTURAS DE CONTROLE 
 
Estrutura sequencial 
 A estrutura sequencial, como diz o próprio nome, é uma sequência de instruções que se 
sucedem uma após outra sem desvios ou interrupções. Este tipo de estrutura não possui palavras 
chaves, é composta somente por linhas de comandos sucessivas. 
 
Estrutura condicional 
 Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado 
da avaliação de uma ou mais condições. Uma condição é uma expressão lógica. 
A classificação das estruturas de decisão é feita de acordo com o número de condições que devem ser 
testadas para que se decida qual o caminho a ser seguido. Segundo esta classificação tem-se quatro 
tipos de estruturas de decisão (simples, composta, encadeada e múltipla). 
 
Estrutura repetitiva 
 São muito comuns as situações em que se deseja repetir um determinado trecho de um 
programa certo número de vezes. Por exemplo, pode-se citar o caso de um algoritmo/programa que 
calcula a soma dos números ímpares entre 500 e 1000 ou então um algoritmo/programa que escreve 
os números maiores que zero enquanto a sua soma não ultrapasse 1000. 
As estruturas de repetição são muitas vezes chamadas de laços ou também de loops. 
A classificação das estruturas repetitivas é feito de acordo com o conhecimento prévio do número de 
vezes que o conjunto de comandos será executado. Assim os laços se dividem em: 
 Estrutura repetitiva com contador 
 Estrutura repetitiva com condição no início 
 Estrutura repetitiva com condição no final 
Indentação/Identação/Endentação 
 Em ciência da computação, indentação (recuo, neologismo derivado da palavra em inglês 
indentation, também encontram-se as formas identação e endentação) é um termo aplicado ao código 
fonte de um programa para indicar que os elementos hierarquicamente dispostos têm o mesmo avanço 
relativamente à posição (x,0). 
 Na maioria das linguagens de programação a endentação (por exemplo VB) tem um papel 
meramente estético, tornando a leitura do código fonte muito mais fácil (read-friendly), porém é 
obrigatória em outras. Python, Occam e Haskell, por exemplo, utilizam-se desse recurso tornando 
desnecessário o uso de certos identificadores de blocos ("begin" e/ou "end"). 
 A verdadeira valia deste processo é visível em arquivos de código fonte extensos, não se 
fazendo sentir tanto a sua necessidade em arquivos pequenos (relativamente ao número de linhas). 
Para qualquer programador, deve ser um critério a ter em conta, principalmente, por aqueles que 
pretendam partilhar o seu código com outros. A indentação facilita também a modificação, seja para 
correção ou aprimoramento, do código fonte. 
 
 
 
 
 
Indentação em linguagens de programação 
Em palavras simples, indentação é a organização do código fonte em blocos. Assim pode-se identificar 
melhor o que em cada bloco está contido. Auxilia muito na busca de erros ou implementações. 
 
Exemplo de um programa com indentação: 
using System; 
namespace Tarefa 
{ 
 class programa 
 { 
 static void Main(string[] args) 
 { 
 int num; 
 Console.Write("Informe um nº:"); 
 num = Convert.ToInt16(Console.ReadLine()); 
 if (num % 2 == 0) 
 Console.WriteLine("{0} é PAR", num); 
 else 
 Console.WriteLine("{0} é IMPAR", num); 
 Console.ReadKey(); 
 } 
 } 
} 
 
Mesmo exemplo anterior, agora sem indentação: 
using System; 
namespace Tarefa 
{ 
class programa 
{ 
static void Main(string[] args) 
{ 
int num; 
Console.Write("Informe um nº:"); 
num = Convert.ToInt16(Console.ReadLine()); 
if (num % 2 == 0) 
Console.WriteLine("{0} é PAR", num); 
else 
Console.WriteLine("{0} é IMPAR", num); 
Console.ReadKey(); 
} 
} 
} 
 
 
 
Comandos utilizados em C# 
 
Comando de Entrada de Dados 
 O comando de entrada de dados em C# permite que o usuário digite dados, possibilitando um 
diálogo com o computador. 
 O dado digitado é armazenado na posição de memória indicada no comando (variável). 
Nomedavariável = Console.ReadLine(); 
Exemplo: 
Nome = Console.ReadLine();

Outros materiais