Professional Documents
Culture Documents
O uso corriqueiro da palavra lgica est normalmente relacionado coerncia e racionalidade. Frequentemente se associa lgica apenas matemtica, no se percebendo sua aplicabilidade e sua relao com as demais cincias. Podemos relacionar a lgica com a correo do pensamento, pois uma de suas preocupaes determinar quais operaes so vlidas e quais no so, fazendo anlises das formas e leis do pensamento. Com arte ou tcnica, ela nos ensina a usar corretamente as leis do pensamento. Poderamos dizer tambm que a lgica a "arte de bem pensar", que a "cincia das formas do pensamento". Visto que a forma mais complexa do pensamento o raciocnio, a lgica estuda a "correo do raciocnio". Podemos ainda dizer que a lgica tem em vista a "ordem da razo". Isso d a entender que a nossa razo pode funcionar desordenadamente. Por isso, a lgica estuda e ensina a colocar "ordem no pensamento".
Algoritmos
O objetivo principal do estudo da lgica de programao a construo de algoritmos coerentes e vlidos. Mas o que um algoritmo? Um algoritmo pode ser definido como uma sequencia de passos que visam a atingir um objetivo bem definido. Na medida em que precisamos especificar uma sequencia de passos, necessrio utilizar ordem, ou seja, "pensar com ordem", portanto precisamos utilizar lgica. Apesar do nome pouco usual, algoritmos so comuns em nosso cotidiano, como, por exemplo, uma receita de bolo. Nela est descrita uma srie de ingredientes necessrios e uma sequencia de diversos passos (aes) que devem ser fielmente cumpridos para que se consiga fazer o alimento desejado, conforme se espera antes do incio das atividades (objetivo bem definido). Quando elaboramos um algoritmo, devemos especificar aes claras e precisas, que a partir de um estado inicial, aps um perodo de tempo finito, produzam um estado final previsvel e bem definido. Isso significa que o algoritmo fixa um padro de comportamento a ser seguido, uma norma de execuo a ser trilhada, com vistas a alcanar, como resultado final, a soluo de um problema, garantindo que sempre que executado, sob as mesmas condies, produza o mesmo resultado.
Tipos de Dados
Tipo primitivo: So tipos de dados predefinidos pela linguagem e correspondem a dados mais simples ou escalares. Os tipos primitivos utilizados por um computador so numricos (inteiros ou reais), caracteres e lgicos. Tipo de inteiros os excluindo-se tipo real). referenciado Dado Inteiro: So caracterizados como tipos dados numricos positivos ou negativos, destes qualquer nmero fracionrio (nmeros do Em linguagem C, este tipo de dado pode ser por um dos seguintes identificadores:
Tipo Inteiro int long (int) unsigned int unsigned long (int)
Tipo de Dado Real: So caracterizados como tipos reais os dados numricos positivos, negativos e nmeros fracionrios e tambm inteiros. Em linguagem C, este tipo de dado pode ser referenciado por um dos seguintes identificadores: Tipo Inteiro float double long double Mnimo 3.4 e-38 1.7 e-308 3.4 e-4932 Mximo 3.4 e+38 1.7 e+308 1.1 e+4932
Tipo de Dado Caractere: So caracterizados como tipo caractere letras (a..z, A..Z), nmeros (0..9) e smbolos especiais (! @ # $ % ^...) delimitados entre os smbolos de aspas simples (' '), para as sequencias (Strings) de letras, nmeros e smbolos especiais, utilizamos aspas duplas (" "). Este tipo de dado referenciado pelo identificador: char, podendo armazenar caracteres da tabela ASCII de 0 at 255. Tipo de Dado Lgico: A Linguagem C no possui um tipo de dado lgico ou booleano, ou seja, no existe valor lgico "Falso" ou "Verdadeiro" para um determinado tipo de dado, de forma predefinida. EM linguagem C qualquer valor igual a 0 (zero) considerado um valor lgico do tipo falso, e qualquer valor diferente de zero, ser considerado um valor lgico verdadeiro.
O objetivo de uma varivel armazenar um dado de determinado tipo primitivo, podendo ser alterado durante a execuo do programa. Exemplo: int notaAluno = 8 Valor
Tipo
Nome
Geralmente o operador de mdulo (%) menos conhecido do que os operadores de multiplicao e diviso. Este operador retorna o resto de uma diviso. Exemplo: 10 |3 1 3 Resto da Diviso Em linguagem C, a sintaxe a seguinte: int a; a = 10 % 3;
Entrada de dados: Para que o programa possa receber dados de que necessita, iremos utilizar a funo scanf(), cuja finalidade efetuar entrada de dados via teclado. A sintaxe desta funo se caracteriza por ser uma expresso de controle seguida de uma lista de argumentos separados por vrgula, sendo que seus argumentos so endereos de variveis. scanf("expresso de controle", "lista de args"); A expresso de controle se caracteriza por conter cdigos de formatao para o tipo de dado a ser processado, precedidos pelo sinal de percentagem %. Veja a seguir, a tabela com os cdigos de formatao para a funo scanf(). Formatao %c %d %e %f %ld %lf %o %s %u %x Descrio apenas um caractere nmeros inteiros nmeros em notao cientfica nmeros reais (ponto flutuante) nmeros inteiros longos nmeros reais longos (double) nmeros octais um conjunto de caracteres (String) nmeros decimais sem sinal nmeros hexadecimais
Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura
de de de de de de de de de de
A lista de argumentos a indicao dos endereos das variveis em uso, por meio do operador de endereo &, que possibilita retornar o contedo da varivel. Caso no seja usado o operador de endereo &, ser retornado o endereo de memria em que se encontra a varivel. Exemplo:
#include <stdio.h> int main(int argc, char *argv[]) { int a; float b; char string[64]; printf("Digite um nmero inteiro: "); scanf("%d", &a); printf("Digite um nmero em ponto flutuante: "); scanf("%f", &b); printf("Digite uma frase: "); scanf("%s", &string); getch(); }
Sada de dados: Para que o programa possa mostrar os dados que processou, como resposta ao problema que resolveu, usaremos a funo printf(), cuja finalidade efetuar a sada de informaes no vdeo. A sintaxe desta funo : printf("expresso de controle", "lista de argumentos"); A expresso de controle se caracteriza por conter cdigos de formatao para o tipo de dado a ser processado, precedido pelo sinal de percentagem %. Veja abaixo a tabela com os cdigos de formatao para a funo printf(). Formatao %c %d %e %f %o %s %u %x Exemplo:
#include <stdio.h> int main(int argc, char *argv[]) { int a; float b; char string[64]; printf("Digite um numero inteiro: "); scanf("%d", &a); printf("Digite um numero em ponto flutuante: "); scanf("%f", &b); printf("Digite uma frase: "); scanf("%s", &string); a = a + 10; b = b + 0.5; printf("A variavel a foi acrescida em 10: %d\n", a); printf("A variavel b foi acrescida em 0.5: %f\n", b); printf("A variavel string recebeu a frase: %s\n", string); getch(); }
de de de de de de de de
Descrio apenas um caractere nmeros inteiros nmeros em notao cientfica nmeros reais (ponto flutuante) nmeros octais um conjunto de caracteres (String) nmeros decimais sem sinal nmeros hexadecimais
Operadores Relacionais
Os operadores relacionais possibilitam comparar valores ou expresses retornando sempre um resultado lgico true (verdadeiro) ou false (falso). Em linguagem C, um resultado lgico false ser interpretado como 0 (zero). J um resultado lgico true ser interpretado como algo diferente de 0 (zero). A tabela abaixo resume disponveis na linguagem C. Operador == != > < >= <= os operadores Funo Igual a Diferente de Maior que Menor que Maior ou igual a Menor ou igual a destes relacionais
b6 = it2 >= it4; printf("it2 >= it4 eh: %d\n", b6); b7 = it3 < it4; printf("it3 < it4
b8 = it2 <= it4; printf("it2 <= it4 eh: %d\n", b8); getch(); }
Sada gerada pela execuo do programa acima: it1 it1 it1 it1 it2 it2 it3 it2 == it2 == it3 != it2 != it3 > it4 >= it4 < it4 <= it4 eh: eh: eh: eh: eh: eh: eh: eh: 0 1 1 0 0 1 1 1
Operadores Lgicos
Utilizamos trs operadores bsicos para a formao de novas proposies lgicas compostas a partir de outras proposies lgicas simples. Os operadores lgicos esto descritos na tabela abaixo. Operador no e ou Funo Negao Conjuno Disjuno
Tabela Verdade: o conjunto de todas as possibilidades combinatrias entre os valores de diversas variveis lgicas, as quais se encontram em apenas duas situaes (V ou F), e um conjunto de operadores lgicos. Construiremos uma tabela verdade com o objetivo de dispor de uma maneira prtica os valores lgicos envolvidos em uma expresso lgica. Operao de Negao A V F no A F V
Operao de Conjuno A V V F F B V F V F A e B V F F F
Operao de Disjuno A V V F F B V F V F A ou B V V V F
Operador Lgico condicional E (&&) Para o operador && o operando da direita somente avaliado se o operando da esquerda for avaliado verdadeiro. ser como
Operador Lgico condicional OU (||) Para o operador || o operando da direita somente ser avaliado se o operando da esquerda for avaliado como falso.
O programa C abaixo exemplifica a utilizao operadores lgicos condicionais para tipos primitivos.
#include <stdio.h> #include <conio.h> int main(int argc, char *argv[]) { int a = 5, b = 7, c = 10; int b1, b2, b3, b4; b1 = (a > 3) && (b < 8); printf("(a > 3) && (b < 8): %d\n", b1); b2 = (a > 3) && (b < 8) || (c < 20); printf("(a > 3) && (b < 8) || (c < 20): %d\n", b2); b3 = (a > 3) || (b > 8) && (c < 20); printf("(a > 3) || (b > 8) && (c < 20): %d\n", b3); b4 = !(c > 5 || !(b > 10)); printf("!(c > 5 || !(b > 10)): %d\n", b4); getch(); }
dos
Abaixo temos a sada gerada pelo programa acima: (a > 3) (a > 3) (a > 3) !(c > 5 && && || || (b < 8): 1 (b < 8) || (c < 20): 1 (b > 8) && (c < 20): 1 !(b > 10)): 0
10
getch(); }
Comando de Atribuio
Um comando de atribuio permite-nos fornecer um valor a uma varivel (guardar um valor em uma gaveta), em que o tipo do dado deve ser compatvel com o tipo da varivel, isto , somente podemos atribuir um valor inteiro a uma varivel capaz de comport-lo, ou seja, uma varivel declarada como sendo do tipo inteiro.
11