Introdução a Lógica e Conceitos de Programação.ppt
O documento discute conceitos fundamentais de programação e computação, comparando hardware e software, explicando dispositivos de entrada e saída, processadores, memória, algoritmos e tipos de linguagens de programação.
Introdução a Lógica e Conceitos de Programação.ppt
1.
Algoritmo e Programação1
1 – Introdução a Lógica e Conceitos de
Programação
Prof. Brenno Pimenta da Costa
2.
Diferença entre Hardwaree Software
Hardware:
São os itens físicos e tangíveis do dispositivo, desde seu gabinete até as
peças que o compõe.
monitor
memória
placas de som
placa de vídeo
chips
processadores
etc.
4.
Software:
conjunto de componenteslógicos de um computador ou sistema de
processamento de dados; programa, rotina ou conjunto de instruções que
controlam o funcionamento de um computador; suporte lógico.
- Sistemas Operacionais
- Aplicativos de musicas
- Antivirus
- etc.
Os dispositivos deentrada são os que inserem informações em um
computador a partir de uma fonte externa.
Ex: teclado, mouse, microfone, scanner e telas sensíveis ao toque.
Os Dispositivo de saída são dispositivos que exibem dados e informações
processadas pelo computador, também chamados de unidades de saída.
Ex: Impressora; Monitor; Placa gráfica; Projetor de vídeo.
9.
Link com artigosobre funcionamento dos dispositivos de entrada e saída:
https://www.devmedia.com.br/como-funcionam-os-dispositivos-de-entrada-
e-saida/28275
Processadores (Concorrência, Paralelismo,Processos, Threads,
programação síncrona e assíncrona)
O que é um processo?
Um processo pode ser visto como um container de recursos utilizados por uma ou
mais tarefas. Processos são isolados entre si, não compartilham memória.
O que é uma thread?
Os processos podem ter uma série de threads associadas e as threads de um
processo são conhecidas como threads de usuário, por executarem no modo-
usuário e não no modo-kernel. Uma thread é uma “linha” de execução dentro de
um processo. Cada thread tem o seu próprio estado de processador e a sua
própria pilha, mas compartilha a memória atribuída ao processo com as outras
threads “irmãs” (filhas do mesmo processo).
12.
Concorrência e paralelismo
Écomum achar que concorrência e paralelismo são a mesma coisa, mas não
são.
Concorrência é sobre lidar com várias coisas ao mesmo tempo e paralelismo
é sobre fazer várias coisas ao mesmo tempo. Concorrência é um conceito mais
a nível de software e paralelismo mais a nível de hardware.
Paralelismo é sobre a execução paralela de tarefas, ou seja, mais de uma por
vez (de forma simultânea), a depender da quantidade de núcleos (cores) do
processador. Quanto mais núcleos, mais tarefas paralelas podem ser
executadas. É uma forma de distribuir processamento em mais de um núcleo.
Paralelismo implica concorrência, mas o contrário não é verdadeiro, pois é
possível ter concorrência sem paralelismo, é só pensar no caso de uso de uma
única thread gerenciando milhares de tarefas, pausando e resumindo-as, esse
é um modelo de concorrência sem paralelismo.
13.
Síncrono e assíncrono
Síncronoe assíncrono são modelos de programação que estão intimamente ligados
ao fluxo de execução, eles determinam como o código será escrito e como ele
rodará.
No modelo síncrono uma operação precisa ser finalizada para que outra tenha a
oportunidade de ser executada. É um modelo linear, previsível, onde a execução
acontece etapa por etapa e ele é base padrão da maior parte das linguagens de
programação.
Já no modelo assíncrono, uma operação não precisa esperar a outra ser finalizada,
ao contrário disso, elas alternam o controle da execução entre si. É um modelo não
previsível e que não garante a ordem da execução. É um modelo que favorece a
concorrência.
Memória
Alocação de Memóriaem ciência da computação, consiste no processo de
solicitar/utilizar memória durante o processo de execução de um programa de
computador. A alocação de memória no computador pode ser dividida em dois
grupos principais:
* Alocação Estática
* Alocação Dinâmica
16.
* Alocação Estática:os dados tem um tamanho fixo e estão organizados
sequencialmente na memória do computador. Um exemplo típico de alocação
estática são as variáveis globais e arrays. A alocação estática de memória tem
como principal ponto positivo a simplicidade com que pode ser realizada pelos
programadores, mantendo o algoritmo simples e de fácil organização das variáveis
utilizadas. No entanto, como principal ponto negativo, a alocação estática ocupa
uma porção fixa da memória, em casos em que essas variáveis não sejam
utilizadas após um certo ponto, a alocação estática consome desnecessariamente
esta porção reservada da memória, podendo levar o programa a fica muito pesado
desnecessariamente. Apesar disso, é importante ressaltar, que na maioria das
linguagens de programação, as variáveis criadas com alocação estática são
liberadas automaticamente após o fim de uma determinada função.
Em C, um exemplo de alocação estática é simplesmente a declaração de uma
variável:
int variável;
17.
Alocação Dinâmica: osdados não precisam ter um tamanho fixo, pois é possível
definir para cada dado quanto de memória que deseja-se usar. Sendo assim aloca-
se espaços de memória (blocos) que não precisam estar necessariamente
organizados de maneira sequencial, podendo estar distribuídos de forma dispersa
(não ordenada) na memória do computador. Na alocação dinâmica, é possível
alocar/desalocar blocos de memória, de acordo com a necessidade, reservando ou
liberando blocos de memória durante a execução de um programa. Para poder
“achar” os blocos que estão dispersos ou espalhados na memória usa-se as
variáveis do tipo Ponteiro (indicadores de endereços de memória). É importante
ressaltar que, na maioria das linguagens de programação, as variáveis criadas com
alocação dinâmica não são liberadas automaticamente após o fim de funções,
sendo necessário liberá-las manualmente.
Em C, um exemplo de alocação dinâmica é o seguinte:
int *ponteiro;
ponteiro = (int *) malloc(sizeof(int));
Conceitos de Algoritmo:
“Umalgoritmo é uma forma de organizar a sua lógica, a solução para o problema
que está solucionando. Normalmente, um algoritmo é uma sequência de passos,
em ordem e sem ambiguidade, que deve ser seguida para resolver um problema.”
“Um algoritmo nada mais é do que uma receita que mostra passo a passo os
procedimentos necessários para a resolução de uma tarefa. Ele não responde
a pergunta “o que fazer?”, mas sim “como fazer”. “
“Em matemática e ciência da computação, um algoritmo é uma sequência finita
de ações executáveis que visam obter uma solução para um determinado tipo
de problema. Segundo Dasgupta, Papadimitriou e Vazirani; "Algoritmos são
procedimentos precisos, não ambíguos, padronizados, eficientes e corretos."
21.
Conceitos de Programação:
Programaçãoé o processo de escrita, teste e manutenção de um programa de
computador. O programa é escrito em uma linguagem de programação, embora
seja possível, com alguma dificuldade, o escrever diretamente em linguagem de
máquina. Diferentes partes de um programa podem ser escritas em diferentes
linguagens.
Conceito de linguagem de programação:
Linguagem de Programação é uma linguagem escrita e formal que especifica um
conjunto de instruções e regras usadas para gerar programas (software). Um
software pode ser desenvolvido para rodar em um computador, dispositivo móvel
ou em qualquer equipamento que permita sua execução. Existem várias
linguagens e elas servem para muitos propósitos. Alguns óbvios, como criar um
software, outros menos, como controlar um carro ou uma torradeira.
22.
Algoritmo em formade fluxograma
para verificar se o aluno está
aprovado ou reprovado de acordo
com as notas (1 e 2) informadas
"Todo mundo deveriaaprender a programar um computador, porque isso ensina
você a pensar". A famosa frase de Steve Jobs sobre aprender programação, ficou
conhecida em 2013 pela campanha da Code.org, e resume bem por que aprender
a programar é tão importante para a sociedade e para o próprio desenvolvimento
das pessoas.
* Programação é a nova alfabetização
*Aprenda várias disciplinas ao mesmo tempo
*Desenvolve a habilidade de resolver problemas
*Não é só uma questão de máquinas, nem números, tem a ver com humanidade
*Trabalha a persistência e a capacidade de superação
*Todo mundo é capaz de aprender
Tipos de Linguagemde Programação
(Alto e Baixo nível)
Indo direto ao ponto, chamamos de linguagem de alto nível aquela cuja sintaxe é
voltada para o entendimento humano. Isso significa que esse tipo de linguagem é
muito mais intuitivo, amigável e mais fácil de aprender, principalmente para
iniciantes na área de programação.
Ao contrário das linguagens de alto nível, as de baixo nível são voltadas para o
entendimento da máquina. Por isso, elas têm uma sintaxe mais complexa e não
contam com comandos tão intuitivos.
29.
Vantagens e desvantagensdas linguagens de baixo nível
Sem dúvidas, a principal vantagem de uma linguagem de baixo nível é o tempo de
processamento mais rápido do que o de uma de alto nível. Além disso, a arquitetura
dos dispositivos é mais bem aproveitada com esse tipo de linguagem.
Em contrapartida, a pessoa que vai utilizar essa ferramenta de baixo nível pode
levar mais tempo para compreender e dominar a sintaxe. Sem contar que ainda
será necessário conhecer profundamente o hardware da máquina, o que exige mais
investimento em estudo e treinamento.
Ademais, visto que o código escrito é mais direcionado ao processador, a
portabilidade também é prejudicada, pois ele pode não rodar em processadores de
famílias diferentes.
30.
Linguagens de AltoNível
JavaScript.
Java;
Ruby;
Python;
C#;
Swift;
PHP.
etc...
Linguagem de Baixo Nível
Assembly