• Nenhum resultado encontrado

Definição de Lógica. Definição de Lógica de Programação

N/A
N/A
Protected

Academic year: 2021

Share "Definição de Lógica. Definição de Lógica de Programação"

Copied!
11
0
0

Texto

(1)

Definição de Lógica

O uso corriqueiro da palavra lógica está normalmente relacionado à coerência e à racionalidade. Frequentemente se associa lógica apenas à matemática, não se percebendo sua aplicabilidade e sua relação com as demais ciências.

Podemos relacionar a lógica com a correção do pensamento, pois uma de suas preocupações é determinar quais operações são válidas e quais não são, fazendo análises das formas e leis do pensamento. Com arte ou técnica, ela nos ensina a usar corretamente as leis do pensamento.

Poderíamos dizer também que a lógica é a "arte de bem pensar", que é a "ciência das formas do pensamento". Visto que a forma mais complexa do pensamento é o raciocínio, a lógica estuda a "correção do raciocínio". Podemos ainda dizer que a lógica tem em vista a "ordem da razão". Isso dá a entender que a nossa razão pode funcionar desordenadamente. Por isso, a lógica estuda e ensina a colocar "ordem no pensamento".

Definição de Lógica de Programação

Significa o uso correto das leis do pensamento, da "ordem da razão" e de processos de raciocínio e simbolização formais na programação de computadores, objetivando a racionalidade e o desenvolvimento de técnicas que cooperem para a produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar.

O raciocínio é algo abstrato, intangível. Os seres humanos têm capacidade de expressá-lo através da palavra falada ou escrita, que por sua vez se baseia em um determinado idioma, que segue uma série de padrões (gramática). Um mesmo raciocínio pode ser expresso em qualquer um dos inúmeros idiomas existentes, mas continuará representando o mesmo raciocínio, usando apenas outra convenção.

(2)

tempo, representar mais fielmente o raciocínio da lógica de programação, utilizamos os algoritmos.

Algoritmos

O objetivo principal do estudo da lógica de programação é a construção de algoritmos coerentes e válidos. 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, é necessário utilizar ordem, ou seja, "pensar com ordem", portanto precisamos utilizar lógica.

Apesar do nome pouco usual, algoritmos são comuns em nosso cotidiano, como, por exemplo, uma receita de bolo. Nela está descrita uma série de ingredientes necessários e uma sequencia de diversos passos (ações) que devem ser fielmente cumpridos para que se consiga fazer o alimento desejado, conforme se espera antes do início das atividades (objetivo bem definido).

Quando elaboramos um algoritmo, devemos especificar ações claras e precisas, que a partir de um estado inicial, após um período de tempo finito, produzam um estado final previsível e bem definido. Isso significa que o algoritmo fixa um padrão de comportamento a ser seguido, uma norma de execução a ser trilhada, com vistas a alcançar, como resultado final, a solução de um problema, garantindo que sempre que executado, sob as mesmas condições, produza o mesmo resultado.

Tipos de Dados

Tipo primitivo: São tipos de dados predefinidos pela

linguagem e correspondem a dados mais simples ou escalares. Os tipos primitivos utilizados por um computador são numéricos (inteiros ou reais), caracteres e lógicos.

Tipo de Dado Inteiro: São caracterizados como tipos

(3)

Tipo Inteiro Mínimo Máximo

int -32.768 32.767

long (int) -2.147.483.648 2.147.483.647

unsigned int 0 65.535

unsigned long (int) 0 4.292.967.295

Tipo de Dado Real: São caracterizados como tipos reais

os dados numéricos positivos, negativos e números fracionários e também inteiros. Em linguagem C, este tipo de dado pode ser referenciado por um dos seguintes identificadores:

Tipo Inteiro Mínimo Máximo

float 3.4 e-38 3.4 e+38

double 1.7 e-308 1.7 e+308

long double 3.4 e-4932 1.1 e+4932

Tipo de Dado Caractere: São caracterizados como tipo

caractere letras (a..z, A..Z), números (0..9) e símbolos especiais (! @ # $ % ^...) delimitados entre os símbolos de aspas simples (' '), para as sequencias (Strings) de letras, números e símbolos 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 Lógico: A Linguagem C não possui um tipo

de dado lógico ou booleano, ou seja, não existe valor lógico "Falso" ou "Verdadeiro" para um determinado tipo de dado, de forma predefinida. EM linguagem C qualquer valor igual a 0 (zero) é considerado um valor lógico do tipo falso, e qualquer valor diferente de zero, será considerado um valor lógico verdadeiro.

Uso de Variáveis e Constantes

Constante: Uma constante é qualquer dado que não sofre

alteração ou variação durante a execução de um programa, ou seja, seu valor é constante do início até o fim da execução.

Variável: Uma variável representa a unidade básica de

(4)

O objetivo de uma variável é armazenar um dado de determinado tipo primitivo, podendo ser alterado durante a execução do programa.

Exemplo:

int notaAluno = 8

Operadores e Expressões Matemáticas Computacionais

Operadores Matemáticos: são utilizados para a

realização de operações matemáticas com operandos de tipos numéricos, do mesmo modo como são aplicados na álgebra.

Operação Função

+ Adição

- Subtração

* Multiplicação

/ Divisão

% Módulo (resto da divisão)

Geralmente o operador de módulo (%) é menos conhecido do que os operadores de multiplicação e divisão. Este operador retorna o resto de uma divisão.

Exemplo:

10 |3 1 3

Em linguagem C, a sintaxe é a seguinte: int a;

a = 10 % 3;

Comandos de Leitura e Escrita

(5)

Entrada de dados: Para que o programa possa receber

dados de que necessita, iremos utilizar a função scanf(), cuja finalidade é efetuar entrada de dados via teclado. A sintaxe desta função se caracteriza por ser uma expressão de controle seguida de uma lista de argumentos separados por vírgula, sendo que seus argumentos são endereços de variáveis.

scanf("expressão de controle", "lista de args");

A expressão de controle se caracteriza por conter códigos de formatação para o tipo de dado a ser processado, precedidos pelo sinal de percentagem %. Veja a seguir, a tabela com os códigos de formatação para a função scanf().

Formatação Descrição

%c Leitura de apenas um caractere

%d Leitura de números inteiros

%e Leitura de números em notação científica

%f Leitura de números reais (ponto flutuante)

%ld Leitura de números inteiros longos

%lf Leitura de números reais longos (double)

%o Leitura de números octais

%s Leitura de um conjunto de caracteres (String)

%u Leitura de números decimais sem sinal

%x Leitura de números hexadecimais

A lista de argumentos é a indicação dos endereços das variáveis em uso, por meio do operador de endereço &, que possibilita retornar o conteúdo da variável. Caso não seja usado o operador de endereço &, será retornado o endereço de memória em que se encontra a variável.

Exemplo:

#include <stdio.h>

int main(int argc, char *argv[]) {

int a;

float b;

char string[64];

printf("Digite um número inteiro: "); scanf("%d", &a);

printf("Digite um número em ponto flutuante: "); scanf("%f", &b);

printf("Digite uma frase: "); scanf("%s", &string);

(6)

Saída de dados: Para que o programa possa mostrar os

dados que processou, como resposta ao problema que resolveu, usaremos a função printf(), cuja finalidade é efetuar a saída de informações no vídeo. A sintaxe desta função é:

printf("expressão de controle", "lista de argumentos");

A expressão de controle se caracteriza por conter códigos de formatação para o tipo de dado a ser processado, precedido pelo sinal de percentagem %. Veja abaixo a tabela com os códigos de formatação para a função printf().

Formatação Descrição

%c Escrita de apenas um caractere

%d Escrita de números inteiros

%e Escrita de números em notação científica

%f Escrita de números reais (ponto flutuante)

%o Escrita de números octais

%s Escrita de um conjunto de caracteres (String)

%u Escrita de números decimais sem sinal

%x Escrita de números hexadecimais

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();

(7)

Operadores Relacionais

Os operadores relacionais possibilitam comparar valores ou expressões retornando sempre um resultado lógico true (verdadeiro) ou false (falso). Em linguagem C, um resultado lógico false será interpretado como 0 (zero). Já um resultado lógico true será interpretado como algo diferente de 0 (zero).

A tabela abaixo resume os operadores relacionais disponíveis na linguagem C. Operador Função == Igual a != Diferente de > Maior que < Menor que >= Maior ou igual a <= Menor ou igual a

O programa abaixo exemplifica a utilização destes operadores relacionais para tipos primitivos.

#include <stdio.h>

int main(int argc, char *argv[]){

int it1 = 10, it2 = 15, it3 = 10, it4 = 15; int b1, b2, b3, b4, b5, b6, b7, b8;

b1 = it1 == it2;

printf("it1 == it2 eh: %d\n", b1);

b2 = it1 == it3;

printf("it1 == it3 eh: %d\n", b2);

b3 = it1 != it2;

printf("it1 != it2 eh: %d\n", b3);

b4 = it1 != it3;

printf("it1 != it3 eh: %d\n", b4);

b5 = it2 > it4;

printf("it2 > it4 eh: %d\n", b5);

b6 = it2 >= it4;

printf("it2 >= it4 eh: %d\n", b6);

b7 = it3 < it4;

printf("it3 < it4 eh: %d\n", b7);

b8 = it2 <= it4;

printf("it2 <= it4 eh: %d\n", b8); getch();

(8)

Saída gerada pela execução do programa acima:

it1 == it2 eh: 0 it1 == it3 eh: 1 it1 != it2 eh: 1 it1 != it3 eh: 0 it2 > it4 eh: 0 it2 >= it4 eh: 1 it3 < it4 eh: 1 it2 <= it4 eh: 1

Operadores Lógicos

Utilizamos três operadores básicos para a formação de novas proposições lógicas compostas a partir de outras proposições lógicas simples. Os operadores lógicos estão descritos na tabela abaixo.

Operador Função

não Negação

e Conjunção

ou Disjunção

Tabela Verdade: É o conjunto de todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas, as quais se encontram em apenas duas situações (V ou F), e um conjunto de operadores lógicos.

Construiremos uma tabela verdade com o objetivo de dispor de uma maneira prática os valores lógicos envolvidos em uma expressão lógica.

(9)

Operação de Disjunção A B A ou B V V V V F V F V V F F F

Operadores Lógicos na Linguagem C

Os operadores lógicos são utilizados para construir expressões que retornam um resultado zero (false) ou diferente de zero (true).

A linguagem C fornece operadores lógicos que podem ser utilizados para formar condições mais complexas combinando condições simples.

A tabela abaixo resume os operadores lógicos disponíveis na linguagem C.

Operador Função

|| ou (or) lógico condicional

&& e (and) lógico condicional

! negação (not)

Operador Lógico condicional E (&&)

Para o operador && o operando da direita somente será avaliado se o operando da esquerda for avaliado como verdadeiro.

Operador Lógico condicional OU (||)

(10)

O programa C abaixo exemplifica a utilização dos operadores lógicos 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();

}

Abaixo temos a saída gerada pelo programa acima:

(a > 3) && (b < 8): 1

(a > 3) && (b < 8) || (c < 20): 1 (a > 3) || (b > 8) && (c < 20): 1 !(c > 5 || !(b > 10)): 0

Vamos analisar mais um exemplo da utilização dos operadores lógicos

#include <stdio.h> #include <conio.h> int op1(){

printf("Dentro de op1\n");

return 0; }

int op2(){

printf("Dentro de op2\n");

return 1; }

int main(int argc, char *argv[]){

printf("==== Testando o operador && =======\n\n"); if (op1() && op2())

printf("Ambos verdadeiros\n"); else

printf("Um dos operandos eh falso\n");

printf("\n\n==== Testando o operador || =======\n\n"); if (op1() || op2())

printf("Um dos operandos eh verdadeiro\n"); else

(11)

getch(); }

Comando de Atribuição

Referências

Documentos relacionados

A pesquisa pode ser caracterizada como exploratória e experimental em uma primeira etapa (estudo piloto), na qual foram geradas hipóteses e um conjunto de observáveis, variáveis

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Note on the occurrence of the crebeater seal, Lobodon carcinophagus (Hombron &amp; Jacquinot, 1842) (Mammalia: Pinnipedia), in Rio de Janeiro State, Brazil.. On May 12, 2003,

Compreendendo- se que o estudo dos eventos do século XX podem ser relevantes e esclarecedores para a compreensão da história e da sociedade de hoje, e levando-se em conta o

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

“O aumento da eficiência e o plano de produção fizeram com que a disponibilidade das células de fabricação aumentasse, diminuindo o impacto de problemas quando do

O TBC surge como uma das muitas alternativas pensadas para as populações locais, se constituindo como uma atividade econômica solidária que concatena a comunidade com os